遷移 Docker Engine 節點從 dockershim 到 cri-dockerd

本頁面說明如何遷移您的 Docker Engine 節點以使用 cri-dockerd 而非 dockershim。在以下情況下,您應該遵循這些步驟

  • 您想要從 dockershim 切換出來,但仍然使用 Docker Engine 在 Kubernetes 中執行容器。
  • 您想要升級到 Kubernetes v1.32,而您現有的叢集依賴 dockershim,在這種情況下,您必須從 dockershim 遷移,而 cri-dockerd 是您的選項之一。

若要深入瞭解 dockershim 的移除,請閱讀 FAQ 頁面

什麼是 cri-dockerd?

在 Kubernetes 1.23 及更早版本中,您可以將 Docker Engine 與 Kubernetes 搭配使用,依賴 Kubernetes 的內建元件,名為 dockershim。dockershim 元件已在 Kubernetes 1.24 版本中移除;但是,第三方替代品 cri-dockerd 可用。cri-dockerd 介面卡可讓您透過容器執行期介面使用 Docker Engine。

如果您想要遷移到 cri-dockerd,以便您可以繼續使用 Docker Engine 作為您的容器執行期,您應該為每個受影響的節點執行以下操作

  1. 安裝 cri-dockerd
  2. 隔離並排空節點。
  3. 設定 kubelet 以使用 cri-dockerd
  4. 重新啟動 kubelet。
  5. 驗證節點是否健康。

先在非關鍵節點上測試遷移。

您應該為每個要遷移到 cri-dockerd 的節點執行以下步驟。

開始之前

隔離並排空節點

  1. 隔離節點以停止新的 Pod 排程到該節點

    kubectl cordon <NODE_NAME>
    

    <NODE_NAME> 替換為節點的名稱。

  2. 排空節點以安全地驅逐執行中的 Pods

    kubectl drain <NODE_NAME> \
        --ignore-daemonsets
    

設定 kubelet 以使用 cri-dockerd

以下步驟適用於使用 kubeadm 工具設定的叢集。如果您使用不同的工具,則應使用該工具的設定指示來修改 kubelet。

  1. 在每個受影響的節點上開啟 /var/lib/kubelet/kubeadm-flags.env
  2. --container-runtime-endpoint 參數修改為 unix:///var/run/cri-dockerd.sock
  3. --container-runtime 參數修改為 remote(在 Kubernetes v1.27 及更高版本中不可用)。

kubeadm 工具將節點的 socket 作為註釋儲存在控制平面的 Node 物件上。若要為每個受影響的節點修改此 socket

  1. 編輯 Node 物件的 YAML 表示法

    KUBECONFIG=/path/to/admin.conf kubectl edit no <NODE_NAME>
    

    替換以下內容

    • /path/to/admin.conf:kubectl 設定檔 admin.conf 的路徑。
    • <NODE_NAME>:您要修改的節點名稱。
  2. kubeadm.alpha.kubernetes.io/cri-socket/var/run/dockershim.sock 變更為 unix:///var/run/cri-dockerd.sock

  3. 儲存變更。Node 物件將在儲存時更新。

重新啟動 kubelet

systemctl restart kubelet

驗證節點是否健康

若要檢查節點是否使用 cri-dockerd 端點,請依照找出您使用的執行階段中的指示操作。kubelet 的 --container-runtime-endpoint 參數應為 unix:///var/run/cri-dockerd.sock

取消隔離節點

取消隔離節點以允許 Pods 排程到該節點

kubectl uncordon <NODE_NAME>

下一步

此頁面上的項目引用了第三方產品或專案,這些產品或專案提供了 Kubernetes 所需的功能。Kubernetes 專案作者不對這些第三方產品或專案負責。有關更多詳細資訊,請參閱 CNCF 網站指南

在提出新增額外第三方連結的變更之前,您應該閱讀內容指南

上次修改時間:2024 年 3 月 8 日 11:46 AM PST:Change cri-dockerd links to official docs in the english content (fe501f8bfa)