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

Kubernetes 1.25:CSI 內聯卷已正式發布 (GA)

CSI Inline Volumes 在 Kubernetes 1.15 中以 Alpha 功能推出,並自 1.16 版本以來為 Beta 階段。我們很高興宣布此功能已在 Kubernetes 1.25 中升級為正式發布 (GA) 狀態。

CSI Inline Volumes 類似於其他臨時卷類型,例如 configMapdownwardAPIsecret。重要的區別在於儲存由 CSI 驅動程式提供,這允許使用第三方供應商提供的臨時儲存。卷定義為 Pod 規格的一部分,並遵循 Pod 的生命週期,這表示卷在 Pod 排程後建立,並在 Pod 銷毀時銷毀。

1.25 版本的新功能?

1.25 版本中有一些與此功能相關的新錯誤修復,並且 CSIInlineVolume 功能閘道 已在升級至 GA 後鎖定為 True。沒有新的 API 變更,因此 Beta 階段此功能的使用者除了這些錯誤修復之外,不應注意到任何重大變更。

何時使用此功能

CSI inline volumes 適用於應遵循 Pod 生命週期的簡單本地卷。它們可能適用於從 CSI 驅動程式向 Pod 提供密鑰、組態資料或其他特殊用途儲存。

在下列情況下,CSI 驅動程式不適用於內聯使用

  • 卷需要比 Pod 的生命週期更長久的保存
  • 需要卷快照、克隆或卷擴展
  • CSI 驅動程式需要應限制為管理員的 volumeAttributes

如何使用此功能

為了使用此功能,CSIDriver 規格必須明確列出 Ephemeral 作為支援的 volumeLifecycleModes 之一。以下是來自 Secrets Store CSI Driver 的簡單範例。

apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata:
  name: secrets-store.csi.k8s.io
spec:
  podInfoOnMount: true
  attachRequired: false
  volumeLifecycleModes:
  - Ephemeral

然後任何 Pod 規格都可以參考該 CSI 驅動程式來建立內聯卷,如此範例所示。

kind: Pod
apiVersion: v1
metadata:
  name: my-csi-app-inline
spec:
  containers:
    - name: my-frontend
      image: busybox
      volumeMounts:
      - name: secrets-store-inline
        mountPath: "/mnt/secrets-store"
        readOnly: true
      command: [ "sleep", "1000000" ]
  volumes:
    - name: secrets-store-inline
      csi:
        driver: secrets-store.csi.k8s.io
        readOnly: true
        volumeAttributes:
          secretProviderClass: "my-provider"

如果驅動程式支援任何卷屬性,您也可以在 Pod 的 spec 中提供這些屬性

      csi:
        driver: block.csi.vendor.example
        volumeAttributes:
          foo: bar

範例使用案例

兩個現有的 CSI 驅動程式支援 Ephemeral 卷生命週期模式:Secrets Store CSI Driver 和 Cert-Manager CSI Driver。

Secrets Store CSI Driver 允許使用者將來自外部密鑰儲存庫的密鑰作為內聯卷掛載到 Pod 中。當密鑰儲存在外部託管服務或 Vault 實例中時,這會很有用。

Cert-Manager CSI Drivercert-manager 協同運作,以無縫請求憑證金鑰對並將其掛載到 Pod 中。這允許在應用程式 Pod 中自動續訂和更新憑證。

安全性考量

應特別考量哪些 CSI 驅動程式可以用作內聯卷。volumeAttributes 通常透過 StorageClass 控制,並且可能包含應限制為叢集管理員的屬性。允許 CSI 驅動程式用於內聯臨時卷表示任何具有建立 Pod 權限的使用者也可以透過 Pod 規格向驅動程式提供 volumeAttributes

叢集管理員可以選擇從 CSIDriver 規格中的 volumeLifecycleModes 中省略(或移除)Ephemeral,以防止驅動程式被用作內聯臨時卷,或使用准入 Webhook 來限制驅動程式的使用方式。

參考資料

如需有關此功能的更多資訊,請參閱