工作负载
理解 Pod:Kubernetes 中最小的可部署计算对象,以及帮助运行它们的高层抽象。
工作负载是在 Kubernetes 上运行的应用程序。无论你的工作负载是单个组件还是多个协同工作的组件,在 Kubernetes 上,你都将其运行在一组 Pod 中。在 Kubernetes 中,Pod 表示在集群上运行的一组 容器。
Kubernetes Pod 具有 明确定义的生命周期。例如,一旦 Pod 在集群中运行,那么该 Pod 运行所在的节点上发生严重故障,意味着该节点上的所有 Pod 都会失败。Kubernetes 将这种级别的故障视为最终状态:即使节点后来恢复正常,你也需要创建一个新的 Pod 来恢复。
然而,为了极大地简化工作,你无需直接管理每个 Pod。相反,你可以使用代表你管理一组 Pod 的 工作负载资源。这些资源会配置 控制器,以确保正确数量的正确类型的 Pod 正在运行,从而匹配你指定的状态。
Kubernetes 提供了几种内置的工作负载资源
- Deployment 和 ReplicaSet(取代了旧资源 ReplicationController)。Deployment 非常适合管理集群上的无状态应用工作负载,其中 Deployment 中的任何 Pod 都是可互换的,可以在需要时替换。
- StatefulSet 允许你运行一个或多个以某种方式跟踪状态的相关 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 完成后经过定义的时间后将其移除。
应用程序运行后,你可能希望将其作为 Service 对互联网可用,或者,仅适用于 Web 应用程序,使用 Ingress。
最后修改时间:2023 年 7 月 12 日 凌晨 1:25 (PST): 修订文档首页 (9520b96a61)