天天看點

Kubernetes中将Delete類型的PV更新為Retain類型

回收政策

典型的StorageClass模闆如下所示,通過reclaimPolicy 字段定義生成PV的回收政策:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-efficiency
parameters:
  type: cloud_efficiency
provisioner: alicloud/disk
reclaimPolicy: Delete           

reclaimPolicy兩種常用取值:Delete、Retain;

Delete:表示删除PVC的時候,PV也會一起删除,同時也删除PV所指向的實際存儲空間;

Retain:表示删除PVC的時候,PV不會一起删除,而是變成Released狀态等待管理者手動清理;

這兩種配置各有優缺點:

Delete:

優點:實作資料卷的全生命周期管理,應用删除PVC會自動删除後端雲盤。能有效避免出現大量閑置雲盤沒有删除的情況。
缺點:删除PVC時候一起把後端雲盤一起删除,如果不小心誤删pvc,會出現後端資料丢失;
           

Retain:

優點:後端雲盤需要手動清理,是以出現誤删的可能性比較小;
缺點:沒有實作資料卷全生命周期管理,常常會造成pvc、pv删除後,後端雲盤閑置往清理,長此以往導緻大量磁盤浪費。
           

阿裡雲容器服務遵循了K8S官方建議,對雲盤資料卷StorageClass預設提供的是Delete配置,這樣最大程度避免出現大量閑置磁盤,且提供雲盤的全生命周期管理,但是需要您對PVC删除操作格外小心。

當然如果您不想使用Delete這種配置,可以自己定義StorageClass,使用Retain模式,例如:

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: alicloud-disk-ssd-retain
provisioner: alicloud/disk
parameters:
  type: cloud_ssd
reclaimPolicy: Retain           

更新PV模闆

通過上述Delete配置的StorageClass建立的PV如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  labels:
    failure-domain.beta.kubernetes.io/region: cn-zhangjiakou
    failure-domain.beta.kubernetes.io/zone: cn-zhangjiakou-a
  name: d-8vbidmq57w4df6k84zem
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 20Gi
  flexVolume:
    driver: alicloud/disk
    fsType: ext4
    options:
      VolumeId: d-8vbidmq57w4df6k84zem
  persistentVolumeReclaimPolicy: Delete
  storageClassName: alicloud-disk-efficiency           

如果您已經建立了上面的pv并且在使用中,現在希望将pv的回收政策變成Retain模式,可以直接修改PV參數值:

執行edit指令,直接修改persistentVolumeReclaimPolicy的值為Retain,然後:wq 儲存退出。
# kubectl edit pv d-8vbidmq57w4df6k84zem

...
  persistentVolumeReclaimPolicy: Retain
...             

此時删除PVC并不會把pv删除;

# kubectl get pv | grep d-8vbidmq57w4df6k84zem
d-8vbidmq57w4df6k84zem   20Gi       RWO            Retain           Released   default/datadir-zookeeper-default-zookeeper-2   alicloud-disk-efficiency            7h1m           

反之,将Retain類型的PV變成Delete類型也是一個方法。

繼續閱讀