工作负载

了解 Pod,Kubernetes 中最小的可部署计算对象,以及帮助你运行它们的高级抽象。

工作负载是在 Kubernetes 上运行的应用程序。无论你的工作负载是单个组件还是多个协同工作的组件,在 Kubernetes 上你都将它运行在一组 Pod 中。在 Kubernetes 中,Pod 代表集群上运行的一组容器

Kubernetes Pod 具有定义的生命周期。例如,一旦 Pod 在你的集群中运行,那么运行该 Pod 的节点上的关键故障意味着该节点上的所有 Pod 都将失败。 Kubernetes 将该级别的故障视为最终故障:你需要创建一个新的 Pod 才能恢复,即使该节点后来变得健康。

但是,为了让生活更轻松,你无需直接管理每个 Pod。相反,你可以使用工作负载资源,这些资源代表你管理一组 Pod。 这些资源配置控制器,以确保运行正确数量的正确类型的 Pod,以匹配你指定的状态。

Kubernetes 提供了几个内置的工作负载资源

  • DeploymentReplicaSet(替换了旧的资源 ReplicationController)。 Deployment 非常适合管理集群上的无状态应用程序工作负载,其中 Deployment 中的任何 Pod 都是可互换的,并且可以在需要时替换。
  • StatefulSet 允许你运行一个或多个以某种方式跟踪状态的相关 Pod。 例如,如果你的工作负载持久记录数据,则可以运行一个 StatefulSet,该 StatefulSet 将每个 Pod 与一个PersistentVolume 匹配。 你的代码在 StatefulSet 的 Pod 中运行,可以将数据复制到同一 StatefulSet 中的其他 Pod,以提高整体弹性。
  • DaemonSet 定义了提供节点本地设施的 Pod。 每次你将与 DaemonSet 中的规范匹配的节点添加到集群时,控制平面都会将该 DaemonSet 的 Pod 调度到新节点上。 DaemonSet 中的每个 Pod 执行的任务类似于经典 Unix/POSIX 服务器上的系统守护进程。 DaemonSet 可能对你的集群的运行至关重要,例如运行集群网络的插件,它可以帮助你管理节点,或者它可以提供增强你正在运行的容器平台的可选行为。
  • JobCronJob 提供了不同的方法来定义运行到完成然后停止的任务。 你可以使用 Job 定义一次运行到完成的任务。 你可以使用 CronJob 根据计划多次运行同一 Job。

在更广泛的 Kubernetes 生态系统中,你可以找到提供额外行为的第三方工作负载资源。 使用自定义资源定义,如果你想要 Kubernetes 核心不具备的特定行为,则可以添加第三方工作负载资源。 例如,如果你想为应用程序运行一组 Pod,但除非所有 Pod 都可用(可能用于某些高吞吐量分布式任务),否则停止工作,那么你可以实现或安装一个提供该功能的扩展。

下一步

除了阅读有关工作负载管理的每种 API 类型外,你还可以阅读如何执行特定任务

要了解 Kubernetes 用于将代码与配置分离的机制,请访问配置

有两个支持概念提供了有关 Kubernetes 如何管理应用程序 Pod 的背景

一旦你的应用程序运行,你可能希望通过服务或仅针对 Web 应用程序使用Ingress在 Internet 上使其可用。

上次修改时间:2023 年 7 月 12 日凌晨 1:25 (PST):修订文档主页 (9520b96a61)