Anthos clusters on bare metal 将可选的 containerRuntime
配置字段添加到集群配置文件。使用此字段配置集群节点用于为 Kubernetes pod 调度容器的容器运行时。
从 Anthos clusters on bare metal 1.7 开始,您可以直接让 kubelet
调用容器运行时接口。此选项使得不需要 Docker 守护进程,从而可让 kubelet
与 Docker 分离。
鉴于 Kubernetes 的目标是弃用 Docker 守护进程并且将 container 设为默认,因此需要进行此更改。Kubernetes 计划从 Kubernetes 版本 1.20 开始发送警告,并最终在版本 1.24 弃用。此更改与计划的变更保持一致,以便将 containerd 设置为 GKE 的默认值。
在 Anthos clusters on bare metal 中,您可以通过新的 containerRuntime
字段将 kubelet
配置为使用 Docker 或 containerd
。
准备工作
确定集群要使用的容器运行时。只有在升级或安装集群时,才能更改容器运行时字段的值。
确保您的部署支持
containerd
1.4.3 或更高版本。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 可以根据您选择的运行时在节点上安装以下证书:
- 对于 Docker:
/etc/docker/certs.d/
- 对于
containerd
:/etc/docker/certs.d/
/etc/containerd/certs.d/
- 对于 Docker:
为新集群配置容器运行时
如需为新集群设置容器运行时,请设置集群配置文件的 spec
下 nodeConfig
部分中的 containerRuntime
字段。Anthos clusters on bare metal 支持以下值:
docker
containerd
如果将此字段留空或未设置,则 Anthos clusters on bare metal 默认使用 docker
。如需使用 containerd
,配置中的条目应类似于以下示例:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: containerd
在升级集群时配置容器运行时
从下列版本之一升级时,您可以将 Anthos clusters on bare metal 配置为使用其他容器运行时:
- 1.6.0
- 1.6.1
- 1.6.2
只有在升级或安装集群时,才能更改容器运行时字段的值。
要求
- 先升级管理员集群再升级用户集群
- 在升级集群之前,请先设置配置文件中
containerRuntime
字段的值。
将运行时更改为 containerd
如需在升级期间设置容器运行时,请设置集群配置文件的 spec
下 nodeConfig
部分中的 containerRuntime
字段。Anthos clusters on bare metal 支持以下值:
docker
containerd
如需使用 containerd
,请如以下例所示更改配置文件:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: containerd
如需在集群升级过程中将集群节点的容器运行时设置为 containerd
,请运行以下命令来升级集群:
bmctl upgrade cluster
升级后对控制层面的更改
在升级期间,如果运行时设置为 containerd
,则 Anthos clusters on bare metal 会在控制层面节点上执行以下任务以支持负载平衡器:
- 删除
docker.*.service
服务 - 安装
container.*.service
服务 - 重启到
haproxy
和keepalived
systemd 服务
升级后,使用 docker
运行时的集群会保留其现有的 haproxy
和 keepalived
systemd 服务。
更新集群并将 containerd 设置为运行时
如果您将容器运行时设置为 containerd
,则以下命令会更新 /etc/containerd/certs.d/
中的映像注册表证书
bmctl update cluster
重置集群并将 containerd 设置为运行时
如果将容器运行时设置为 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/
检查 containerd 运行时的状态
如需在机器健康检查过程中检查 containerd
的状态,请运行以下命令:
systemctl status containerd