毫不夸张地说,Kubernetes 是一个颠覆性云原生生态编排平台,因为它为云部署提供了可扩展性、速度、可移植性以及可观察性。尽管它带来了一个包含强大功能和选项的完整生态系统并简化了复杂的部署,但它也有其自身的挑战。
作为 Kubernetes 生态中可以调度的最小可部署单元,并在应用声明性配置后进行调度。Pod 封装了应用程序容器、存储资源、唯一的网络 IP 和控制容器应如何运行的选项。理想情况下,Pod 不直接部署在集群上,而是使用更高级别的抽象。应用程序通常通过更高级别的结构进行部署,例如部署、副本集、守护程序集、有状态集或作业。
当我们尝试在 Kubernetes 中创建一个 Pod 或 Deployment 时,幕后究竟发生了什么?让我们基于下图进行揭晓:
备注:大家可能会注意到上图中没有对 Etcd 组件进行标注,原因很简单,Api Server 是唯一可以直接与 Etcd 对话的组件,并且只有它可以对其进行更改。因此,我们可以假设 Etcd 位于 Api 服务后面并隐藏在此图中。除此之外,我在这里只谈论两个核心的控制器,其他的也将以类似的方式工作。