本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發佈以來是否已變得不正確。
您的叢集是否已準備好迎接 v1.24 版本?
早在 2020 年 12 月,Kubernetes 宣布棄用 Dockershim。在 Kubernetes 中,dockershim 是一個軟體墊片,可讓您在 Kubernetes 內使用完整的 Docker 引擎作為容器執行階段。在即將發布的 v1.24 版本中,我們將移除 Dockershim - 棄用和移除之間的延遲符合專案的政策,即在棄用後至少支援功能一年。如果您是叢集營運商,本指南包含您在此版本中需要了解的實際情況。此外,您需要做什麼來確保您的叢集不會崩潰!
首先,這甚至會影響您嗎?
如果您正在自行建置叢集,或不確定此移除是否會影響您,請採取安全措施並檢查您是否對 Docker Engine 有任何依賴性。請注意,使用 Docker Desktop 建置應用程式容器並不是叢集的 Docker 依賴性。由 Docker 建立的容器映像檔符合開放容器倡議 (OCI),這是一個 Linux 基金會治理結構,定義了圍繞容器格式和執行階段的行業標準。它們可以在 Kubernetes 支援的任何容器執行階段上正常運作。
如果您使用的是雲端供應商的託管 Kubernetes 服務,並且您沒有明確變更容器執行階段,則您可能無需執行任何其他操作。Amazon EKS、Azure AKS 和 Google GKE 現在都預設為 containerd,但如果您有任何節點自訂,則應確保它們不需要更新。若要檢查節點的執行階段,請依照找出節點上使用的容器執行階段進行操作。
無論您是自行建置叢集還是使用雲端供應商的託管 Kubernetes 服務,您可能都需要遷移依賴 Docker Engine 的遙測或安全代理程式。
我有 Docker 依賴性。現在怎麼辦?
如果您的 Kubernetes 叢集依賴 Docker Engine,並且您打算升級到 Kubernetes v1.24(基於安全性和類似原因,您最終應該這樣做),您將需要將容器執行階段從 Docker Engine 變更為其他執行階段,或使用 cri-dockerd。由於 containerd 是一個畢業的 CNCF 專案,並且是 Docker 本身內的執行階段,因此它作為替代容器執行階段是一個安全的選擇。幸運的是,Kubernetes 專案已記錄了變更節點容器執行階段的程序,並以 containerd 作為範例。切換到其他支援的執行階段之一的指示類似。
我想升級 Kubernetes,並且需要保持與 Docker 作為執行階段的相容性。我的選擇有哪些?
別擔心,您不會被拋在腦後,也不必承擔停留在舊版 Kubernetes 上的安全風險。Mirantis 和 Docker 共同發布並維護了 dockershim 的替代品。該替代品稱為 cri-dockerd。如果您確實需要保持與 Docker 作為執行階段的相容性,請依照專案文件中的指示安裝 cri-dockerd。
就這樣嗎?
是的。只要您了解此版本中正在進行的變更以及您自己叢集的詳細資訊,並且您確保與您的開發團隊清楚溝通,它就會是最小程度的戲劇性。您可能需要對叢集、應用程式程式碼或腳本進行一些變更,但所有這些需求都已記錄在案。將 Docker Engine 作為執行階段切換為使用其他支援的容器執行階段之一實際上意味著移除中間人,因為 dockershim 的目的是存取 Docker 本身使用的容器執行階段。從實際的角度來看,這種移除無論對您還是對 Kubernetes 維護者而言,從長遠來看都更好。
如果您仍有疑問,請先查看Dockershim 移除常見問題解答。