联邦 Job

已过时

强烈建议不要使用联邦 v1 版本联邦 v1 版本从未达到 GA 状态,且不再处于积极开发阶段。文档仅作为历史参考。

有关更多信息,请参阅预期的替代品 Kubernetes 联邦 v2 版本

本指南解释了如何在联邦控制平面中使用 job。

联邦控制平面中的一次性任务(在本指南中称为“联邦一次性任务”)类似于传统的 Kubernetes 一次性任务,并且提供相同的功能。 在联邦控制平面中创建 job 可以确保在已注册的集群中存在所需的并行性和完成数。

准备开始

  • 本指南假设您已安装有一个正在运行的 Kubernetes 集群联邦。如果没有,那么请转到 联邦管理指南,了解如何启动联邦集群(或者让集群管理员为您执行此操作)。 其他教程,例如 Kelsey Hightower 的联邦 Kubernetes 教程, 也可能帮助您创建联邦 Kubernetes 集群。

  • 你需要具备基本的 Kubernetes 的工作知识,特别是 job

创建一个联邦 job

用于联邦 job 的 API 与用于传统 Kubernetes job 的 API 完全兼容。您可以通过向联邦 apiserver 发送请求来创建 job。

你可以使用 kubectl 来运行:

  1. kubectl --context=federation-cluster create -f myjob.yaml

--context=federation-cluster 参数告诉 kubectl 将请求提交到联邦 API 服务器,而不是发送到 Kubernetes 集群。

一旦创建了联邦 job,联邦控制平面将在所有底层 Kubernetes 集群中创建一个 job。 你可以通过检查每个集群底层来验证这一点,例如:

  1. kubectl --context=gce-asia-east1a get job myjob

前面的示例假设你的客户端中为该区域中的集群配置了一个名为 gce-asia-east1a 的上下文。

集群底层中的 job 与联邦 job 匹配,但并行性和完成数不匹配。 联邦控制平面确保每个集群中的并行性和完成数之和与联合作业中所需的并行度和完成数匹配。

将 job 任务分散到集群底层中

默认情况下,并行性和完成数在所有底层集群中平均分布。例如: 如果你有 3 个已注册的集群,并且创建了一个联邦 job spec.parallelism = 9spec.completions = 18,那么 3 个集群中的每个 job 都有 spec.parallelism = 3spec.completions = 6。 要修改每个集群中的并行性和完成数,可以指定 ReplicaAllocationPreferences 作为 federation.kubernetes.io/job-preferences 联邦 job 上的 key 的注释。

更新联邦 job

可以像更新 Kubernetes job 一样更新联邦 job;但是,对于联邦 job,必须将请求发送到联邦 API 服务器,不是发送到指定的 Kubernetes 集群。 联邦控制平面确保无论何时更新联邦 job,它都会更新所有集群底层中的相应 job 以匹配它。

如果您的更新包含并行性和完成数的更改,则联邦控制平面将更改集群底层中的并行性和完成数, 确保它们的总和仍然等于联邦 job 中所需的并行性和完成数。

删除联邦 job

可以删除联邦 job,就像删除 Kubernetes job 一样;但是,对于联邦 job,必须将请求发送到联邦 API 服务器,不是发送到指定的 Kubernetes 集群。

例如,使用 kubectl:

  1. kubectl --context=federation-cluster delete job myjob

注意:

删除联邦作业不会从基础集群中删除相应的 job。 您必须手动删除基础 job。