趋近智
如果您有使用容器的背景,关于 Kubernetes 的第一个问题可能是:“为什么我们需要在容器之上再加一层?”虽然容器提供了进程隔离和打包功能,但它们并没有解决如何管理共同部署且相互依赖的进程的问题。Kubernetes 通过引入一个不同的原子单元来解决这个问题:Pod。
Pod 是 Kubernetes 对象模型中您可以创建或部署的最小、最简单的单元。Kubernetes 管理的是 Pod,而不是单个容器。一个 Pod 代表集群中运行进程的单个实例,并为其包含的容器提供特定的执行环境。
可以将 Pod 看作是一台逻辑主机。就像物理机或虚拟机承载操作系统及其应用程序一样,一个 Pod 承载一个或多个紧密耦合的容器。这种“逻辑主机”抽象正是 Pod 如此高效的原因。单个 Pod 中的所有容器共享相同的环境和资源,其中包括:
localhost 互相查找并通信。例如,在同一个 Pod 中,container-a 中的 Web 服务器可以通过连接到 localhost:5432 与 container-b 中的数据库进行通信。这种共同部署模型简化了应用程序设计。您不需要在已知始终一起运行的进程之间配置复杂的发现机制。它们已经处于相同的网络和存储上下文中了。
Pod 为其容器提供了一个共享的执行环境。它们共享网络命名空间(IP 地址)并可以共享存储卷,从而实现紧密耦合的通信和数据交换。
Kubernetes 中最常见的模式是“每个 Pod 一个容器”模型。在这种设置下,Pod 作为一个包装器,在单个应用容器周围提供一致的管理层。虽然这看起来像是不必要的开销,但它允许 Kubernetes 为每个工作负载附加一套统一的行为(如健康检查和资源限制),无论其内部如何复杂。
Pod 模型的真正优势在多容器模式中得以体现。这种模式专门用于那些紧密耦合且需要共享资源的容器。将它们放在同一个 Pod 中是一个经过深思熟虑的设计决策。常见的多容器模式包括:
指导原则是:只有当容器之间紧密耦合、需要共享网络或文件系统等资源,并且应该作为单个单元调度到同一台机器上时,才将它们组合到单个 Pod 中。
最后需要理解的一个特征是,Pod 被设计为会消亡的,或者是瞬态的。它们并非旨在成为长期运行、持久存在的实体。当节点发生故障时,运行在该节点上的 Pod 就会丢失。Pod 不会自我修复或自行重新调度到新节点。
这听起来可能很脆弱,但这正是设计使然。Kubernetes 不是让单个 Pod 具备鲁棒性,而是使用更高级别的控制器(如 Deployment 和 ReplicaSet,我们将在下一章介绍)来管理 Pod 的生命周期。这些控制器负责替换失败的 Pod、处理扩缩容以及管理更新。因此,您很少会在生产环境中直接创建单个 Pod。然而,理解 Pod 作为基本构建模块对于使用管理它们的控制器来说非常必要。
有了这些基础,我们现在可以开始学习使用 YAML 清单定义和创建 Pod 的实际操作了。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造