使用k8s的理由很多,最根本的一个理由就是:IT从来都是由一个新技术驱动的行业。
docker这个新兴的容器化技术当前已经被很多公司所采用,其从单机走向集群也称为必然,而云计算的蓬勃发展正在加速这一进程。kubernetes作为当前唯一被业界广泛认可和看好的docker分布式系统解决方案,可以预见,会有大量的新系统选择它,不管这些系统是运行在企业本地服务器还是被托管到公有云上。
那么使用了k8s又会收获哪些好处呢?
首先,最直接的感受就是我们可以“轻装上阵”地开发复杂系统了,以前动不动就需要十几个人才能设计实现和运维的分布式系统,在采用k8s解决方案后,只需要一个小团队就能轻松应对。团队中,一名架构师负责系统中“服务组件”的提炼,几名开发工程师专注于业务代码的开发,一名系统兼运维工程师负责k8s的部署和运维,从此再也不用996了,这并不是因为我们少做了什么,而是因为k8s已经帮我们做了很多。
其次,使用k8s就是在全面拥抱微服务架构,微服务架构的核心是将一个巨大的单体应用分解为很多小的互相连接的微服务,一个微服务背后可能有多个实例副本在支撑,副本的数量可能会随着系统的负荷变化而进行调整,内嵌的负载均衡器发挥了重要作用。微服务架构使得每个服务都可以由专门的开发团队来开发,开发者可以自由选择开发技术,这对于大规模团队来说很有价值,另外每个微服务独立开发,升级,拓展,因此系统具备很高的稳定性和快速迭代进化能力。谷歌、亚马逊、eBay等都采用了微服务架构,此次谷歌更是将微服务架构的基础设施直接打包到k8s解决方案中,让我们有机会直接应用微服务架构解决复杂业务系统的架构问题。
然后我们系统可以随时随地整体搬迁到公有云上,k8s最初的目标就是运行在谷歌自家的公有云GCE上,未来会支持更多的共有云以及基于OpenStack的私有云。同时,在k8s的架构方案中,底层网络的细节完全被屏蔽,基于服务的cluster ip甚至都无需我们改变运行期的配置文件,就能将系统从物理机环境中无缝迁移到公有云中,或者再服务高峰期将部分服务对应的Pod副本放入公有云中以提升系统的吞吐量,不仅节省了公司的硬件投入,还大大改善了客户体验,我们所了解的铁道部12306购票系统,在春节高峰期就租用了阿里云进行分流。
最后,k8s系统架构具有超强的横向扩容能力。对于互联网公司来说,用户规模就等价于资产,谁拥有更多的客户,谁就能在竞争,因此超强的横向扩容能力是互联网业务系统的关键指标之一,不用修改代码,一个k8s集群即可从只包含几个node的小集群平滑拓展到拥有上百个node的大规模集群,我们利用k8s提供的工具,甚至可以在线完成集群扩容。只要我们的微服务设计得好,结合硬件或者公有云资源的线性增加,系统就可以承受大量用户并发访问所带来的巨大压力。
总结一下:
- 社区活跃。
- “轻装上阵”的开发复杂系统。
- 运维难度和运维成本的降低。
- 拥抱微服务,更高的服务可用性。
- 云环境无缝迁移。
- 集群横向扩展。
部分内容来自<Kubernetes权威指南第四版>。