工作负载
了解 Pod,Kubernetes 中最小的可部署计算对象,以及帮助您运行它们的更高级别的抽象。
工作负载是在 Kubernetes 上运行的应用程序。无论您的工作负载是一个组件还是几个协同工作的组件,您都可以在 Kubernetes 上将其运行在一组 Pod 中。在 Kubernetes 中,Pod 表示在您的集群中运行的一组 容器。
Kubernetes Pod 具有 定义的生命周期。例如,一旦 Pod 在您的集群中运行,那么 节点 上发生的严重故障会导致该节点上的所有 Pod 失败。Kubernetes 将此级别的故障视为最终状态:您需要创建一个新的 Pod 来恢复,即使该节点后来恢复了健康状态。
但是,为了让生活更轻松,您无需直接管理每个 Pod。相反,您可以使用工作负载资源来代表您管理一组 Pod。这些资源配置 控制器,以确保运行正确数量的正确类型的 Pod,以匹配您指定的 state。
Kubernetes 提供了几种内置的工作负载资源
- Deployment 和 ReplicaSet(替换旧的资源 ReplicationController)。Deployment 非常适合在您的集群中管理无状态应用程序工作负载,其中 Deployment 中的任何 Pod 都是可互换的,并且可以在需要时进行替换。
- StatefulSet 允许您运行一个或多个相关 Pod,这些 Pod 以某种方式跟踪状态。例如,如果您的工作负载持久地记录数据,您可以运行一个 StatefulSet,将每个 Pod 与一个 PersistentVolume 匹配。您的代码(在该 StatefulSet 的 Pod 中运行)可以将数据复制到同一 StatefulSet 中的其他 Pod,以提高整体弹性。
- DaemonSet 定义为节点本地提供设施的 Pod。每次您将与 DaemonSet 中规范匹配的节点添加到集群时,控制平面都会为该 DaemonSet 在新节点上调度一个 Pod。DaemonSet 中的每个 Pod 执行类似于经典 Unix/POSIX 服务器上的系统守护进程的工作。DaemonSet 可能是您的集群运行的基础,例如运行 集群网络 的插件,它可能有助于您管理节点,或者它可以提供可选的行为来增强您正在运行的容器平台。
- Job 和 CronJob 提供不同的方法来定义运行到完成然后停止的任务。您可以使用 Job 来定义仅运行一次的任务,直到完成。您可以使用 CronJob 根据计划多次运行相同的 Job。
在更广泛的 Kubernetes 生态系统中,您可以找到提供额外行为的第三方工作负载资源。使用 自定义资源定义,如果您想要 Kubernetes 核心不包含的特定行为,则可以添加第三方工作负载资源。例如,如果您想为您的应用程序运行一组 Pod,但在所有 Pod 都可用之前停止工作(可能是为了完成一些高吞吐量分布式任务),那么您可以实现或安装提供该功能的扩展。
下一步
除了阅读有关每个工作负载管理 API 类型的介绍外,您还可以阅读如何执行特定任务
- 使用 Deployment 运行无状态应用程序
- 运行有状态的应用程序,可以是 单实例,也可以是 复制集
- 使用 CronJob 运行自动化任务
要了解 Kubernetes 将代码与配置分开的机制,请访问 配置。
有两个支持概念提供了有关 Kubernetes 如何为应用程序管理 Pod 的背景信息
- 垃圾回收 在其拥有资源被删除后清理掉集群中的对象。
- 完成后的生存时间控制器 在 Job 完成后经过一定时间后会将其删除。
上次修改时间:2023 年 7 月 12 日 上午 1:25 PST:修改 docs 主页 (9520b96a61)