工作负载
了解 Pods,这是 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:修订文档主页 (9520b96a61)