在K8S中,CSI模型有哪些?

黄嘉波發表於2024-10-15

在Kubernetes(K8s)中,Container Storage Interface(CSI)模型是用來整合外部儲存系統的標準化方法。CSI模型的主要組成部分包括:

  1. CSI Driver(驅動程式)

    • CSI Driver 是由儲存提供商編寫的,它實現了 CSI 規範中定義的 API 介面。每個儲存提供商都需要為其產品提供一個或多個 CSI Drivers,以便與 Kubernetes 叢集進行互動。
    • CSI Driver 包括一個主外掛(Controller Service)和一個或多個節點外掛(Node Service)。
  2. Controller Service(控制器服務)

    • 控制器服務通常執行在一個或多個 Kubernetes 控制面節點上,負責執行與儲存系統互動的操作,如建立、刪除持久卷,以及執行快照等。
    • 控制器服務透過 gRPC 介面與 Kubernetes API 伺服器通訊。
  3. Node Service(節點服務)

    • 節點服務執行在每個 Kubernetes 工作節點上,負責執行與儲存系統相關的本地操作,如掛載和解除安裝卷。
    • 節點服務同樣透過 gRPC 介面與 Kubernetes 節點上的 kubelet 元件通訊。
  4. CSI 外掛註冊

    • 在 Kubernetes 中註冊 CSI 外掛涉及到將 CSI Driver 註冊到叢集中。通常,這涉及部署一個或多個 DaemonSet 或者 StatefulSet 來確保每個節點上都有必要的 CSI 元件執行。
    • 註冊過程也可能包括配置 RBAC 許可權,以確保 CSI 元件可以訪問必要的 Kubernetes API。
  5. Storage Class(儲存類)

    • 儲存類定義瞭如何為 PersistentVolumeClaims (PVC) 建立 PersistentVolumes (PV)。CSI Driver 可以透過儲存類來指定其 provisioner 名稱,從而讓 Kubernetes 知道如何使用特定的 CSI Driver 來動態配置儲存。
    • 儲存類還可以包含特定於儲存系統的引數,比如效能級別或者複製策略等。
  6. Pod 生命週期中的 CSI 卷管理

    • 在 Pod 的生命週期中,CSI 卷的管理涉及幾個步驟:
      • Provision/Delete(創盤/刪盤):根據 PVC 請求建立新的儲存卷或在 PVC 刪除時銷燬儲存卷。
      • Attach/Detach(掛接/摘除):將儲存卷附加到節點上或從節點上分離。
      • Mount/Unmount(掛載/解除安裝):將儲存卷掛載到 Pod 的檔案系統中或將儲存卷解除安裝。

綜上所述,透過這些元件和流程,CSI 模型為 Kubernetes 提供了一個統一的方法來處理各種儲存系統,從而增加了儲存解決方案的靈活性和可移植性。此外,CSI 模型還幫助解耦了 Kubernetes 與儲存系統的實現細節,使得儲存提供商可以更輕鬆地更新和維護他們的解決方案,而無需更改 Kubernetes 的核心程式碼。

相關文章