Job概述
本模块提供了基于Kubernetes原生的Job的创建、配置、删除等生命周期的管理指南。
创建Job
您可以通过以下步骤在容器服务控制台通过镜像创建一个Job:
- 登录容器服务控制台。
- 在左侧导航栏中,选择Serverless集群,进入Serverless集群管理页面。
- 选择需要新建Job的集群,进入该集群操作页面。
- 选择工作负载 > Job,进入Job列表页。
- 单击页面左上角新建,根据实际需求完成配置,单击创建,即可新建Job。
以下为创建过程中的配置详情:
基本信息配置
- 名称:用户自定义Job的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾。
- 命名空间:选择Job所在集群的命名空间。
- 描述:创建Job的相关信息,用户自定义填写。
部署配置
Job设置

根据实际需求,您可以设置Job的关键参数:
- 重复次数:设置Job结束所需pod成功运行的次数,默认为1。
- 并行度:设置Job下pod并行执行的数量,默认为1。
- 失败重启策略:设置pod的容器异常退出时是否重启。
- Never: 失败容器不会重启,直至所有容器全部退出,新的pod会被启动。
- OnFailure: 失败容器将会重新启动,pod继续运行。
存储卷

- 类型:目前支持临时目录、金山云云硬盘、文件存储、已有PVC、使用ConfigMap/Secret。
- 存储卷名称:存储卷的名称。
- 资源名称:选择相应存储资源的名称。
- 其他信息:为Secret/Configmap类存储卷指定挂载选项。
备注:
当使用云硬盘作为存储卷时,存储卷的名称为云硬盘的id,不可修改。
容器配置

- 名称:容器的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾。
- 镜像:点击选择镜像,从镜像仓库中选择;或输入镜像仓库地址。
- 镜像版本:镜像的tag。
- 资源限制:设定容器所使用的CPU和内存资源的限制。
- 挂载点:当配置了存储卷时,为容器配置挂载点与读写权限。
- 环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数,目前仅支持手动添加。
镜像访问凭证
目前支持从私有镜像仓库拉取镜像时,为容器配置镜像访问凭证(对应yaml中的imagePullSecret)。

- 初始状态下提供默认选项ksyunregistrykey,可以匹配金山云镜像仓库中的私有镜像。
- 若您使用的镜像来自第三方私有镜像仓库,可以通过添加镜像访问凭证 > 使用新的访问凭证 > 设置访问凭证信息,设置新的访问凭证的名称,以及第三方仓库的域名、用户名、密码,即完成添加第三方私有镜像仓库访问凭证。
配置完成后,点击创建,返回Job列表页面,查询Job的状态。
Job基本操作
查看Job状态
在Job列表页面,即可查看当前命名空间下所有Job的运行状态。
- 实例个数(成功/全部):这一指标反映该job当前运行进展,全部实例代表Job设置中的重复次数,成功个数代表当前已经成功退出的pod数量。
点击Job名称进入某个Job的Pod列表,在状态栏中可以看到各pod当前的运行状态。
点击Job名称进入某个Job的详情页,在详情中的基本信息部分,也可以看到当前Job下不同状态pod的数量统计,状态包含“成功”,“失败”,“运行中”三种。
删除
点击Job列表中的删除,执行删除Job的操作。
点击Job名称进入某个Job的详情页,在pod列表中点击销毁实例,即可删除某Job下的特定实例。
Kubectl操作示例
在Job列表页面,可以通过YAML创建资源新建Job,也可以通过Job列表中的编辑YAML更新已有Job的配置。
以下提供一个YAML示例,创建一个Job执行计算π到2000位并打印输出。
pi-job.yaml如下:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
completions: 2
parallelism: 2
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
- spec.completions: Job结束所需pod成功运行的次数
- spec.parallelism: Job下pod并行执行的数量
- spec.template: Job管理的Pod的详细模板配置
- spec.backoffLimit: Job的容错次数,当达到这个值时不会再创建新的pod而会退出job,默认值为6
创建该job
# kubect apply -f pi-job.yaml
查看Job的状态
# kubectl get job