36.2. 创建作业


作业配置由以下关键部分组成:

  • pod 模板,用于描述 Pod 将创建的应用程序。
  • 可选的 parallelism 参数,用于指定并行运行多少个 pod 副本应执行作业。如果没有指定,则默认为 completions 参数中的值。
  • 可选的 completions 参数,用于指定并发运行 pod 应该执行某个作业的数量。若不指定,这个值默认为一。

以下是一个作业资源的示例 :

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  parallelism: 1    1
  completions: 1    2
  template:         3
    metadata:
      name: pi
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: OnFailure    4
  1. 可选值,定义一个作业应并行运行多少个 pod 副本 ; 默认为 completions
  2. 可选值,定义需要成功完成多少个 pod 才能将作业标记为完成;默认值为 1。
  3. 控制器创建的 pod 模板。
  4. pod 的重启策略。这不适用于作业控制器。详情请查看 第 36.2.1 节 “已知限制”

您还可以使用 oc run,在一个命令中创建并启动作业。以下命令会创建并启动与上一示例中指定的相同的作业:

$ oc run pi --image=perl --replicas=1  --restart=OnFailure \
    --command -- perl -Mbignum=bpi -wle 'print bpi(2000)'

36.2.1. 已知限制

作业规格重启策略只适用于 pod,不适用于作业控制器。不过,作业控制器被硬编码为可以一直重试直到作业完成为止。

因此,restartPolicy:Never--restart=Never 会产生与 restartPolicy 相同的行为:OnFailure--restart=OnFailure。也就是说,作业失败后会自动重启,直到成功(或被手动放弃)为止。策略仅设定由哪一子系统执行重启。

使用 Never 策略时,作业控制器负责执行重启。在每次尝试时,作业控制器会在作业状态中递增失败次数并创建新的 pod。这意味着,每次尝试失败都会增加 pod 的数量。

使用 OnFailure 策略时,kubelet 负责执行重启。每次尝试都不会在作业状态中递增失败次数。另外,kubelet 将通过在相同节点上启动 pod 来重试失败的作业。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.