spec
一、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
绑定。PVC
的 storageClassName
必须与 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
: 清理数据并重新格式化(仅支持 NFS
和 HostPath
)。
Delete
: 删除底层存储资源。
8.3 语法
persistentVolumeReclaimPolicy: Retain