作为一名容器时代的程序员相信你已经或多或少接触过Docker,但同时你也会发现Docker虽然流行了多年,但之前却很少有公司直接将线上应用通过Docker容器进行大规模地部署。但最近三年,你会发现几乎绝大多数有条件的公司都已经在使用Kubernetes部署和发布自己的线上业务了。对一名普通开发人员来说,这一切可能发生得太快,以至于你还没有搞清楚它是怎么发生的,也会疑惑Docker和Kubernetes之间到底是个什么关系。
在今天的内容中,我们从Kubernetes的系统架构及容器编排核心概念两个方面来简单聊一聊这个问题,希望能帮助到你更好地理解Docker和Kubernetes之间因果关系。
Kubernetes介绍
在具体介绍Kubernetes之前不得不再提一下Docker,如果你用过Docker部署过程序,那么你一定会非常享受它带给你的丝滑体验,而联想到在此之前发布一个程序需要写各种脚本、进行各种环境匹配的糟糕体验,那么相信你的这种感觉会更加强烈。
而Docker之所以能做到这一点,就在于它以“Docker镜像”的方式一举解决了应用打包和发布这一困扰业界多年的技术难题,并且大大降低了普通开发人员运维部署应用的门槛。正是因为解决了应用打包这个根本性的问题,才使得Docker很快就被广大开发/运维人员所接受,迅速成为炙手可热的技术,并在一定时间内引领了容器化技术发展的浪潮。
那么Docker这么好用为什么还会出现Kubernetes呢?事实是Docker作为单一的容器技术工具并不能很好地定义容器的“组织方式”和“管理规范”,难以独立地支撑起生产级大规模容器化部署的要求。因此容器技术的发展就迅速走向了以Kubernetes为代表的“容器编排”的技术路线,而这也是为什么Docker容器没有直接在生产环境中大规模部署的关键原因。
上面我们提到了“容器编排”的概念,了解到相对于Docker单一容器技术而言,Kubernetes容器编排技术可以很好地实现大规模容器的组织和管理,从而使容器技