Kubernetes1.21如何引入IndexedJobs特性
这篇文章主要为大家展示了“Kubernetes 1.21如何引入Indexed Jobs特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Kubernetes 1.21如何引入Indexed Jobs特性”这篇文章吧。
为昆山等地区用户提供了全套网页设计制作服务,及昆山网站建设行业解决方案。主营业务为成都网站设计、成都做网站、外贸网站建设、昆山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
一旦你将一个非并行作业(Job)容器化,就很容易在 Kubernetes 上启动并运行它,而无需修改二进制文件。在大多数情况下,当运行并行分布式作业时,你必须设置一个单独的系统来在工作资源之间划分工作。例如,你可以设置一个任务队列,将一个工作项分配给每个 Pod[2],或将多个项分配给每个 Pod,直到队列清空为止[3]。
Kubernetes 1.21 版本引入了一个新的字段来控制作业完成模式,这是一个配置选项,允许你控制 Pod 完成如何影响作业的总体进度,有两个可能的选项(目前):
NonIndexed(默认值):当成功完成的 Pods 的数量等于.spec.completions 中指定的数量时,作业被认为是完成的。换句话说,每一个 Pod 的完成都是彼此同源的。在引入完成模式之前创建的任何作业都是隐式非索引的。 Indexed:当有一个成功完成的 Pod 与从 0 到.spec.completions-1 的每个索引相关联时,作业被认为是完成的。该索引暴露于每一个 Pod 中的 batch.kubernetes.io/job-completion-index 注释和 JOB_COMPLETION_INDEX 环境变量。
你可以开始使用带有索引完成模式的作业,简称为索引作业(Indexed Jobs),来轻松启动并行作业。然后,每个 worker Pod 可以根据索引有一个静态分配的数据分区。这使你不必设置排队系统,甚至不必修改二进制文件!
创建索引作业
要创建一个索引作业,你只需添加 completionMode: Indexed 到作业规范中,并使用 JOB_COMPLETION_INDEX 环境变量。
apiVersion: batch/v1
kind: Job
metadata:
name: 'sample-job'
spec:
completions: 3
parallelism: 3
completionMode: Indexed
template:
spec:
restartPolicy: Never
containers:
- command:
- 'bash'
- '-c'
- 'echo "My partition: ${JOB_COMPLETION_INDEX}"'
image: 'docker.io/library/bash'
name: 'sample-load'
注意,完成模式是 1.21 版本中的一个 alpha 特性。为了能够在集群中使用它,请确保在 API 服务器和控制器管理器上启用了 IndexedJob 特性门。
当你运行该示例时,你将看到三个创建的 Pods 中的每一个都获得了不同的完成索引。为了方便用户,控制平面设置 JOB_COMPLETION_INDEX 环境变量,但是你可以选择设置自己的或将索引暴露为文件。
计划
SIG Apps 设想可能有更多的完成模式,为 Job API 启用更多的用例。我们欢迎你在kubernetes/kubernetes[5]中提出你的建议。
特别是,我们正在考虑一种 IndexedAndUnique 模式,其中索引不仅作为注释可用,而且是 Pod 名称的一部分,类似于 StatefulSet。这应该有助于紧密耦合的 Pod 之间的通信。你可以参加这个公开问题[6]的讨论。
总结
索引作业(Indexed Jobs)允许你在并行作业的作业之间静态地划分作业。SIG Apps 希望这个特性能够促进更多的批量工作负载迁移到 Kubernetes。
以上是“Kubernetes 1.21如何引入Indexed Jobs特性”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
分享标题:Kubernetes1.21如何引入IndexedJobs特性
文章路径:http://scjbc.cn/article/joccjc.html