diff --git a/src/DjangoBlog-master/deploy/k8s/pv.yaml b/src/DjangoBlog-master/deploy/k8s/pv.yaml index 874b72f..4e48545 100644 --- a/src/DjangoBlog-master/deploy/k8s/pv.yaml +++ b/src/DjangoBlog-master/deploy/k8s/pv.yaml @@ -1,40 +1,44 @@ -apiVersion: v1 -kind: PersistentVolume +# 第一部分:数据库(MySQL)专用持久卷配置 +apiVersion: v1 # PV 资源使用的 Kubernetes API 版本 +kind: PersistentVolume # 资源类型为持久卷(PV),用于提供集群级别的存储资源 metadata: - name: local-pv-db + name: local-pv-db # PV 的名称,需唯一,这里明确关联数据库(db) spec: - capacity: - storage: 10Gi - volumeMode: Filesystem - accessModes: - - ReadWriteOnce - persistentVolumeReclaimPolicy: Retain - storageClassName: local-storage - local: - path: /mnt/local-storage-db - nodeAffinity: - required: + capacity: # 定义 PV 的存储容量 + storage: 10Gi # 分配 10GiB 存储空间(数据库通常需要较大空间) + volumeMode: Filesystem # 卷模式:Filesystem 表示以文件系统形式挂载(另一种是 Block 块设备) + accessModes: # 访问模式:定义 PV 可被如何访问 + - ReadWriteOnce # 仅允许单个节点以读写方式挂载(适合数据库等需独占写入的场景) + persistentVolumeReclaimPolicy: Retain # 回收策略:Retain 表示 PV 被释放后保留数据,需手动清理 + storageClassName: local-storage # 存储类名称,用于与 PersistentVolumeClaim(PVC)匹配 + local: # 声明为本地存储(使用节点上的本地磁盘,非分布式存储) + path: /mnt/local-storage-db # 本地存储的实际路径(需在对应节点上提前创建该目录) + nodeAffinity: # 节点亲和性:限制 PV 只能被特定节点使用(本地存储必须配置) + required: # 强制要求:必须满足以下条件才能使用该 PV nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/hostname - operator: In + - matchExpressions: # 匹配规则 + - key: kubernetes.io/hostname # 匹配节点的主机名标签 + operator: In # 操作符:In 表示值在指定列表中 values: - - master ---- + - master # 仅允许主机名为 "master" 的节点使用该 PV + + +# 第二部分:Django 应用静态文件专用持久卷配置 +--- # 分隔符:用于在一个文件中定义多个资源 apiVersion: v1 kind: PersistentVolume metadata: - name: local-pv-djangoblog + name: local-pv-djangoblog # PV 名称,关联 Django 应用 spec: capacity: - storage: 5Gi + storage: 5Gi # 分配 5GiB 存储空间(静态文件需求较小) volumeMode: Filesystem accessModes: - - ReadWriteOnce + - ReadWriteOnce # 单节点读写(静态文件通常由单节点写入,多节点读取可考虑 ReadOnlyMany) persistentVolumeReclaimPolicy: Retain - storageClassName: local-storage + storageClassName: local-storage # 与前面的 PV 共用同一存储类 local: - path: /mnt/local-storage-djangoblog + path: /mnt/local-storage-djangoblog # Django 静态文件的本地存储路径 nodeAffinity: required: nodeSelectorTerms: @@ -42,24 +46,25 @@ spec: - key: kubernetes.io/hostname operator: In values: - - master + - master # 同样限制在 "master" 节点 +# 第三部分:资源文件专用持久卷配置 --- apiVersion: v1 kind: PersistentVolume metadata: - name: local-pv-resource + name: local-pv-resource # PV 名称,关联通用资源文件 spec: capacity: - storage: 5Gi + storage: 5Gi # 分配 5GiB 存储空间 volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: - path: /mnt/resource/ + path: /mnt/resource/ # 资源文件(如上传的图片、附件等)的本地存储路径 nodeAffinity: required: nodeSelectorTerms: @@ -67,23 +72,25 @@ spec: - key: kubernetes.io/hostname operator: In values: - - master + - master # 限制在 "master" 节点 + +# 第四部分:Elasticsearch 搜索引擎专用持久卷配置 --- apiVersion: v1 kind: PersistentVolume metadata: - name: local-pv-elasticsearch + name: local-pv-elasticsearch # PV 名称,关联 Elasticsearch spec: capacity: - storage: 5Gi + storage: 5Gi # 分配 5GiB 存储空间(用于存储 ES 索引数据) volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: - path: /mnt/local-storage-elasticsearch + path: /mnt/local-storage-elasticsearch # ES 数据的本地存储路径 nodeAffinity: required: nodeSelectorTerms: @@ -91,4 +98,4 @@ spec: - key: kubernetes.io/hostname operator: In values: - - master \ No newline at end of file + - master # 限制在 "master" 节点 \ No newline at end of file