容器运行时是负责管理 Kubernetes 节点上的容器和容器映像的软件。containerd 是已升级的 CNCF (Cloud Native Cloud Foundation) 容器运行时。该容器运行时原生支持 Kubernetes,与 Docker Engine for Kubernetes 相比,它被认为更省资源且更安全。在 Kubernetes 1.20 之前,Docker Engine 一直都是主要的容器运行时。但是,Kubernetes 中的 Docker Engine 集成代码 Dockershim 在 Kubernetes 1.20 中已被弃用,并在 Kubernetes 1.24 中已被移除。
以后,您应该在集群中使用 containerd。
对管理员集群中的 containerd 的支持
Anthos clusters on VMware 对所有管理员集群节点使用 containerd。
对用户集群中的 containerd 的支持
Anthos clusters on VMware 支持用户集群节点的以下操作系统映像类型:
操作系统映像类型 | 容器运行时 |
---|---|
ubuntu | Docker Engine |
ubuntu_containerd | containerd |
cos | containerd |
windows | Docker Engine 或 containerd |
限制和建议
从 1.13.0 版开始,Anthos clusters on VMware 将不再支持
ubuntu
操作系统映像类型。所有集群节点都将使用 containerd 运行时。您无法将使用 Docker Engine 的集群升级到 1.13 版。
从 1.12.0 版开始,您将无法再创建使用
ubuntu
操作系统映像类型的新集群。也就是说,您无法再创建使用 Docker Engine 容器运行时的新集群。如果您将用户集群从 1.11 升级到 1.12,则可以在 1.12 集群中继续使用 Docker Engine 运行时。但我们强烈建议您先更新 1.11 集群以使用 containerd 运行时,然后再升级到 1.12。
确定哪些节点池正在使用 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
(这是用户集群配置文件中的一个字段)的值决定。
如果 enableWindowsDataplaneV2
为 true
,则用户集群中的所有 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 用于 Windows 节点的所有用户集群。例如:
user-cluster-1
无论用户集群是否有任何 Windows 节点池,如果集群将 enableWindowsDataplaneV2
设置为 false
,则您无法将其升级到 1.13 版。
更新 Linux 节点池以使用 containerd
对于用户集群配置文件中的每个节点池,请设置 osImageType ubuntu_containerd
或 cos
。
例如:
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。