本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

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 驅動程式中此功能支援的最新資訊。