工作负载

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

工作负载是在 Kubernetes 上运行的应用程序。无论您的工作负载是一个组件还是几个协同工作的组件,您都可以在 Kubernetes 上将其运行在一组 Pod 中。在 Kubernetes 中,Pod 表示在您的集群中运行的一组 容器

Kubernetes Pod 具有 定义的生命周期。例如,一旦 Pod 在您的集群中运行,那么 节点 上发生的严重故障会导致该节点上的所有 Pod 失败。Kubernetes 将此级别的故障视为最终状态:您需要创建一个新的 Pod 来恢复,即使该节点后来恢复了健康状态。

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

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 核心不包含的特定行为,则可以添加第三方工作负载资源。例如,如果您想为您的应用程序运行一组 Pod,但在所有 Pod 都可用之前停止工作(可能是为了完成一些高吞吐量分布式任务),那么您可以实现或安装提供该功能的扩展。

下一步

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

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

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

一旦您的应用程序运行,您可能希望将其作为 服务 公开在互联网上,或者,对于 Web 应用程序,使用 Ingress

上次修改时间:2023 年 7 月 12 日 上午 1:25 PST:修改 docs 主页 (9520b96a61)