工作负载
了解 Pod,Kubernetes 中最小的可部署计算对象,以及帮助你运行它们的高级抽象。
工作负载是在 Kubernetes 上运行的应用程序。无论你的工作负载是单个组件还是多个协同工作的组件,在 Kubernetes 上你都将它运行在一组 Pod 中。在 Kubernetes 中,Pod 代表集群上运行的一组容器。
Kubernetes Pod 具有定义的生命周期。例如,一旦 Pod 在你的集群中运行,那么运行该 Pod 的节点上的关键故障意味着该节点上的所有 Pod 都将失败。 Kubernetes 将该级别的故障视为最终故障:你需要创建一个新的 Pod 才能恢复,即使该节点后来变得健康。
但是,为了让生活更轻松,你无需直接管理每个 Pod。相反,你可以使用工作负载资源,这些资源代表你管理一组 Pod。 这些资源配置控制器,以确保运行正确数量的正确类型的 Pod,以匹配你指定的状态。
Kubernetes 提供了几个内置的工作负载资源
- Deployment 和 ReplicaSet(替换了旧的资源 ReplicationController)。 Deployment 非常适合管理集群上的无状态应用程序工作负载,其中 Deployment 中的任何 Pod 都是可互换的,并且可以在需要时替换。
- StatefulSet 允许你运行一个或多个以某种方式跟踪状态的相关 Pod。 例如,如果你的工作负载持久记录数据,则可以运行一个 StatefulSet,该 StatefulSet 将每个 Pod 与一个PersistentVolume 匹配。 你的代码在 StatefulSet 的 Pod 中运行,可以将数据复制到同一 StatefulSet 中的其他 Pod,以提高整体弹性。
- DaemonSet 定义了提供节点本地设施的 Pod。 每次你将与 DaemonSet 中的规范匹配的节点添加到集群时,控制平面都会将该 DaemonSet 的 Pod 调度到新节点上。 DaemonSet 中的每个 Pod 执行的任务类似于经典 Unix/POSIX 服务器上的系统守护进程。 DaemonSet 可能对你的集群的运行至关重要,例如运行集群网络的插件,它可以帮助你管理节点,或者它可以提供增强你正在运行的容器平台的可选行为。
- Job 和 CronJob 提供了不同的方法来定义运行到完成然后停止的任务。 你可以使用 Job 定义一次运行到完成的任务。 你可以使用 CronJob 根据计划多次运行同一 Job。
在更广泛的 Kubernetes 生态系统中,你可以找到提供额外行为的第三方工作负载资源。 使用自定义资源定义,如果你想要 Kubernetes 核心不具备的特定行为,则可以添加第三方工作负载资源。 例如,如果你想为应用程序运行一组 Pod,但除非所有 Pod 都可用(可能用于某些高吞吐量分布式任务),否则停止工作,那么你可以实现或安装一个提供该功能的扩展。
下一步
除了阅读有关工作负载管理的每种 API 类型外,你还可以阅读如何执行特定任务
- 使用 Deployment 运行无状态应用程序
- 以单实例或复制集的形式运行有状态应用程序
- 使用 CronJob 运行自动化任务
要了解 Kubernetes 用于将代码与配置分离的机制,请访问配置。
有两个支持概念提供了有关 Kubernetes 如何管理应用程序 Pod 的背景
- 垃圾回收会在对象的所有者资源被删除后清理集群中的对象。
- 完成后的生存时间控制器会在定义的自 Job 完成以来经过的时间之后删除 Job。
上次修改时间:2023 年 7 月 12 日凌晨 1:25 (PST):修订文档主页 (9520b96a61)