這篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 1.22:CSI Windows 支援(搭配 CSI Proxy)達到正式發行 (GA)
適用於 Windows 的 CSI Proxy 穩定版本已與 Kubernetes 1.22 一起發布。CSI Proxy 使在 Windows 節點上運行的 CSI 驅動程式能夠執行特權儲存操作。
背景
Kubernetes 的容器儲存介面 (CSI) 在 Kubernetes 1.13 版本中達到 GA。CSI 已成為將區塊和檔案儲存暴露於容器化工作負載(在容器編排系統 (CO),如 Kubernetes 上)的標準。它使第三方儲存供應商能夠編寫和部署外掛程式,而無需更改核心 Kubernetes 程式碼庫。傳統的樹內驅動程式已被棄用,新的儲存功能在 CSI 中引入,因此讓 CSI 驅動程式在 Windows 上工作非常重要。
Kubernetes 中的 CSI 驅動程式有兩個主要組件:在控制平面中運行的控制器外掛程式,以及在每個節點上運行的節點外掛程式。
控制器外掛程式通常不需要直接存取主機,並且可以通過 Kubernetes API 和外部控制平面服務執行其所有操作。
然而,節點外掛程式需要直接存取主機,以便將區塊裝置和/或檔案系統提供給 Kubernetes kubelet。由於 Windows 節點上的容器缺少運行特權操作的能力,因此 CSI Proxy 在 Kubernetes 1.18 中以 alpha 版本引入,作為使容器能夠執行特權儲存操作的一種方式。這使得容器化的 CSI 驅動程式能夠在 Windows 節點上運行。
什麼是 CSI Proxy?CSI 驅動程式如何與其互動?
當調度使用持久卷的工作負載時,它將經歷 CSI Spec 中定義的一系列步驟。首先,工作負載將被調度在節點上運行。然後,CSI 驅動程式的控制器組件將持久卷附加到節點。最後,CSI 驅動程式的節點組件將持久卷掛載到節點。
CSI 驅動程式的節點組件需要在 Windows 節點上運行,以支援 Windows 工作負載。諸如掃描磁碟裝置、掛載檔案系統等各種特權操作,目前還無法從 Windows 節點上運行的容器化應用程式完成(Windows HostProcess 容器 在 Kubernetes 1.22 中作為 alpha 版本引入,啟用了需要主機存取的功能,如前面提到的操作)。但是,我們可以通過預先安裝在 Windows 節點上的二進制檔案 (CSI Proxy) 執行這些操作。CSI Proxy 具有客戶端-伺服器架構,並允許 CSI 驅動程式通過在 CSI Proxy 啟動期間創建的命名管道上公開的 gRPC 介面發出特權儲存操作。
CSI Proxy 達到 GA
CSI Proxy 開發團隊與儲存供應商密切合作,其中許多供應商早在 CSI Proxy 設計提案階段就開始將 CSI Proxy 整合到他們的 CSI 驅動程式中並提供回饋。這種合作揭示了需要額外 API 的用例,發現了錯誤,並確定了文檔改進的領域。
CSI Proxy 設計 KEP 已更新,以反映目前的 CSI Proxy 架構。額外的 開發文檔 包含在內,供有興趣協助開發新功能或錯誤修復的貢獻者參考。
在達到 GA 之前,我們希望確保我們的 API 簡單且一致。我們對 v1beta API 群組進行了廣泛的 API 審查,以確保 CSI Proxy API 方法和訊息與 CSI Spec 中定義的命名慣例一致。作為這項工作的一部分,我們正在將 Disk、Filesystem、SMB 和 Volume API 群組升級到 v1。
額外的 Windows 系統 API,用於從 Windows 節點獲取資訊,以及在 Windows 節點中支援掛載 iSCSI 目標,以 alpha API 的形式在 System API 和 iSCSI API 中提供。這些 API 將繼續改進,然後我們才會將它們升級到 v1。
CSI Proxy v1 與所有先前的 v1betaX 版本相容。GA csi-proxy.exe
二進制檔案可以處理來自 v1betaX 客戶端的請求,這要歸功於自動生成的轉換層,該轉換層將任何版本化的客戶端請求轉換為伺服器可以處理的版本無關請求。為升級到 v1 的 API 群組的所有 API 版本添加了幾個 整合測試,以確保 CSI Proxy 向後相容。
CSI Proxy 與與之互動的 CSI 驅動程式之間的版本差異也經過仔細考慮。已為 CSI 驅動程式提供了 連接回退機制,以處理 CSI Proxy 的多個版本,以便順利升級到 v1。這允許 CSI 驅動程式(如 GCE PD CSI 驅動程式)識別正在運行的 CSI Proxy 二進制檔案的版本,並處理部署在節點上的 CSI Proxy 二進制檔案的多個版本。
CSI Proxy v1 已被許多 CSI 驅動程式使用,包括 AWS EBS CSI 驅動程式、Azure Disk CSI 驅動程式、GCE PD CSI 驅動程式 和 SMB CSI 驅動程式。
未來計畫
我們對 CSI Proxy 的未來感到非常興奮。隨著即將推出的 Windows HostProcess 容器,我們正在考慮將 CSI Proxy 除了目前的客戶端/伺服器設計之外,還轉換為 CSI 驅動程式使用的庫。這將使我們能夠更快地迭代新功能,因為不再需要 csi-proxy.exe
二進制檔案。
如何參與?
這個專案,就像所有的 Kubernetes 一樣,是來自不同背景的許多貢獻者共同努力的成果。有興趣參與 CSI Proxy 或 Kubernetes 儲存系統任何部分的設計和開發的人員,可以加入 Kubernetes 儲存特別興趣小組 (SIG)。我們正在快速成長,並始終歡迎新的貢獻者。
對於那些有興趣了解更多關於 Windows 中 CSI 支援細節的人,請在 #csi-windows Kubernetes Slack 頻道中聯繫。
致謝
CSI-Proxy 收到了來自 Kubernetes 社群成員的許多貢獻。我們感謝所有為 CSI Proxy 做出貢獻的人們,包括設計審查、錯誤報告、錯誤修復,以及他們為達到這個里程碑的持續支持。