Google通过产品的不断迭代解决了这个问题:我们构建了一个管理系统,它可以用来管理集群、网络以及命名系统。这个管理系统的第一个版本被称为Brog,它的后续的版本称为Omega。通过这个管理系统,我们可以在Google的大规模的集群资源上使用容器技术。我们现在每秒会启动大约7000个容器,每周可能会超过20亿个容器。我们利用Google在容器技术上的实践经验和技术积累,构建了Kubernetes(在论坛上有些时候被简写为K8s)。
Kubernetes从另一个角度对资源进行抽象,它让开发人员和管理人员共同着眼于服务的行为和性能的提升,而不是仅仅关注单一的组件或者是基础资源。
那么Kubernetes集群到底提供了哪些单一容器所没有的功能?它主要关注的是对服务级别的控制而并非仅仅是对容器级别的控制,Kubernetes提供了一种“机智”的管理方式,它将服务看成一个整体。在Kubernete的解决方案中,一个服务甚至可以自我扩展,自我诊断,并且容易升级。例如,在Google中,我们使用机器学习技术来保证每个运行的服务的当前状态都是最高效的。
如果说单一容器能够帮助开发者减少部署工作的繁琐,那么Kubernetes就可以最大化的减少团队开发过程中协同工作的复杂性。Kubernets可以让团队以容器的方式将服务结合在一起,并且让这些容器按照指定的规则来进行部署,以确保服务能够正确运行。在传统的方式下,由于缺乏隔离性,服务之间或服务之间的各个部分很容易产生相互干扰,但是通过Kubernetes,这些矛盾可以从系统的角度上被避免,在Google,通过使用这种增强的协同工作的方式,开发者的生产力得以提高,服务的可用性也进一步增强,这也使得在大规模的集群上的部署变得更加敏捷。
然而我们的技术仍然处于早期的发展阶段。目前,Kubernetes已经被许多客户和公司的知名团队所采用,包括RedHat 、VMware、CoreOS以及Mesosphere等等。这些公司迫切地希望通过Kubernete进行的规模化部署来帮助他们的客户提取出容器技术的商业价值。
Google Container Engine在Google的云平台上引入了“容器即服务”的理念。基于Kubernetes的技术,容器引擎为开发者提供了快速构建和运行容器的方法,此外,容器引擎还可以对容器进行部署、管理、并且使容器按着设定的边界进行扩展。在接下来的文章中我们会对容器引擎进行更多的介绍。
Deployment options我们可以看到,容器化技术已经成为了计算模型演化的一个开端,Google在这场技术革命中扮演重着要的角色。随着读者开始逐渐接触容器,并对容器部署方式了解不断深入,在实际服务部署中,可以对下面几种方式进行调研,并从中选出最适合的一种:
如果你打算运行一个被管理的集群或者启动几十个容器,使用Google Container Engine试一试。如果你想要在共有的基础设施上或者是自己的系统中构建自己的集群,可以使用Kubernetes来操作。想要在已经被管理好的基础设施上运行一个容器,可以尝试使用Google App Engine或者是Managed VMs。
最后,我们要说明的是,我们对你的使用容器技术的经历,对容器技术的需求以及想法(甚至你在github中提出的每个请求)都很感兴趣。不要犹豫,请联系我们,我们会尽所能举办尽量多的会议和Meetup。我们期望能与你联系。让我们一起讨论关于容器技术如何给你的工作带来改变。期待与你交流!