任务

任务会创建一个或者多个 Pod,并确保指定数量的 Pod 成功结束。随着 Pod 成功结束,任务跟踪记录成功结束的 Pod 数量。当达到指定的成功结束数量时,任务(即 Job)完成。删除任务的操作会清除其创建的全部 Pod。

在简单的使用场景中,您可以创建一个任务对象,以便可靠地运行一个 Pod 直到结束。当第一个 Pod 故障或者被删除(例如因为节点硬件故障或者节点重启)时,任务对象会启动一个新的 Pod。您也可以使用一个任务并行运行多个 Pod。

下面的示例演示了在 KubeSphere 中创建任务的具体步骤,该任务会计算 π 到小数点后 2000 位。

准备工作

您需要创建一个企业空间、一个项目和一个帐户 (project-regular),务必邀请该帐户到项目中并赋予 operator 角色。有关更多信息,请参见创建企业空间、项目、帐户和角色

创建任务

步骤 1:打开仪表板

project-regular 身份登录控制台。转到应用负载下的任务,点击创建

创建任务

步骤 2:输入基本信息

输入基本信息。请参考下图作为示例。

  • 名称:任务的名称,也是唯一标识符。
  • 别名:任务的别名,使资源易于识别。
  • 描述信息:任务的描述,简要介绍任务。

输入基本信息

步骤 3:任务设置(可选)

您可以参照下图在该步骤设置值,或点击下一步以使用默认值。有关每个字段的详细说明,请参考下表。

任务设置

名称定义描述信息
最大重试次数spec.backoffLimit指定将该任务视为失败之前的重试次数。默认值为 6。
完成数spec.completions指定该任务应该运行至成功结束的 Pod 的期望数量。如果设置为 nil,则意味着任何 Pod 成功结束即标志着所有 Pod 成功结束,并且允许并行数为任何正数值。如果设置为 1,则意味着并行数限制为 1,并且该 Pod 成功结束标志着任务成功完成。有关更多信息,请参见 Jobs
并行数spec.parallelism指定该任务在任何给定时间应该运行的最大期望 Pod 数量。当剩余工作小于最大并行数时 ((.spec.completions - .status.successful) < .spec.parallelism),实际稳定运行的 Pod 数量会小于该值。有关更多信息,请参见 Jobs
退出超时时限(单位:秒)spec.activeDeadlineSeconds指定该任务在系统尝试终止任务前处于运行状态的持续时间(相对于 stratTime),单位为秒;该值必须是正整数。

步骤 4:设置镜像

  1. 重启策略选择 Never。当任务未完成时,您只能将重启策略指定为 NeverOnFailure

    • 如果将重启策略设置为 Never,当 Pod 发生故障时,任务将创建一个新的 Pod,并且故障的 Pod 不会消失。

    • 如果将重启策略设置为 OnFailure,当 Pod 发生故障时,任务会在内部重启容器,而不是创建新的 Pod。

    设置镜像

  2. 点击添加容器镜像,它将引导您进入添加容器页面。在镜像搜索栏中输入 perl,然后按回车键。

    添加镜像

  3. 在该页面向下滚动到启动命令。在命令框中输入以下命令,计算 pi 到小数点后 2000 位并输出结果。点击右下角的 ,然后选择下一步继续。

    1. perl,-Mbignum=bpi,-wle,print bpi(2000)

    启动命令

    备注

    有关设置镜像的更多信息,请参见容器镜像设置

步骤 5:检查任务清单(可选)

  1. 在右上角启用编辑模式,显示任务的清单文件。您可以看到所有值都是根据先前步骤中指定的值而设置。

    1. apiVersion: batch/v1
    2. kind: Job
    3. metadata:
    4. namespace: cc
    5. labels:
    6. app: job-test-1
    7. name: job-test-1
    8. annotations:
    9. kubesphere.io/alias-name: Test
    10. kubesphere.io/description: A job test
    11. spec:
    12. template:
    13. metadata:
    14. labels:
    15. app: job-test-1
    16. annotations:
    17. kubesphere.io/containerSecrets: null
    18. spec:
    19. containers:
    20. - name: container-xv4p2o
    21. imagePullPolicy: IfNotPresent
    22. image: perl
    23. command:
    24. - perl
    25. - '-Mbignum=bpi'
    26. - '-wle'
    27. - print bpi(2000)
    28. restartPolicy: Never
    29. serviceAccount: default
    30. initContainers: []
    31. volumes: []
    32. imagePullSecrets: null
    33. backoffLimit: 5
    34. parallelism: 2
    35. completions: 4
    36. activeDeadlineSeconds: 300
  2. 您可以直接在清单文件中进行调整,然后点击创建,或者关闭编辑模式然后返回创建任务页面。

    备注

    您可以跳过本教程的挂载存储高级设置。有关更多信息,请参见挂载存储卷配置高级设置

步骤 6:检查结果

  1. 在最后一步高级设置中,点击创建完成操作。如果创建成功,将添加新条目到任务列表中。

    任务列表

  2. 点击此任务,然后转到执行记录选项卡,您可以在其中查看每个执行记录的信息。先前在步骤 3 中完成数设置为 4,因此有四个已结束的 Pod。

    执行记录

    提示

    如果任务失败,您可以重新运行该任务,失败原因显示在消息下。

  3. 资源状态中,您可以查看 Pod 状态。先前将并行数设置为 2,因此每次会创建两个 Pod。点击右侧的箭头,查看容器日志,如下所示,该日志显示了预期的计算结果。

    容器日志

    查看容器日志

    提示

    • 资源状态中,Pod 列表提供了 Pod 的详细信息(例如创建时间、节点、Pod IP 和监控数据)。
    • 您可以点击 Pod 查看容器信息。
    • 点击容器日志图标查看容器的输出日志。
    • 您可以点击 Pod 名称查看 Pod 详情页面。

查看任务详情

任务操作

在任务详情页面上,您可以在任务创建后对其进行管理。

  • 编辑信息:编辑基本信息,但名称无法编辑。
  • 重新执行:重新执行任务,Pod 将重启,并生成新的执行记录。
  • 查看配置文件:查看 YAML 格式的任务规格。
  • 删除:删除该任务并返回到任务列表页面。

任务操作

执行记录

  1. 点击执行记录选项卡查看任务的执行记录。

    execution-records

  2. 点击 任务 - 图13 刷新执行记录。

资源状态

  1. 点击资源状态选项卡查看任务的容器组。

    resource-status

  2. 点击 任务 - 图15 刷新 Pod 信息,点击 任务 - 图16/任务 - 图17 显示或隐藏每个 Pod 中的容器。

元数据

点击元数据选项卡查看任务的标签和注解。

metadata

环境变量

点击环境变量选项卡查看任务的环境变量。

env-variable

事件

点击事件选项卡查看任务的事件。

events