Kubernetes将弃用Docker,未来将何去何从?

近日,Kubernetes 官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,届时用户将收到 Docker 弃用警告,并需要改用其他容器运行时。但 Docker 作为容器镜像构建工具的作用将不受影响,用其构建的容器镜像将一如既往地在集群中与所有容器运行时正常运转。

 

 

官方解释称,Docker 作为一个完整的容器技术堆栈,在其创建之初就不是为了将其嵌入 Kubernetes 而设计的。除了其作为容器运行时本身的作用以外,Docker 还包含了一系列方便用户交互的 UX 更改,而这些额外的功能对于 Kubernetes 来说过于臃肿。

事实上,Docker 并不符合 Kubernetes 的容器运行时接口标准(CRI),官方必须要维护一个名为 Dockershim 的中间件才能够把 Docker 当作 Kubernetes 的容器运行时来使用。因此,官方建议用户使用符合 CRI 的 containerd 或 CRI-O 作为取代 Docker 的容器运行时,并表示最早将于 v1.23 版本把 Dockershim 从 Kubelet 中移除。

不过,Kubernetes 官方表示用户今后依然可以使用 Docker 来构建容器镜像,而 Docker 生成的镜像实际上也是一个 OCI(Open Container Initiative)镜像。无论使用什么工具来构建镜像,任何符合 OCI 标准的镜像在 Kubernetes 看来都是一样的。containerd 和 CRI-O 则可以提取这些镜像并运行它们。

 

Kubernetes 1.20 版本提到的不再维护 dockershim 垫片,并逐渐在后续版本中移除该垫片,这意味着在未来的 Kubernetes 环境中,docker 的占比将逐渐下降。简而言之,Docker 作为底层运行时的确正在被弃用,但用户不必惊慌,Docker 生成的镜像将继续在用户的集群中与所有运行时一起工作。

Docker 项目自2013年开源以来,引领了容器技术浪潮,至今仍然是众多容器环境下的首选,与 kubernetes 集成的成熟度高,最为稳定。Docker 技术本身在用户体验、容器构建等多方面的优秀表现,也会在开发环境、镜像构建等方面继续活跃。

其次,Docker 项目在最近几年的进化中,已经拆分成了多个小项目,例如 containerd / runc 等,这些新生项目也会在未来的 kubernetes 环境中继续发光发热。

 

简而言之,这就是我们想说的,这没什么大不了的,不必恐慌。

就像Dockershim Deprecation FAQ所说:“在1.20中唯一改变的是,如果使用Docker作为容器运行时,则在kubelet启动时会打印一条警告信息。”

Dockershim中间件会一直保留到2021年末,直到发布Kubernetes 1.23版本为止。Kubernetes团队将与所有人紧密合作,直到所有人都准备好了相关变更,才会将dockershim放飞牧场。

更多:https://edu.51cto.com/course/27060.html

你可能感兴趣的:(docker/k8s)