阿里雲Kubernetes CSI實踐 - 動態雲盤卷

環境準備

集羣創建、依賴配置、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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章