在容器執行階段使用 containerd

容器執行階段是負責管理 Kubernetes 節點上容器和容器映像檔的軟體。containerdCNCF (雲端原生運算基金會) 畢業的容器執行階段。它原生支援 Kubernetes,且相較於 Kubernetes 的 Docker Engine,資源效率更高且更安全。在 Kubernetes 1.20 之前,Docker Engine 是主要的容器執行階段。不過,Kubernetes 1.20 版已淘汰 Dockershim (Kubernetes 中的 Docker 引擎整合程式碼),Kubernetes 1.24 版則已移除這項功能。

今後,您應在叢集中使用 containerd。

管理員叢集中的 containerd 支援

Google Distributed Cloud 會為所有管理員叢集節點使用 containerd。

在使用者叢集中支援 containerd

Google Distributed Cloud 支援下列OS 映像檔類型,適用於使用者叢集節點:

OS 映像檔類型容器執行階段
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

限制和建議

  • 自 1.13.0 版起,Google Distributed Cloud 不再支援 ubuntu OS 映像檔類型。所有叢集節點都必須使用 containerd 執行階段。

  • 使用 Docker Engine 的叢集無法升級至 1.13 版。您必須先更新叢集,才能使用 containerd 執行階段,然後才能升級至 1.13 版。

  • 從 1.12.0 版起,您無法再建立使用 ubuntu OS 映像檔類型的新叢集。也就是說,您無法再建立使用 Docker Engine 容器執行階段的新叢集。

判斷哪些節點集區使用 Docker Engine

Ubuntu

列出使用 Docker Engine 的 Ubuntu 節點集區:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

USER_CLUSTER_KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。

輸出內容範例:

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

使用者叢集中的所有 Windows 節點集區都使用相同的容器執行階段。Windows 節點的執行階段取決於 enableWindowsDataplaneV2 的值,這是使用者叢集設定檔中的欄位。

如果 enableWindowsDataplaneV2true,使用者叢集中的所有 Windows 節點都會使用 containerd。如果是 false,所有 Windows 節點都會使用 Docker Engine。

執行下列指令,判斷哪些使用者叢集已將 enableWindowsDataplaneV2 設為 false。這會顯示已設定使用 Docker Engine 做為 Windows 節點的叢集。

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

輸出內容會列出所有已設定為使用 Docker Engine for Windows 節點的使用者叢集。例如:

user-cluster-1

無論使用者叢集是否有任何 Windows 節點集區,如果叢集的 enableWindowsDataplaneV2 設為 false,您都無法將叢集升級至 1.13 版。

更新 Linux 節點集區以使用 containerd

在使用者叢集設定檔中,為每個節點集區設定 osImageType ubuntu_containerdcos

範例:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

更新使用者叢集:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

更改下列內容:

  • ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑

  • USER_CLUSTER_CONFIG:使用者叢集設定檔的路徑

更新 Windows 節點以使用 containerd

在使用者叢集設定檔中,將 enableWindowsDataplaneV2 設為 true

enableWindowsDataplaneV2: true

更新使用者叢集:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

上述指令會將叢集中所有 Windows 節點的容器執行階段設為 containerd。