本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 1.31:用於卷修改的 VolumeAttributesClass Beta
Kubernetes 中的卷一直由兩個屬性來描述:儲存類和容量。儲存類是卷不可變的屬性,而容量可以透過卷調整大小功能動態更改。
這使得對帶有卷的工作負載進行垂直擴充套件變得複雜。雖然雲提供商和儲存供應商通常提供的卷允許指定 IO 服務質量(效能)引數(如 IOPS 或吞吐量)並在工作負載執行時對其進行調整,但 Kubernetes 沒有 API 來更改這些引數。
我們很高興地宣佈,自 Kubernetes 1.29 版本以來處於 Alpha 階段的 VolumeAttributesClass KEP 將在 1.31 版本中進入 Beta 階段。這提供了一個通用的、Kubernetes 原生的 API,用於修改卷的引數,例如已配置的 IO。
與 Kubernetes 中所有新的卷功能一樣,此 API 是透過容器儲存介面(CSI)實現的。除了 VolumeAttributesClass 特性門控外,你特定於儲存供應器的 CSI 驅動程式必須支援新的 ModifyVolume API,這是此功能的 CSI 端。
請參閱完整文件瞭解所有細節。這裡我們展示了常見的工作流程。
動態修改卷屬性。
VolumeAttributesClass
是一種叢集範圍的資源,用於指定特定於儲存供應器的屬性。這些屬性由叢集管理員建立,方式與儲存類相同。例如,可以為具有不同配置 IO 量的卷建立一系列金、銀、銅卷屬性類。
apiVersion: storage.k8s.io/v1alpha1
kind: VolumeAttributesClass
metadata:
name: silver
driverName: your-csi-driver
parameters:
provisioned-iops: "500"
provisioned-throughput: "50MiB/s"
---
apiVersion: storage.k8s.io/v1alpha1
kind: VolumeAttributesClass
metadata:
name: gold
driverName: your-csi-driver
parameters:
provisioned-iops: "10000"
provisioned-throughput: "500MiB/s"
將屬性類新增到 PVC 的方式與儲存類非常相似。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pv-claim
spec:
storageClassName: any-storage-class
volumeAttributesClassName: silver
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Gi
與儲存類不同,卷屬性類可以更改。
kubectl patch pvc test-pv-claim -p '{"spec": "volumeAttributesClassName": "gold"}'
Kubernetes 將與 CSI 驅動程式協同更新卷的屬性。PVC 的狀態將跟蹤當前和期望的屬性類。PV 資源也將更新為新的卷屬性類,該類將被設定為 PV 當前活動的屬性。
Beta 版本的侷限性
作為一個 Beta 功能,仍有一些計劃在 GA 版本中實現但尚未完成的功能。最大的一個是配額支援,詳情請參閱 KEP 以及在 sig-storage 中的討論。
請參閱 Kubernetes CSI 驅動程式列表,獲取有關 CSI 驅動程式中此功能支援的最新資訊。