你正在构建一个应用程序,它最终会服务成千上万的用户。当你的应用程序只是一个简单的“程序包”时,你可能可以手动管理它。但当这个“程序包”需要运行几十、几百甚至几千份,并且要保证它们随时在线、协同工作时,手动管理就变得不可能。
这时候,你会想创建一个系统,它能像一个智能机器人一样,自动帮你管理这些应用程序副本。
让我们回到 K8s 诞生的地方——Google。
在 K8s 出现之前,也就是本世纪初的 Google,一群顶尖的工程师也面临着同样的问题,只不过规模要大得多:他们有数以万计的应用程序和数十万台服务器。手动部署、管理、扩缩这些应用程序简直是天文数字般的挑战。
于是,Google 内部诞生了一个名为 Borg 的系统。Borg 是一个高度自动化的集群管理系统,它能高效地在 Google 的服务器集群上调度和运行应用程序。Borg 的成功,使得 Google 能够以惊人的效率和规模运行其各项服务,从搜索到 Gmail,无一不是受益于其强大的自动化能力。
随着时间的推移,容器技术开始普及。Google 意识到,Borg 的核心理念和实践可以被抽象出来,并推广给更广泛的开发者社区。于是,借鉴 Borg 的理念与经验,Google 在 2014 年开源了一个全新的容器编排系统 —— Kubernetes (K8s)。
K8s 就像是 Borg 的“开源精华版”,将 Google 内部大规模系统管理的宝贵经验带给了全世界。
当你的应用程序需要在大规模分布式环境中稳定运行,并具备高可用性、弹性伸缩能力时,手动运维会迅速变得复杂且不可靠。
K8s 的存在,正是为了解决这些痛点,它提供了一套完整的解决方案,让你的应用程序能够“活下来、跑得好”:
简而言之,K8s 的核心用处在于将复杂的、手动的、易出错的分布式应用管理过程,转变为自动化、可靠且高效的模式。它让开发者和运维人员能够专注于应用程序本身,而不是底层的基础设施管理。
那么,有人就问了:既然 Docker Compose 也能管理多个容器,那 K8s 又有何不同?
关键在于它们设计的规模和场景:
K8s 的强大之处在于它的“声明式”管理模式。
当然,很多读者可能难以理解上述所说的“声明式”管理模式到底是怎么样的一个机制,不用着急,听我继续娓娓道来。