由于 k8s 1.24之后的版本不再支持docker,因此需要对其进行迁移。这里记录下迁移的一些步骤:
- 在master上修改node的信息
kubectl edit no <node-name>
这一命令会打开一个文本编辑器,供你在其中编辑 Node 对象。 要选择不同的文本编辑器,你可以设置 KUBE_EDITOR 环境变量。
- 更改 kubeadm.alpha.kubernetes.io/cri-socket 值,将其从 /var/run/dockershim.sock 改为你所选择的 CRI 套接字路径 (例如:unix:///run/containerd/containerd.sock)。
-
注意新的 CRI 套接字路径必须带有 unix:// 前缀。
-
保存文本编辑器中所作的修改,这会更新 Node 对象。
- 停掉对应节点的服务
systemctl stop kubelet
systemctl disable docker.service --now
systemctl disable docker.socket --now
- 安装 Containerd
apt-get install containerd.io
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
-
配置 kubelet 使用 containerd 作为其容器运行时
- 编辑文件
/var/lib/kubelet/kubeadm-flags.env
,将 containerd 运行时添加到标志中;--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock
- 编辑
/etc/default/kubelet
如果里面有cgroup
相关的配置,将其删掉。
- 编辑文件
-
重启 kubelet
systemctl daemon-reload
systemctl restart containerd
systemctl restart kubelet
- 在master上面查看信息。如果报错,可以用
systemctl status kubelet
查看错误并排查
kubectl get node -o wide