工作负载

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

工作负载是在 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 日上午 9:25(太平洋标准时间):修改文档主页 (9520b96a61)