王海龙, SUSE Rancher 中国社区技术经理,负责 Rancher 中国技术社区的维护和运营。拥有 8 年的云计算领域经验,经历了 OpenStack 到 Kubernetes 的技术变革,无论底层操作系统 Linux,还是虚拟化 KVM 或是 Docker 容器技术都有丰富的运维和实践经验。
前言
早在 2020 年 12 月,Kubernetes 就宣布将要弃用 Dockershim。在 Kubernetes 中,Dockershim 是一个适配器组件,Dockershim 适配器允许 Kubelet 与 Docker 交互,就好像 Docker 是一个与 CRI 兼容的运行时一样。
近日,Kubernetes v1.24 版本正式发布,最主要的变化就是删除了 Dockershim。也就是说,Kubernetes v1.24 无法再通过 in-tree 的形式来支持 Docker 作为它的 CRI 运行时。
随着 Kubernetes 的发展, 虽然 Docker 日渐式微,但还是有大量用户群体离不开 Docker,或者说暂时无法切换到 containerd 或 CRI-O 作为它的 CRI 运行时。 Rancher 为了满足继续使用 Docker 作为 CRI 运行时的需求,通过 RKE 集群支持外部 Dockershim 继续使用 Docker 作为 CRI 运行时。
虽然 Rancher 最新的 v2.6.4 目前还不支持 Kubernetes v1.24,但早在 Kubernetes v1.21 中就采用了 Mirantis 和 Docker 宣布的上游开源社区外部 Dockershim (该项目称为 cri-dockerd)来确保 RKE 集群可以继续使用 Docker。换句话说,你可以像之前一样继续基于 Docker Engine 构建 Kubernetes,唯一的区别就是 Dockershim 由内置方案变成了外部方案。
要启用外部 Dockershim,只需要在 RKE 配置中设置以下选项:
enable_cri_