Kubernetes源码剖析

郑东旭
前言 近几年,容器技术越来越普及。据Gartner预估,到2022年,全球将有75%的公司使用容器技术,而在2017年,这个比例还不到20%,这说明容器技术的发展非常迅速。容器技术的火热引发了容器编排技术的发展,目前最受欢迎的容器编排系统是Kubernetes,其引领着技术潮流,用于应对生产环境中编排容器所需的额外复杂度及成本。Kubernetes系统帮助企业加快了容器编排的速度,并实现了对多容器集群的大规模管理。它允许持续集成和交付、网络处理、服务发现及存储服务等,并具有在多云环境下进行操作的能力。 很多人都在说掌控了Kubernetes等于掌控了云计算的未来,这是为什么呢?在过去的几年里,Kubernetes发展飞速,社区也随之壮大,截至本书截稿时,Kubernetes项目在GitHub上已有接近6万个Star,拥有8万多次提交量。 Kubernetes系统已经越来越成熟,很多企业对它的应用从试水阶段逐步走向大规模落地阶段,但随着Kubernetes系统越来越稳定、成熟,代码的迭代能力逐渐变弱了。底层代码的成熟和健壮能够支撑更大的上层应用,这便让更多优秀的生态应用围绕着Kubernetes系统各自发展。这得益于Kubernetes系统的高扩展性,Kubernetes越来越像一个系统核心,对外提供通用接口,实现了众多标准化。另外,Kubernetes得到了许多云服务提供商(Cloud Provider)的支持,例如Google、Cisco、VMware、Microsoft、Amazon及许多其他大型公司。 建议读者在阅读Kubernetes源码的过程中,学习一些关于设计模式(Design Pattern)的知识,这样有助于大家理解源码的实现原理,而非只是泛泛地看代码。例如,在Go语言中常用NewXXX函数来实例化相关类,在设计模式中,其被称为简单工厂模式,该设计模式在G…