Kubernetes在1.20版本之后不再将Docker作为容器运行时使用。不要惊慌????Docker容器仍然支持,但是dockershim/Docker Kubernetes和containerd之间的层已经弃用,将从1.22+版本中移除。因此,如果你正在运行docker,你需要更改为支持的容器运行时接口(CRI)。containerd是一个很好的选择,如果您正在运行Docker,它已经在Kubernetes节点上运行了。
一个明显的优势是开销更少,没有Docker-shim和Docker翻译层,如图所示。
![](https://img-blog.csdnimg.cn/img_convert/893b645a95f4da7565218144d91397e9.png)
如何迁移
首先,我们检查当前运行的容器是什么。我们使用kubectl get node -o
来实现这一点。正如我们所看到的,我们将Docker作为运行时运行。
现在,我们检查containerd cli /usr/bin/ctr是否存在,名称空间moby是否存在,命令:
/usr/bin/ctr namespace list
moby是docker的命名空间。我们可以在这个命名空间中列出正在运行的容器
如果一切正常,我们可以更改cri,每次更改一个节点,首先是工作节点,然后是控制节点。如果只有一个控制节点,您将失去对集群的访问权,这将是暂时的,它应该自己恢复。
驱逐节点
我们需要封锁并释放节点,以便重新调度工作负载。
![](https://img-blog.csdnimg.cn/img_convert/7c1f557d6b41af694dd4b46ffc5cbebb.png)
停止服务
![](https://img-blog.csdnimg.cn/img_convert/e235a0095bd5667709dd5ba6c276aa85.png)
删除docker(可选)
我们删除了Docker,这是不必要的,但会让事情更清楚,以后更不容易出错,我们会节省一些磁盘空间…
![](https://img-blog.csdnimg.cn/img_convert/7370d673f32b572b5f310bc00a83ad73.png)
Containerd配置
禁用/etc/containerd/config中的disabled_plugins行。这样cri接口就加载了
![](https://img-blog.csdnimg.cn/img_convert/e996336c391df3073506e008c29d2842.png)
如果containerd没有配置文件,您可以生成一个新的默认文件。
![](https://img-blog.csdnimg.cn/img_convert/3880065a68b669b4f6653412f3216b98.png)
重启containerd
systemctl restart containerd
更改runtime
编辑/var/lib/kubelet/kubeadm-flags.env文件;并将containerd运行时添加到标记。--container-runtime=remote
和 --container-runtimeendpoint=unix:///run/containerd/containerd.sock
所以kubeadm-flags文件看起来应该是这样的。
![](https://img-blog.csdnimg.cn/img_convert/b12e0d677c4ccd1499b91ba766811e8e.png)
启动kubelet
在更改运行时之后,我们可以启动kubelet服务
systemctl start kubelet
核对
现在,当我们运行kubectl时,kubectl get nodes -o wide
,我们看到containerd是我们刚刚更改的节点的运行时containerd。
![](https://img-blog.csdnimg.cn/img_convert/c9139408b1c7228acba7d35dd76b63c9.png)
我们刚改变的节点仍然被封锁。所以我们现在可以解除封锁了。
![](https://img-blog.csdnimg.cn/img_convert/40947d8ae49d741b8fd43a37a59fe77b.png)
如果现在检查节点上的名称空间,会看到一个新的名称空间k8s.io。moby名称空间现在是空的,在这个名称空间中没有运行容器,所有容器现在都在运行k8.io命名空间。
![](https://img-blog.csdnimg.cn/img_convert/f54be2869bc2d1fc6b287f0a005b0949.png)
我们已经成功地更改了cri,现在我们可以移动到下一个节点并重复所有操作。
推荐
从Ice到Kubernetes容器技术,微服务架构经历了什么?
原创不易,随手关注或者”在看“,诚挚感谢!