相信很多人都已经看到 Kubernetes 1.20 的 CHANGELOG 了。我想大家的焦点应该不会在这个政治正确的信息上面:
- The label applied to control-plane nodes "node-role.kubernetes.io/master" is now deprecated and will be removed in a future release after a GA deprecation period.
- Introduce a new label "node-role.kubernetes.io/control-plane" that will be applied in parallel to "node-role.kubernetes.io/master" until the removal of the "node-role.kubernetes.io/master" label.
我更关心的是这个:
Deprecation
- Docker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called "dockershim" which implements CRI support for Docker and it has seen maintenance issues in the Kubernetes community. We encourage you to evaluate moving to a container runtime that is a full-fledged implementation of CRI (v1alpha1 or v1 compliant) as they become available. (#94624, @dims) [SIG Node]
大致的意思就是,Kubernetes 不带 Docker 玩了。
有点意料之外,却又感觉是情理之中。
我是在 14 年第一次接触 Docker,是我们团队的一位大佬带我玩的,当时能 docker run
出来一个容器就已经很高兴了,最后也是学一下就中断了,毕竟当时 OpenStack 更为火爆一些。
到了 16 年,我第一次尝试将自己维护的业务容器化之后,在那之后我就不想再用虚拟机了。当时还用了个 shipyard 的管理工具,然后用上了 marathon+mesos ,再到后来的 Kubernetes...
扯得有点远了。
Docker 并不是容器技术的发明者,但一定是计算机技术的革命者,Docker 孕育了社区,培养了用户群体,解决了开发说怎么在我的环境调试没问题,怎么到你那里就这么多bb事。
作为容器时代的开拓者,甚至在很多人的理解中 Docker=容器
,这是一个很了不起的成就了,说 Docker 一统江湖也不为过。
后面的发展,包括开源项目改名 Moby,Docker 企业业务卖身给 Mirantis,并不是一两句话能说清楚了。转折点应该是标准制定之争,在 Kubernetes 赢得容器编排之后,Docker Swarm 不可避免的衰落,而 Docker 项目本身也只能遵从 CRI 标准成为 Kubernetes 的 runtime,其他的也没有什么亮眼的表现了。
前面为什么说 Kubernetes 不带 Docker 玩感觉也是情理之中呢?我们先看一张图,毫无疑问,Kubernetes 发展的主导权都掌握在这些大厂手中。
- OpenShift v3 时代,红帽就已经不跟进 Docker 社区开发了,而是独自维护了一个分支 docker-1.13
- OpenShift v4 时代,直接就用 cri-o 代替了 Docker
- 而 RHEL 8,完全就没有了 Docker 的身影,默认就是自带 Podman;Podman 最大的特点就是没有 daemon,而且还兼容 docker 命令,在 RHEL 8 这里,感觉就没有使用 Docker 的必要了
红帽技术选型的原因不得而知,但能明显看出来,OpenShift 要跟 Docker 分道扬镳了,再到现在的 Kubernetes 也要放弃 Docker ,可以预见,Docker 在未来的日子不会好过。
个人还是蛮喜欢 Docker 的,是它带领我们走进容器时代的。尽管早期的版本也有各种各样的问题,比如说 docker
命令 hang
住,dockerd view
跟 containerd view
不一致等等,这些问题都困扰过我很久,但这一点都不妨碍 Docker 的伟大。
事实上,到目前为止,Docker 依然是绝大部分用户在用的容器引擎。作为用户来讲,即使将来要做出选择,也有很多成熟优秀的产品可以代替(比如:cri-o、containerd),这倒不用太过担心。