dockershim是Kubernetes社区为了能让Docker成为其支持的容器运行时,所维护的一个兼容程序,kubernetes v1.24 起 kubernetes 官方不在维护。
docker 和 k8s 历史背景
- 2013/3 Docker 开源
- 2014/6 Google 开源 Kubernetes
- 2015/6 OCI 成立
- 2016/7 Docker Swarm 发布,同时 kubernetes 也支持 Docker,并且 Docker 的优势远大于其他容器引擎,如 RKT。同年 kubernetes 在容器编排中占主导地位
- 2016/12 kubernetes 发布 CRI
- 2017/3 rkt 和 containerd 捐献给 CNCF
- 2017/11 kubernetes 支持 containerd
- 2018/5 kubernetes 集成 containerd(cri-containerd)
- 2020/12 kubernetes 废弃 dockershim,开始由 Mirantis 和 Docker 共同维护
- Dockershim Deprecation FAQ
- KEP-2221: Removing dockershim from kubelet
- Dockershim:历史背景
- Docker 和 Mirantis 共同决定继续以 cri-dockerd 的形式支持 dockershim 代码
- https://github.com/Mirantis/cri-dockerd
- https://www.mirantis.com/blog/the-future-of-dockershim-is-cri-dockerd/
- 移除原因:
- k8s 需要根据客户需求,接入更多容器,因此发布了 CRI
- shim 是集成 docker 的临时方案,并随着时间的推移,为 kubelet 带来很多的复杂性
- 2022/8/24 Kubernetes v1.25 正式发布
kubernetes 调用 runtime 的变化
(kubernetes's kubelet docker client) -> docker
// dockershim 由 k8s 开发,k8s v1.20 之前内置
(kubernetes's kubelet <-CRI-> dockershim) -> docker -> containerd -> containerd-shim -> runc
// kubernetes v1.24之后,自行安装
kubernetes's kubelet <-CRI-> cri-dockerd(原dockershim,由 Mirantis 和 Docker 共同维护) -> docker -> containerd -> containerd-shim -> runc