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

Kubernetes 1.29:CSI 儲存大小調整在 v1.29 中經過身份驗證並正式可用

Kubernetes v1.29 版本為 CSI(容器儲存介面)儲存卷大小調整操作中的身份驗證提供了正式可用(GA)的支援。

讓我們回顧一下該功能的演進過程,它最初在 Kubernetes v1.25 中作為 Alpha 功能引入,並瞭解其過渡到 GA 之後帶來的變化。

帶身份驗證的 CSI 儲存卷大小調整功能揭曉

Kubernetes 利用 CSI 的能力與第三方儲存系統無縫整合,使你的叢集能夠無縫擴充套件由 CSI 驅動程式管理的儲存卷。最近,用於調整大小操作的身份驗證 Secret 支援從 Beta 提升到 GA,開啟了新的可能性,使得在底層儲存操作需要憑據進行後端叢集操作時(例如訪問 SAN/NAS 儲存網路)也能夠進行卷擴充套件。這一增強功能解決了 CSI 驅動程式的一個關鍵限制,允許在節點級別進行卷擴充套件,特別是在需要身份驗證才能調整大小的情況下。

挑戰不僅限於節點級別的擴充套件。在 Special Interest Group(SIG)Storage 內部,出現了一些用例,包括 CSI 驅動程式在啟動節點級檔案系統擴充套件操作之前,需要驗證後端塊儲存的實際大小。這種驗證可以防止在檔案系統擴充套件期間後端儲存叢集返回錯誤的“成功”資訊。此外,對於代表加密塊儲存(例如使用 LUKS)的 PersistentVolume,需要密碼來擴充套件裝置並增長檔案系統,這凸顯了帶身份驗證的大小調整的必要性。

Kubernetes v1.29 的新變化

隨著該功能進入 GA 階段,它預設保持啟用狀態。對節點級卷擴充套件 Secret 的支援已無縫整合到 CSI external-provisioner sidecar 控制器中。要使用此功能,請確保你的外部 CSI 儲存供應器 sidecar 控制器版本為 v3.3.0 或更高。

假設所有必需的元件(包括 CSI 驅動程式)都已在你的叢集上部署並執行,並且你有一個支援調整大小的 CSI 驅動程式,你可以在 CSI 捲上發起一個 `NodeExpand` 操作。CSI `NodeExpand` 操作的憑據可以方便地作為 Kubernetes Secret 提供,並透過 StorageClass 指定該 Secret。以下是一個包含憑據的 Secret 的示例清單:

---
apiVersion: v1
kind: Secret
metadata:
  name: test-secret
  namespace: default
data:
  stringData:
    username: admin
    password: t0p-Secret

這是一個引用這些憑據的 StorageClass 的示例清單:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-blockstorage-sc
parameters:
  csi.storage.k8s.io/node-expand-secret-name: test-secret
  csi.storage.k8s.io/node-expand-secret-namespace: default
provisioner: blockstorage.cloudprovider.example
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

成功建立 PersistentVolumeClaim (PVC) 後,你可以在 PersistentVolume 的 .spec.csi 欄位中驗證配置。要確認,請執行 `kubectl get persistentvolume <pv_name> -o yaml`。

參與到演進中來!

對於那些熱衷於貢獻或深入研究技術細節的人,增強提案包含了有關該功能歷史和實現的詳盡細節。透過參考 [Storage Class 文件] (https://kubernetes.club.tw/docs/concepts/storage/persistent-volumes/#class) 和總體的 PersistentVolumes 文件,探索 Kubernetes 中基於 StorageClass 的動態供應領域。

加入 Kubernetes Storage SIG(特別興趣小組),積極參與提升此功能。你的見解是寶貴的,我們熱切期待更多貢獻者加入,共同塑造 Kubernetes 儲存的未來!