1.1 容器技术

容器技术的兴起

容器技术是怎样兴起的呢?2007年谷歌实现的 cgroups 正式被添加到了Linux内核中,次年 LXC 发布,它是第一个 Linux 容器管理方案。但是从容器技术被提出直到2013年 Docker 的问世,容器技术一直不温不火,直到 Docker 出现后容器相关技术才兴起起来。在 LXC 出现以后为什么没有迅速火热起来呢?LXC 通过内核的 cgroup 和 namespace 特性实现了资源的限制和隔离,但是它并容易使用。随着云计算的发展,平台即服务(PaaS)的概念不断普及,服务部署成了摆在人们面前亟待解决的问题,各个厂商急需找到一套标准化的部署应用的方案。直到2013年,Docker 项目发布后,他对于应用打包的技术创新迅速赢得了开发者的心。开发者通过容器镜像可以非常方便的将自己的应用部署到各 PaaS 平台上。Docker 技术快速在开发者社区传播开来,带来了容器技术的大发展。

容器解决了什么问题

那容器技术到底解决了什么问题呢?就像 Docker 公司声明的 build, ship, run anywhere。Docker 解决的是应用打包、传输和运行的问题,我们可以通过 docker build 创建应用镜像,通过docker push、pull 传输镜像,通过 docker run 运行镜像。Docker 让应用的部署更方便,而容器本身又自带了对资源的限制和隔离能力。有了这些能力我们就可以轻松的将应用部署到 PaaS 平台上并互不影响的运行起来了。

容器的管理问题

随着我们运行的容器项目越来越多,如何对容器进行管理成了摆在开发者面前的问题。Docker 公司也开始意识到这个问题,于是发布了自己的容器编排服务 Docker Compose,随后发布了跨主机的应用编排服务 Docker Swarm。Docker Compose、Docker Swarm、Docker Machine 并称 Docker 公司的编排三剑客。随着 Docker 公司发布自己的容器编排服务,触动了 CoreOS、Google、RedHat 等PaaS 平台公司的利益,为了切割 Docker 公司在容器领域的话语权,Google 公司联和 RedHat 公司以 Google 公司的 Borg 为原型发布了 Kubernetes 容器编排项目。所谓容器编排就是指我们如何将我们的应用容器部署、运行到 PaaS 平台上,对于比较复杂的应用编排,容器编排服务需要帮我们处理应用间的拓扑关系,亲和性和反亲和性,服务发现及服务监控,以及网络、存储方案等等所有问题。而Docker Swarm 和 老牌的 Mesos 在处理复杂应用的编排问题上就捉襟见肘了,于是 Kubernetes 逐渐成为了编排领域的事实标准。

我录制的这套视频教程主要以实例的方式讲解如何将我们的应用部署到 Kubernetes 集群上,这是一个实践课程,需要你做在电脑旁边和我一起动手操作。