Anthos clusters on bare metal 将可选的 containerRuntime
配置字段添加到集群配置文件。使用此字段配置集群节点用于为 Kubernetes pod 调度容器的容器运行时。
您可以直接让 kubelet
调用容器运行时接口。此选项使得不需要 Docker 守护进程,从而可让 kubelet
与 Docker 分离。
鉴于 Kubernetes 的目标是弃用 Docker 守护进程并且将 container 设为默认,因此需要进行此更改。Kubernetes 计划从 Kubernetes 版本 1.20 开始发送警告,并最终在版本 1.24 弃用。此更改与计划的变更保持一致,以便将 containerd 设置为 GKE 的默认值。
在 Anthos clusters on bare metal 中,您可以通过新的 containerRuntime
字段将 kubelet
配置为使用 Docker 或 containerd
。 默认情况下,kubelet
使用 containerd 作为容器运行时。
准备工作
确定集群要使用的容器运行时。只有在升级或安装集群时,才能更改容器运行时字段的值。
确保您的部署支持
containerd
1.4.6 或更高版本。Anthos clusters on bare metal 在containerd
的任何先前安装版本的基础上安装此版本。确保 Anthos clusters on bare metal 可以安装为两个运行时安装的以下文件:
二进制文件
/usr/bin/containerd
/usr/bin/containerd-shim
/usr/bin/containerd-shim-runc-v1
/usr/bin/containerd-shim-runc-v2
/usr/bin/crictl
/usr/bin/ctr
/usr/local/sbin/runc
配置文件
/etc/crictl.yaml
/etc/systemd/system/containerd.service
/etc/containerd/config.toml
/etc/containerd/certs.d/
/etc/systemd/system/containerd.service.d/09-proxy.conf
只有在您配置了 HTTP 代理时,才会安装此文件。
确保 Anthos clusters on bare metal 可以根据您选择的运行时在节点上安装以下证书:
- 对于
containerd
:/etc/docker/certs.d/
/etc/containerd/certs.d/
- 对于 Docker:
/etc/docker/certs.d/
- 对于
为新集群配置容器运行时
如需为新集群设置容器运行时,请设置集群配置文件的 spec
下 nodeConfig
部分中的 containerRuntime
字段。Anthos clusters on bare metal 支持以下值:
containerd
docker
如果将此字段留空或未设置,则 Anthos clusters on bare metal 默认使用 containerd
。如需使用 Docker,配置中的条目应类似于以下示例:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: docker
在升级集群时配置容器运行时
您可以在升级时配置 Anthos clusters on Bare Metal,以使用其他容器运行时。只有在升级或安装集群时,才能更改容器运行时字段的值。
要求
- 先升级管理员集群再升级用户集群
- 在升级集群之前,请先设置配置文件中
containerRuntime
字段的值。
将运行时更改为 Docker
如需在升级期间设置容器运行时,请设置集群配置文件的 spec
下 nodeConfig
部分中的 containerRuntime
字段。Anthos clusters on bare metal 支持以下值:
containerd
docker
如需使用 Docker,请如以下例所示更改配置文件:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: docker
如需在集群升级过程中将集群节点的容器运行时设置为 docker
,请运行以下命令来升级集群:
bmctl upgrade cluster
更新集群并将 Docker 设置为运行时
如果您将容器运行时设置为 docker
,则以下命令会更新 /etc/containerd/certs.d/
中的映像注册表证书
bmctl update cluster
重置使用 containerd 作为运行时的集群
如果您使用默认容器运行时,则以下命令不会删除配置、二进制文件或目录:
bmctl reset cluster
在重置期间,containerd
服务会继续运行,但 Kubernetes 调度容器将停止并从 containerd 运行时中移除。
删除以下二进制文件和目录以完成重置:
/etc/crictl.yaml
/etc/systemd/system/containerd.service
/etc/systemd/system/containerd.service.d/
/etc/containerd/config.toml
/etc/containerd/certs.d/
如果您使用 Docker 作为运行时,则重置期间不会执行清理。
检查运行时的状态
如需在机器健康检查过程中检查运行时的状态,请运行以下命令:
systemctl status RUNTIME
将 RUNTIME
替换为您选择的运行时:containerd
或 docker
。