任务

Kubernetes v1.16 版本的文档已不再维护。您现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。

Edit This Page

联邦 Job

已过时

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

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

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

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

准备开始

创建一个联邦 job

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

你可以使用 kubectl 来运行:

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

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

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

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:

kubectl --context=federation-cluster delete job myjob
注意:

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

反馈