開發團隊已完成移除Kubernetes專案內建的雲端供應商整合,並且建立4個新的子系統來替代這些功能,包括雲端控制管理器、API伺服器網路代理、Kubelet憑證提供者外部套件,以及搬遷儲存使用容器儲存介面(CSI)系統。而之所以開發團隊要對Kubernetes雲端供應商的內建支援進行調整,其目的在於使其成為真正供應商中立的平臺。

Kubernetes在早期發展的時候,透過內建雲端供應商的支援,來促進普及並減少複雜性,同時也建立了一套標準化實踐,來確保Kubernetes在不同的雲端環境具有一致性,但隨著Kubernetes專案的成熟和廣受採用,內建雲端供應商支援出現維護上的複雜性和擴展限制。

之前Kubernetes為了要對各雲端供應商提供原生支援,開發團隊需要維護數百萬行的Go程式碼,而這個複雜性隨著專案發展持續增加,另外,開發團隊也有意使Kubernetes成為真正的供應商中立平臺,因此從Kubernetes 1.7版本開始,專案便啟動刪除內建雲端供應商整合(KEP-2395)的計畫。

經過多個版本後,開發團隊終於成功將所有雲端供應商整合,從核心Kubernetes儲存庫搬遷到外部套件,專案因此刪除了約150萬行的程式碼,Kubernetes核心元件的二進位檔還大幅瘦身減少了40%。

這次Kubernetes程式碼搬遷影響眾多元件,重要的程式碼路徑仰賴最初5個雲端供應商,包括Google雲端、AWS、Azure、OpenStack和vSphere的內建整合,要將這些程式碼從核心切分出來,開發團隊建立4個新的子系統,雲端控制管理器、API伺服器網路代理、Kubelet憑證提供商擴充外部套件,以及儲存搬遷使用CSI系統。

雲端控制管理器取代kube-controller-manager和Kubelet中,直接和雲端API互動的功能,而API伺服器網路代理則取代kube-apiserver的SSH通道功能。Kubelet憑證提供商擴充外部套件取代了Kubelet內建功能,用於動態取得託管在Google雲端、AWS和Azure上映像檔註冊表的憑證。而管理Kubernetes和其他容器調度工具中的區塊和檔案儲存系統,則搬遷使用CSI控制平面標準。

子系統經過數個版本的測試,現在都已經達到正式版本的成熟度,而且官方也預告,從Kubernetes 1.31開始,內建的雲端供應商支援將永久停用,並從核心元件中刪除。

熱門新聞

Advertisement