環境準備
集羣創建、依賴配置、CSI插件部署等請參考:CSI部署詳解
創建動態PV
通過下面模板創建動態卷PV:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: disk-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 25Gi
storageClassName: alicloud-disk-ssd
storage:定義申請雲盤大小,最小爲20Gi;
storageClassName:定義創建雲盤使用的存儲類,目前主要支持下面4類雲盤類型;
alicloud-disk-available:會通過efficiency、ssd、essd的順序依次嘗試創建雲盤;
alicloud-disk-essd:創建essd類型雲盤;
alicloud-disk-ssd:創建ssd類型雲盤;
alicloud-disk-efficiency:創建高效雲盤;
查看PVC、PV:默認生成的PV名字 = pvc + "-" + pvc-uid
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
disk-pvc Bound pvc-5e90da27-a458-11e9-8dec-00163e0a6ecc 25Gi RWO alicloud-disk-ssd 9s
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-5e90da27-a458-11e9-8dec-00163e0a6ecc 25Gi RWO Retain Bound default/disk-pvc alicloud-disk-ssd 8s
# kubectl describe pv pvc-5e90da27-a458-11e9-8dec-00163e0a6ecc
Name: pvc-5e90da27-a458-11e9-8dec-00163e0a6ecc
Labels: <none>
Annotations: pv.kubernetes.io/provisioned-by: diskplugin.csi.alibabacloud.com
Finalizers: [kubernetes.io/pv-protection]
StorageClass: alicloud-disk-ssd
Status: Bound
Claim: default/disk-pvc
Reclaim Policy: Retain
Access Modes: RWO
VolumeMode: Filesystem
Capacity: 25Gi
Node Affinity: <none>
Message:
Source:
Type: CSI (a Container Storage Interface (CSI) volume source)
Driver: diskplugin.csi.alibabacloud.com
VolumeHandle: d-bp190t0frv9044z60t79
ReadOnly: false
VolumeAttributes: storage.kubernetes.io/csiProvisionerIdentity=1562849418025-8081-diskplugin.csi.alibabacloud.com
type=cloud_ssd
Events: <none>
創建應用
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-disk
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
volumeMounts:
- name: disk-pvc
mountPath: "/data"
volumes:
- name: disk-pvc
persistentVolumeClaim:
claimName: disk-pvc
驗證掛載、高可用
查看pod,驗證雲盤掛載成功,創建測試文件;
# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-disk-6d5659d745-vl4c4 1/1 Running 0 24s
# kubectl exec nginx-disk-6d5659d745-vl4c4 ls /data
lost+found
# kubectl exec nginx-disk-6d5659d745-vl4c4 mount | grep /data
/dev/vdc on /data type ext4 (rw,relatime,data=ordered)
# kubectl exec nginx-disk-6d5659d745-vl4c4 touch /data/test
# kubectl exec nginx-disk-6d5659d745-vl4c4 ls /data
lost+found
test
刪除Pod,查看重建Pod是否數據穩定;
# kubectl delete pod nginx-disk-6d5659d745-vl4c4
pod "nginx-disk-6d5659d745-vl4c4" deleted
# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-disk-6d5659d745-nz2pv 1/1 Running 0 5s
# kubectl exec nginx-disk-6d5659d745-nz2pv ls /data
lost+found
test