如何发布 Job 任务类型
1 Job 任务类型
Section titled “1 Job 任务类型”Job 任务类型适用于一次性执行的任务,如批处理、数据处理、机器学习训练等场景。任务完成后 Pod 会自动终止,不会持续运行。
Job 任务创建成功后具有以下特性:任务名称可以随时修改,支持任务暂停和重启功能,为用户提供了基本的任务管理能力。然而,Job 任务在创建后存在诸多不可修改的限制,包括高级设置、yaml 文件配置、共享内存设置、镜像地址、暴露端口配置以及节点数量等核心参数。这些限制的存在主要基于 Job 任务的一次性执行特性,确保任务执行的稳定性和一致性。用户如需修改这些参数,需要重新创建任务实例。
2 通过弹性部署发布
Section titled “2 通过弹性部署发布”在弹性部署服务任务创建页面,您可以通过可视化界面配置和发布 Job 任务。首先进入弹性部署任务创建页面,点击 K8S YAML 导入在资源配置部分,选择需要的 GPU 类型和数量。
任务创建完成后,您可以在任务列表页面查看任务状态,在任务详情页面进行任务管理操作,支持任务暂停、重启等基本功能。如需修改资源配置,需要重新创建任务实例。
job 任务配置示例
apiVersion: batch/v1kind: Jobmetadata: name: ${JOB_NAME} # 允许变量替换spec: backoffLimit: 4 # 重试 4 次后标记为 Failed template: spec: containers: - name: main image: ${YOUR_IMAGE} resources: requests: cpu: "1" # 起步资源,<= limits memory: "2Gi" nvidia.com/gpu: "1" limits: cpu: "4" memory: "8Gi" nvidia.com/gpu: "1" restartPolicy: Never3 通过 API 形式发布 Job 任务类型
Section titled “3 通过 API 形式发布 Job 任务类型”3.1 接口概述
Section titled “3.1 接口概述”任务创建接口是系统核心功能之一,用于通过 API 方式创建和管理 Job 任务。接口参数文档位于:https://s.apifox.cn/6aa360d3-d8f2-471e-b841-3a35c33a7b7c/api-296881505
3.2 Job 任务配置示例
Section titled “3.2 Job 任务配置示例”通过 API 创建 Job 任务需要按照 Kubernetes Job 资源格式配置 YAML,以下是一个多容器 Job 任务的完整配置示例:
apiVersion: batch/v1kind: Jobmetadata: creationTimestamp: null name: pispec: backoffLimit: 4 template: metadata: creationTimestamp: null spec: containers: - image: harbor.suanleme.cn/huang5876/jupyter-tf1.15-gpu:v3.0 name: pi resources: limits: cpu: 14000m nvidia.com/gpu: 1 memory: 51200Mi requests: cpu: 1166m nvidia.com/gpu: 1 memory: 2133Mi - image: harbor.suanleme.cn/library/cuda:debugv4 name: pi2 resources: limits: cpu: 9333m nvidia.com/gpu: 1 memory: 4200Mi requests: cpu: 2333m nvidia.com/gpu: 1 memory: 10666Mi restartPolicy: Neverstatus: {}4.多容器资源分配算法
Section titled “4.多容器资源分配算法”
当使用多容器配置时,系统采用智能的资源分配算法来确保每个容器获得合理的资源分配。
CPU 资源分配机制:在 Job 任务的多容器场景中,系统采用加权平均算法进行 CPU 资源分配。该算法确保每个容器按照其配置比例获得相应的 CPU 资源。算法实现过程如下:首先计算所有容器的 CPU 配置总和,然后根据每个容器的配置占比,将实际机器的 CPU 核心数按比例分配给各个容器。例如,当第一个容器配置 14,000 微核,第二个容器配置 9,333 微核时,总和为 23,333 微核。在实际分配过程中,假设选择 4090 卡(20 核)作为目标机器,系统会计算第一个容器的分配比例:14,000 ÷ 23,333 ≈ 60%,因此第一个容器将获得 20 核 × 60% = 12 核的 CPU 资源。
内存资源分配机制:内存分配采用总量计算和比例分配相结合的策略。系统首先汇总所有容器的内存配置需求,然后按照各容器的内存配置比例进行资源分配。具体分配流程如下:以第一个容器内存配置 51,200 兆,第二个容器配置 4,200 兆为例,系统计算出总内存需求为 55,400 兆。随后,系统根据第一个容器的内存配置占比(51,200 ÷ 55,400 ≈ 92%)将目标机器的内存资源进行分配,假设目标机器内存为 101 G,则第一个容器将获得 101 G × 92% ≈ 93 G 的内存资源。
GPU 资源分配策略:GPU 资源分配采用优先级分配策略,确保关键任务能够优先获得 GPU 资源支持。分配规则如下:当选择单 GPU 配置时,系统优先将 GPU 资源分配给第一个容器;当选择多 GPU 配置时,系统会为所有容器分配 GPU 资源。这种策略确保了资源分配的公平性和效率。在资源请求计算方面,系统采用统一的规则:计算完 limit 值后,request 值设置为 limit 除以 4,这种配置方式既保证了资源的有效利用,又避免了资源过度预留。