工作负载管理

Kubernetes 提供了几种内置 API,用于声明性管理您的 工作负载以及这些工作负载的组件。

最终,您的应用程序作为容器在 Pod 中运行;但是,管理单个 Pod 会耗费大量精力。例如,如果 Pod 失败,您可能希望运行一个新的 Pod 来替换它。Kubernetes 可以为您做到这一点。

您可以使用 Kubernetes API 创建一个工作负载 对象,该对象表示比 Pod 更高级别的抽象。然后,Kubernetes 控制平面 会根据您定义的工作负载对象规范,代表您自动管理 Pod 对象。

用于管理工作负载的内置 API 包括

Deployment(以及间接的 ReplicaSet),这是在集群上运行应用程序的最常见方式。Deployment 非常适合管理集群上的无状态应用程序工作负载,其中 Deployment 中的任何 Pod 都是可互换的,如果需要可以替换。 (Deployment 是遗留 ReplicationController API 的替代品)。

一个 StatefulSet 允许您管理一个或多个 Pod – 所有 Pod 运行相同的应用程序代码 – 其中 Pod 依赖于具有不同的标识。这与 Deployment 不同,在 Deployment 中,Pod 预计是可互换的。StatefulSet 的最常见用途是能够在其 Pod 与持久存储之间建立链接。例如,您可以运行一个 StatefulSet,将每个 Pod 与一个 PersistentVolume 关联。如果 StatefulSet 中的一个 Pod 失败,Kubernetes 会创建一个替换 Pod,该 Pod 连接到相同的 PersistentVolume。

一个 DaemonSet 定义了为特定 节点提供本地设施的 Pod;例如,一个驱动程序,允许该节点上的容器访问存储系统。当驱动程序或其他节点级服务需要在其有用的节点上运行时,您可以使用 DaemonSet。DaemonSet 中的每个 Pod 执行类似于经典 Unix / POSIX 服务器上的系统守护进程的角色。DaemonSet 可能对集群的运行至关重要,例如,一个插件可以让该节点访问 集群网络,它可能帮助您管理节点,或者它可以提供增强容器平台的非必要设施。您可以将 DaemonSet(及其 Pod)运行在集群中的每个节点上,或仅运行在子集上(例如,仅在安装了 GPU 的节点上安装 GPU 加速器驱动程序)。

您可以使用 Job 和 / 或 CronJob 来定义运行至完成然后停止的任务。Job 代表一次性任务,而每个 CronJob 根据计划重复执行。

本节中的其他主题

上次修改时间:2024 年 1 月 14 日下午 2:20 PST:重命名概念部分 (6160a5e137)