Kubernetes学习笔记(三十一):Volumes、Persistent Volumes、Storage Class
Volumes
!!!注意题目给的 mountPath 后面有没有 /,可能会判定为不同路径。
apiVersion: v1
kind: Pod
metadata:
name: random-number-generator
spec:
containers:
- image: alpine
name: alpine
command: ["/bin/sh","-c"]
args: ["shuf -i 0-100 -n 1 >> /opt/number.out;"]
volumeMounts:
- mountPath: /opt ## Container内的存储路径
name: data-volume
volumes:
- name: data-volume
hostPath:
path: /data ## 对应存储在host上的路径
type: Directory
## awsElasticBlockStore: ## 可替换hostPath
## volumeID:
## fsType: ext4
Persistent Volumes
Persistent Volumes Claim(PVC)
pv-definition.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-vol1
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
awsElasticBlockStore:
volumeID: <volume-id>
fsType: ext4
管理员创建一组PV,用户创建PVC以用于存储。单个PVC绑定单个PV。
可以使用label进行匹配,如果所有其他条件都匹配,并且没有更好的选项,则较小的PVC可能会绑定到较大的PV,且剩下的存储空间无法再被其他PVC利用。没有PV可用,则PVC会保持pending状态。
selector:
matchLabels:
name: my-pv ## PVC
labels:
name: my-pv ## PV
pvc-definition.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
PVC被删除后,PV的状态取决于:
persistentVolumeReclaimPolicy: Retain | Delete | Recycle
Storage Class
在应用程序需要时自动配置volumes
sc-definition.yaml 不需要再配置pv,由Storage Class自动创建
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: google-storage
provisioner: kubernetes.io/gec-pd
parameters: ## 取决于磁盘配置
type: pd-standard
replication-type: none
pvc-definition.yaml
spec:
storageClassName: google-storage

浙公网安备 33010602011771号