You need to enable JavaScript to run this app.
导航
任务
最近更新时间:2024.12.18 19:21:17首次发布时间:2024.12.06 12:08:42

任务是指一次性运行的任务,部署完成后即可执行,执行成功后即退出。对应 Kubernetes 中的 Job。更多详细介绍参见:Kubernetes 官网文档

创建任务

  1. 登录 容器服务控制台
  2. 在集群管理页面的左侧导航栏,选择 集群,并在集群管理页面,单击目标注册集群名称。
  3. 在注册集群左侧导航栏选择 工作负载 > 任务,进入任务管理页面。
  4. 单击 创建任务,根据引导提示配置参数。所有参数配置完成后单击 确定,即可开始创建任务。
  • 配置工作负载相关基本信息,完成后单击 下一步:容器配置

alt

配置项说明
名称自定义任务的名称。要求在同一个命名空间下,名称必须唯一。
命名空间选择任务部署的命名空间,支持选择自定义创建的命名空间或 Kubernetes 自建的命名空间。
标签单击 添加标签,自定义配置任务的标签。对应 Kubernetes 中的 Label,用于识别任务的键值对,配合选择器,帮助 Kubernetes 快速筛选目标任务。例如service.istio.io/canonical-revision:latest
注解单击 添加注解,自定义配置任务的注解信息。对应 Kubernetes 中的 Annotation,主要记录用于应用部署、安全策略、调度策略的附加信息,不用于标识和区分资源。
同步时区开启后,容器与节点使用相同时区,以节点本地所属时区的 CST(Central Standard Time)时区为准。
  • 配置容器相关信息,完成后单击 下一步:高级配置

alt

配置项说明
容器名称根据系统提示的命名规则,输入容器名称。同一个工作负载下容器名称必须唯一。

容器镜像

容器使用的镜像。支持使用第三方镜像和镜像仓库(CR) 中的镜像:

  • 第三方镜像:直接输入第三方镜像仓库地址(包括镜像 Tag),例如:example.com/namespace/repository:v1
  • 镜像仓库中的镜像:单击 选择自有镜像,从右侧弹出的面板中选择目标镜像仓库实例下的镜像。

镜像版本

选择镜像的版本,不选择则默认拉取latest版本。

注意

  • 如果镜像不存在latest版本,此处必须填写或选择镜像版本。
  • 使用第三方镜像时,无需配置该参数。

镜像拉取策略

拉取容器镜像的策略:

  • Always:总是拉取镜像。
  • IfNotPresent:优先使用本地镜像。
  • Never:仅使用本地镜像。

镜像密钥

默认关闭。开启后需要配置镜像仓库密钥。选择已有的仓库密钥或单击 创建仓库密钥,按如下说明补充镜像仓库的密钥:

  • 名称:容器使用的镜像的仓库名称。以使用镜像仓库中的镜像为例,则此处填写镜像所在的 OCI 制品仓库名称。
  • 仓库域名:填写镜像仓库域名,示例:cr-cn-beijing.volces.com
  • 用户名:登录镜像仓库的用户名。以使用镜像仓库中的镜像为例,则此处填写镜像所在实例的登录用户名。可在 镜像仓库控制台 目标实例的 概览 页面获取。
  • 密码:镜像仓库登录用户名对应的密码。

资源配额

支持按照业务需求,在容器维度配置 CPU 和内存的上下限,保障容器的健康运行。若不设置,则表示容器资源配额无限制。

  • CPU 请求:容器需要使用的最小 CPU 值。
  • CPU 上限:允许容器使用的 CPU 最大值。如果超过,容器会被终止。
  • 内存请求:容器需要使用的最小内存值。
  • 内存上限:允许容器使用的内存最大值。如果超过,容器会被终止。
  • GPU 算力:允许容器使用的 GPU 算力。

说明

  • 仅具有 GPU 节点的集群,配置 GPU 算力才能生效。
  • GPU 算力的卡数只能填写正整数。
特权级容器默认关闭。开启后特权级容器可以访问宿主上的设备。支持部署在 Linux 系统上的容器控制网络堆栈或访问设备。
Init 容器默认关闭。开启后表示将该容器设置为 Init 容器。Init 容器是 Pod 中,运行在应用容器前的容器,并且它可以包括仅在安装过程中使用的工具(例如 python、dig)和代码,避免在应用容器中的重复部署,提升应用镜像的安全性。

alt

配置项说明
端口配置容器中应用对容器外服务的连接端口,包括支持的协议(TCP、UDP)、端口号、端口名称。例如 Nignx 监听端口名称为nginx的 TCP 协议 80 端口。

环境变量

配置环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。

自定义:输入变量名称和变量值,创建自定义的环境变量。
配置项:部分引用或全部引用配置项中的变量。部分引用时,一条规则仅支持为一个 Key 创建环境变量。
保密字典:部分引用或全部引用保密字典中的变量。部分引用时,一条规则仅支持为一个 Key 创建环境变量。

实例字段:引用实例字段中的值,创建环境变量。

  • metadata.name:工作负载的名称。

  • metadata.namespace:工作负载所处的命名空间。

  • metadata.uid:工作负载的 uid 标识。

  • metadata.labels:工作负载的标签。

  • metadata.annotations:工作负载的注解。

  • spec.nodeName:工作负载所处的节点。

  • spec.serviceAccountName:所使用的服务账号。

  • status.hostIP:工作负载所处节点的 IP。

  • status.podIP:工作负载中 Pod 的 IPv4 地址。

  • status.podIPs:工作负载中 Pod 的 IPv4 和 IPv6 地址。

说明

当选择类型为metadata.labelsmetadata.annotations字段时,需要动态增加一个控件字段,用于指定 label 或 annotation 的 key,该新增字段也支持用户自定义输入以上不存在的 key。

容器资源:引用容器中的字段作为环境变量。

  • limits.cpu:容器 CPU 的使用上限。

  • limits.memory:容器内存的使用上限。

  • limits.ephemeral-storage:容器临时存储的使用上限。

  • request.cpu:容器 CPU 请求的大小。

  • request.memory:容器内存请求的大小。

  • requests.ephemeral-storage:容器请求存储的大小。

添加卷

添加数据卷。卷(Volume)是容器中存储数据的位置。为一类数据分配存储资源前,需要先在容器中指定待存储数据的目录。

配置项:支持为配置项中的全部数据或部分数据创建数据卷。为部分数据创建存储卷时,支持配置多数据 item,用半角分号 (;)分隔。例如 cm1:path1;cm2:path2
保密字典:支持部分挂载或全部挂载保密字典中的数据。为部分数据创建存储卷时,支持配置多数据 item,用半角分号 (;)分隔。例如 cm1:path1;cm2:path2
存储卷声明:选择当前工作负载命名空间中已创建的存储卷声明,并为其指定数据卷的名称。
临时目录:为临时目录创建数据卷名称。
主机目录:为主机中的目录创建数据卷。
挂载卷为已创建的卷分配存储资源,并分配读写权限。其中,支持通过 subPath 方式挂载卷的子目录;支持通过 subPathExpr 方式挂载卷的扩展路径。

启动命令

创建容器时自动注入容器运行前后的执行命令,设置的命令和参数将填写在配置文件中。如果容器镜像中存在相同的命令和参数,那么配置文件中命令和参数将覆盖容器镜像中的对应命令和参数。

  • 运行命令:按需配置容器启动前运行的命令。

  • 运行参数:按需配置容器启动前所运行命令的参数,每个参数单独一行。

启动后处理按需配置启动后命令,每个命令和参数单独一行。
停止前处理按需配置停止前处理命令,每个命令和参数单独一行。

alt

支持配置 存活检查就绪检查 和 启动检查。允许基于 HTTP 协议、TCP 协议或执行具体命令的方式,探测容器中的负载是否正常。以下以配置存活检查为例,介绍配置参数。

配置项说明

检查方式

配置检查的方式,包括:

  • HTTP 请求检查:使用 HTTP 或 HTTPS 协议,向容器发送一个 HTTP Get 请求,通过检查响应确认容器状态。您需要进行如下检查配置:
    • 协议:HTTP 或 HTTPS。
    • HTTP 请求头:HTTP 请求中自定义的请求头(HTTP Headers)。单击 添加 输入键值对的配置方式。
    • 路径:访问 HTTP Server 的路径。
    • 端口:容器暴露的访问端口。
  • TCP 端口检查:向容器发送一个 TCP Socket,Kubelet 将尝试在指定端口上打开容器的 Socket。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。您需要进行如下检查配置:
    • 端口:容器暴露的访问端口。
  • 执行命令检查:在容器内执行指定的命令,通过检查命令执行的结果确认容器状态。 您需要进行如下检查配置:
    • 命令:检测容器健康情况的探测命令,每个命令和参数单独一行。

时间设置

配置检查的时间参数,包括:

  • 初始等待时间:指容器启动后,第一次执行探测时需要等待的时间,默认为 1 秒。
  • 超时时间:指发送检查请求后,等待响应的超时时间。超过此时间表示容器无响应,默认为 1 秒。
  • 检查间隔:相邻两次检查的时间间隔。默认为 10 秒。

阈值设置

配置检查的结果阈值。包括:

  • 成功阈值:检查请求发送后,表示系统正常的响应次数,默认为 1 次。该项不可配置。
  • 失败阈值:检查请求发送后,表示系统异常的无响应次数,默认为 3 次。即如果容器对请求 3 次无响应,则认为容器状态异常。
  • 配置工作负载相关高级配置,完成后单击 确定,开始创建工作负载。

alt

配置项说明
成功运行次数配置任务中需要 Pod 成功运行的次数。
可并行数配置 Pod 同时运行的上限。
最大超时时间配置任务运行的最大时长。
重试次数配置任务失败后的重试次数。
重启策略配置 Pod 重启策略,包括:永不重启、失败后重启。
实例标签配置 Pod 实例标签,配合标签选择器,帮助 Kubernetes 筛选目标 Pod。单击 添加实例标签,根据界面提示输入符合要求的  和 
实例注解配置 Pod 实例注解。单击 添加实例注解,根据界面提示输入符合要求的  和 。 注解对应 Kubernetes 中的 Annotation,不用于标识和区分资源,主要记录用于应用部署、安全策略、调度策略的附加信息。

DNS 策略

配置实例的 DNS 策略。包括:

  • ClusterFirst:在该模式下,会将 Kube-dns 或 CoreDNS 的信息当作预设置参数,写入到该 Pod 内的 DNS 配置。
  • Default:在该模式下,Pod 里面的 DNS 配置继承了宿主机上的 DNS 配置。即该 Pod 的 DNS 配置与宿主机完全一致。
  • ClusterFirstWithHostNet:目前只能使用 Yaml 设置或更新。在该模式下,宿主机上的 DNS 配置与 Kube-dns 同时作为 Pod 的预设 DNS 配置。
  • None:目前只能使用 Yaml 设置或更新。该模式下,Kubernetes 不会为 Pod 预先加载任何逻辑,用于判定得到 DNS 的配置。
非 root 用户运行默认关闭。用于指定容器必须以非 root 权限运行,开启后,若以 root 权限运行,容器将会启动失败。

管理任务

任务创建完成后,将返回资源管理页面。单击资源列表顶部操作按钮或右侧操作列...中的操作按钮,可执行对应管理操作。详细说明如下:

操作说明
使用 Yaml 创建使用 Yaml 创建资源,推荐直接粘贴已经根据业务需求配置的 Yaml 内容。相较于使用控制台创建资源,使用 Yaml 方式支持的参数更全面。
编辑 Yaml编辑已经创建工作负载的文件,更新配置信息。
更新并行数调整任务运行时 Pod 运行的并发上限。运行策略中支持通过成功运行次数设置任务需要 Pod 成功运行的次数,如果需要运行多次,可以通过 可并行数 调整 Pod 运行的并发上限,控制任务的完成进度。

删除

删除目标工作负载。

警告

删除工作负载将导致服务不可用,请谨慎操作。

创建任务的 Yaml 测试示例如下,具体参数和配置以实际使用场景中各云厂商的定义为准。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi # adjust name for your job
  namespace: users-namespace # specify your namespace to apply job
spec:
  template:
    spec:
      containers:
      - name: pi # adjust name of container
        image: perl # adjust image_name and tag for your container
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never # adjust restartpolicy of pods
  backoffLimit: 4 # adjust backoffLimit of pods