为容器运行时使用 containerd

10

容器运行时是负责管理 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 支持用户集群节点的以下操作系统映像类型

操作系统映像类型容器运行时
ubuntuDocker Engine
ubuntu_containerdcontainerd
coscontainerd
windowsDocker Engine 或 containerd

在 Windows 节点上使用 containerd 是 1.10 版中的一项预览版功能。

限制和建议

  • 从 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(这是用户集群配置文件中的一个字段)的值决定。

如果 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 用于 Windows 节点的所有用户集群。例如:

user-cluster-1

无论用户集群是否有任何 Windows 节点池,如果集群将 enableWindowsDataplaneV2 设置为 false,则您无法将其升级到 1.13 版。

更新节点池以使用 containerd

对于用户集群配置文件中的每个 Linux 节点池,请设置 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

Anthos clusters on VMware 1.10 版不支持将 Windows 节点的容器运行时从 Docker Engine 更新为 containerd。