工作负载

理解 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,将每个 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 的背景信息

应用程序运行后,你可能希望将其作为 Service 对互联网可用,或者,仅适用于 Web 应用程序,使用 Ingress

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