第七章:容器编排技术 世界上有两个设计软件的方法,一种方法是设计的尽量简单,以至于明显没有什么缺陷,另外一种方式是使他尽量的复杂,以至于其缺陷不那么明显。 —— by C.A.R. Hoare[^1] 随着容器化和微服务架构的普及,用手动的方式管理大量容器实例和微服务变得异常艰难。 为了减轻手动管理容器的心智负担,实现自动化容器的管理、调度、扩展和故障恢复,容器编排系统应运而生。过去十年间,Kubernetes 发展成为容器编排系统的事实标准,成为大数据分析、机器学习以及在线服务等领域广泛认可的最佳技术底座。然而,Kubernetes 在解决复杂问题的同时,本身也演变成当今最复杂的软件系统之一。
世界上有两个设计软件的方法,一种方法是设计的尽量简单,以至于明显没有什么缺陷,另外一种方式是使他尽量的复杂,以至于其缺陷不那么明显。
:::right
—— by C.A.R. Hoare1
:::
随着容器化和微服务架构的普及,用手动的方式管理大量容器实例和微服务变得异常艰难。
为了减轻手动管理容器的心智负担,实现自动化容器的管理、调度、扩展和故障恢复,容器编排系统应运而生。过去十年间,Kubernetes 发展成为容器编排系统的事实标准,成为大数据分析、机器学习以及在线服务等领域广泛认可的最佳技术底座。然而,Kubernetes 在解决复杂问题的同时,本身也演变成当今最复杂的软件系统之一。
目前,包括官方文档在内的大多数 Kubernetes 资料都聚焦于“怎么做”,鲜有对“为什么这么做”进行解释。自 2015 年起,Google 陆续发布了《Borg, Omega, and Kubernetes》及《Large-scale cluster management at Google with Borg》等论文,分享了开发和运维 Borg、Omega 和 Kubernetes 系统的经验与教训。本章,我们先了解 Google 内部容器系统是怎么演变的。汲取背后的设计思想后,再来深入理解 Kubernetes 中 关于容器设计模式、网络通信、持久化存储、资源模型和编排调度等方面的设计原理和应用。本章内容安排如图 7-0 所示。
:::center
图 7-0 本章内容导图
:::
Charles Antony Richard Hoare(缩写为 C. A. R. Hoare),著名的计算科学家,图灵奖获得者,以设计了快速排序算法、霍尔逻辑、通信顺序进程闻名。 ↩