跳到主要内容

spec

2024年11月13日
柏拉文
越努力,越幸运

一、spec.capacity


spec.capacity 定义存储卷的容量大小。

二、spec.capacity.storage


2.1 认识

spec.capacity.storage 定义存储卷的容量大小。以 storage 字段表示,常见单位包括:Gi, Mi, Ti 等。

2.2 语法

capacity:
storage: 10Gi

三、spec.accessModes


3.1 认识

spec.accessModes 描述 Pod 如何访问存储卷。

3.2 参数

ReadWriteOnce (RWO): 单个节点可读写。

ReadOnlyMany (ROX): 多个节点只读。

ReadWriteMany (RWX): 多个节点可读写。

3.3 语法

accessModes:
- ReadWriteOnce

四、spec.volumeMode


4.1 认识

spec.volumeMode 定义 PV 的访问方式(块存储或文件系统)。

4.2 参数

Filesystem(默认): 文件系统。

Block: 原始块设备。

4.3 语法

volumeMode: Filesystem

五、spec.nodeAffinity


5.1 认识

spec.nodeAffinity 限制存储卷只能在特定节点上使用。

5.2 语法

nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
- node2

六、spec.storageClassName


6.1 认识

spec.storageClassName 指定 PV 所属的存储类,用于 PVC 绑定。PVCstorageClassName 必须与 PV 匹配。

6.2 语法

storageClassName: fast-storage

七、spec.persistentVolumeSource


7.1 认识

spec.persistentVolumeSource 定义存储卷的类型及其配置参数。常见类型:

  • HostPath: 本地文件路径。

  • NFS: 网络文件系统。

  • AWS EBS: AWS 弹性块存储。

  • GCE PD: Google Cloud 持久磁盘。

  • iSCSI: 基于 iSCSI 协议的块存储。

  • Cinder: OpenStack 块存储。

  • CephFS: Ceph 文件系统。

  • CSI: 通用存储接口(现代方式)。

7.2 语法

NFS

nfs:
path: /data
server: nfs.example.com

HostPath

hostPath:
path: /mnt/data
type: Directory

CSI (通用存储接口)

csi:
driver: io.kubernetes.storage.mock
volumeHandle: mock-pv

AWS Elastic Block Store

awsElasticBlockStore:
volumeID: vol-0abcd1234efgh5678
fsType: ext4

Google Cloud Persistent Disk

gcePersistentDisk:
pdName: my-disk
fsType: ext4

八、spec.persistentVolumeReclaimPolicy


8.1 认识

spec.persistentVolumeReclaimPolicy 定义 PV 在释放后的处理方式。

8.2 参数

Retain: PV 保留,需手动清理。

Recycle: 清理数据并重新格式化(仅支持 NFSHostPath)。

Delete: 删除底层存储资源。

8.3 语法

persistentVolumeReclaimPolicy: Retain