将节点上的容器运行时从 Docker Engine 改为 containerd
说明: 本部分链接到提供 Kubernetes 所需功能的第三方项目。Kubernetes 项目作者不负责这些项目。此页面遵循CNCF 网站指南,按字母顺序列出项目。要将项目添加到此列表中,请在提交更改之前阅读。
安装 containerd。进一步的信息可参见 containerd 的安装文档。 关于一些特定的环境准备工作,请遵循 。
腾空节点
将 替换为你所要腾空的节点的名称
systemctl stop kubelet
systemctl disable docker.service --now
安装 Containerd
遵循此指南 了解安装 containerd 的详细步骤。
从官方的 Docker 仓库安装
containerd.io
包。关于为你所使用的 Linux 发行版来设置 Docker 仓库,以及安装containerd.io
包的详细说明,可参见 。配置 containerd:
containerd config default | sudo tee /etc/containerd/config.toml
重启 containerd:
sudo systemctl restart containerd
下载 containerd:
解压缩并执行配置:
Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force
cd $Env:ProgramFiles\containerd\
.\containerd.exe config default | Out-File config.toml -Encoding ascii
# 请审查配置信息。取决于你的安装环境,你可能需要调整:
# - the sandbox_image (Kubernetes pause 镜像)
# - cni bin_dir 和 conf_dir 的位置
Get-Content config.toml
# (可选步骤,但强烈建议执行)将 containerd 排除在 Windows Defender 扫描之外
Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe"
启动 containerd:
.\containerd.exe --register-service
Start-Service containerd
编辑文件 /var/lib/kubelet/kubeadm-flags.env
,将 containerd 运行时添加到标志中: --container-runtime=remote
和 --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
。
对于使用 kubeadm 的用户,可以考虑下面的问题:
工具将每个主机的 CRI 套接字保存在该主机对应的 Node 对象的注解中。 使用 kubeadm
的用户应该知道,kubeadm
工具将每个主机的 CRI 套接字保存在该主机对应的 Node 对象的注解中。 要更改这一注解信息,你可以在一台包含 kubeadm /etc/kubernetes/admin.conf
文件的机器上执行以下命令:
kubectl edit no <node-name>
这一命令会打开一个文本编辑器,供你在其中编辑 Node 对象。 要选择不同的文本编辑器,你可以设置 KUBE_EDITOR
环境变量。
-
注意新的 CRI 套接字路径必须带有
unix://
前缀。 保存文本编辑器中所作的修改,这会更新 Node 对象。
重启 kubelet
运行 kubectl get nodes -o wide
,containerd 会显示为我们所更改的节点上的运行时。
说明: 本部分链接到提供 Kubernetes 所需功能的第三方项目。Kubernetes 项目作者不负责这些项目。此页面遵循,按字母顺序列出项目。要将项目添加到此列表中,请在提交更改之前阅读内容指南。
最后,在一切顺利时删除 Docker。
sudo yum remove docker-ce docker-ce-cli
本页面中的条目引用了第三方产品或项目,这些产品(项目)提供了 Kubernetes 所需的功能。Kubernetes 项目的开发人员不对这些第三方产品(项目)负责。请参阅了解更多细节。
在提交更改建议,向本页添加新的第三方链接之前,你应该先阅读内容指南。