工作负载

了解 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,这些 Pod 以某种方式跟踪状态。例如,如果您的工作负载持久记录数据,您可以运行一个 StatefulSet,将每个 Pod 与 PersistentVolume 匹配。在您的 StatefulSet 的 Pod 中运行的代码可以将数据复制到同一 StatefulSet 中的其他 Pod,以提高整体弹性。
  • DaemonSet 定义了为节点提供本地设施的 Pod。每次您将与 DaemonSet 规范匹配的节点添加到集群时,控制平面都会在该新节点上为该 DaemonSet 安排一个 Pod。DaemonSet 中的每个 Pod 执行类似于经典 Unix / POSIX 服务器上的系统守护进程的工作。DaemonSet 可能对您的集群的运行至关重要,例如运行 集群网络的插件,它可能帮助您管理节点,或者它可以提供增强容器平台的可选行为。
  • JobCronJob 提供了定义运行至完成然后停止的任务的不同方法。您可以使用 Job 定义仅运行一次的任务。您可以使用 CronJob 根据计划多次运行相同的 Job。

在更广泛的 Kubernetes 生态系统中,您可以找到提供其他行为的第三方工作负载资源。使用 自定义资源定义,如果您想要 Kubernetes 核心未包含的特定行为,您可以添加第三方工作负载资源。

工作负载放置

特性状态: Kubernetes v1.35 [alpha](默认禁用)

虽然标准工作负载资源(如 Deployment 和 Job)管理 Pod 的生命周期,但您可能具有复杂的调度要求,其中一组 Pod 必须被视为单个单元。

工作负载 API 允许您定义一组 Pod 并应用高级调度策略,例如 Gang 调度。这对于批处理和机器学习工作负载特别有用,在这些工作负载中,需要“全有或全无”的放置。

接下来

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

要了解 Kubernetes 分离代码和配置的机制,请访问 配置

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

  • 垃圾回收 在删除其拥有资源后清理集群中的对象。
  • 完成后的生存时间控制器在定义的时间段过去后删除 Job。

一旦您的应用程序运行起来,您可能希望将其作为 Service 在互联网上可用,或者仅用于 Web 应用程序,使用 Ingress

上次修改时间:2025年11月18日 上午11:47 PST:KEP-4671 添加 Workload API 和 Gang 调度文档 (fda060d1fe)