Kubernetes 1.29:用於 Volume 修改的 VolumeAttributesClass
Kubernetes v1.29 版本推出了一項 Alpha 功能,以支援透過變更為 PersistentVolumeClaim (PVC) 指定的 volumeAttributesClassName
來修改卷。啟用此功能後,Kubernetes 可以處理容量以外的卷屬性更新。允許變更卷屬性而無需直接透過不同供應商的 API 進行管理,簡化了目前的流程。
您可以在 Kubernetes 文件中閱讀 VolumeAttributesClass 的使用詳情,或者繼續閱讀以了解 Kubernetes 專案為何支援此功能。
VolumeAttributesClass
新的 storage.k8s.io/v1alpha1
API 群組提供兩種新類型
VolumeAttributesClass
代表 CSI 驅動程式定義的可變卷屬性規格。此類別可以在 PersistentVolumeClaims 的動態佈建期間指定,並在佈建後於 PersistentVolumeClaim 規格中變更。
ModifyVolumeStatus
代表 ControllerModifyVolume
操作的狀態物件。
啟用此 Alpha 功能後,PersistentVolumeClaim 的規格定義了 PVC 中使用的 VolumeAttributesClassName。在卷佈建時,CreateVolume
操作將套用 VolumeAttributesClass 中的參數以及 StorageClass 中的參數。
當 PVC 規格中的 volumeAttributesClassName 發生變更時,external-resizer sidecar 將收到一個 informer 事件。根據目前的組態狀態,resizer 將觸發 CSI ControllerModifyVolume。更多詳細資訊請參閱 KEP-3751。
如何使用
如果您想在功能處於 Alpha 階段時進行測試,您需要在 kube-controller-manager
和 kube-apiserver
中啟用相關的功能閘道。使用 --feature-gates
命令列引數。
--feature-gates="...,VolumeAttributesClass=true"
這也要求 CSI 驅動程式已實作 ModifyVolume API。
使用者流程
如果您想查看功能實際運作情況並驗證其在您的叢集中運作良好,您可以嘗試以下操作
定義 StorageClass 和 VolumeAttributesClass
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-sc-example provisioner: pd.csi.storage.gke.io parameters: type: "hyperdisk-balanced" volumeBindingMode: WaitForFirstConsumer
apiVersion: storage.k8s.io/v1alpha1 kind: VolumeAttributesClass metadata: name: silver driverName: pd.csi.storage.gke.io parameters: provisioned-iops: "3000" provisioned-throughput: "50"
定義並建立 PersistentVolumeClaim
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pv-claim spec: storageClassName: csi-sc-example volumeAttributesClassName: silver accessModes: - ReadWriteOnce resources: requests: storage: 64Gi
驗證 PersistentVolumeClaim 現在已使用以下項目正確佈建
kubectl get pvc
建立新的 VolumeAttributesClass gold
apiVersion: storage.k8s.io/v1alpha1 kind: VolumeAttributesClass metadata: name: gold driverName: pd.csi.storage.gke.io parameters: iops: "4000" throughput: "60"
使用新的 VolumeAttributesClass 更新 PVC 並套用
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pv-claim spec: storageClassName: csi-sc-example volumeAttributesClassName: gold accessModes: - ReadWriteOnce resources: requests: storage: 64Gi
驗證 PersistentVolumeClaims 是否具有使用以下項目更新的 VolumeAttributesClass 參數
kubectl describe pvc <PVC_NAME>
後續步驟
- 請參閱 VolumeAttributesClass KEP 以取得有關設計的更多資訊
- 您可以檢視或評論 VolumeAttributesClass 的 專案看板
- 為了將此功能推向 Beta 階段,我們需要社群的回饋,因此這裡有一個行動號召:為 CSI 驅動程式新增支援、試用此功能、考慮它如何幫助解決您的使用者遇到的問題…
參與其中
我們隨時歡迎新的貢獻者。因此,如果您想參與其中,您可以加入我們的 Kubernetes 儲存特別興趣小組 (SIG)。
如果您想分享回饋,您可以在我們的 公開 Slack 頻道 上進行。
特別感謝所有提供出色評論、分享寶貴見解並協助實作此功能的貢獻者(依字母順序排列)
- Baofa Fan (calory)
- Ben Swartzlander (bswartz)
- Connor Catlett (ConnorJC3)
- Hemant Kumar (gnufied)
- Jan Šafránek (jsafrane)
- Joe Betz (jpbetz)
- Jordan Liggitt (liggitt)
- Matthew Cary (mattcary)
- Michelle Au (msau42)
- Xing Yang (xing-yang)