- 文档首页
容器服务
容器服务 VKE
用户指南
调度管理
任务调度
Gang 调度
Gang 调度
容器服务对原生调度器 kube-scheduler 进行能力的扩展后,同时扩展支持了 Gang 调度能力。本文主要描述 Gang 调度的触发和使用方法。
功能概述
Gang 调度是并发系统中一种调度策略,将多个相关联的进程调度到不同的处理器上同时运行。防止部分进程的异常,导致整个关联进程的阻塞。
Gang 调度的最主要的原则是保证所有相关联的进程能够同时启动,不允许有异常进程的存在,即 All-or-Nothing。All-or-Nothing 指要么所有进程全部启动,批量任务成功运行;要么只要存在异常进程,则所有进程都不能启动,批量任务运行失败。
同时,容器服务引入 PodGroup CRD 资源,实现 Gang 调度。PodGroup 是容器服务的自定义 CRD 资源类型,是一组匹配 All-or-Nothing 批量任务需要启动的相关联的 Pod 集合。容器服务支持创建 PodGroup CRD 资源,设置 PodGroup 的名称以及保证批量任务正常运行所需最少副本数和超时时间,再通过实例标签(Label),在工作负载中关联 PodGroup CRD 资源,实现 Gang 调度。
前提条件
使用方法
步骤一:创建 PodGroup CRD 资源
- 在集群管理页面的左侧导航栏,选择 工作负载 > 对象浏览器。
- 在 对象浏览器 页面,单击 使用 Yaml 创建,创建 PodGroup CRD 资源。
v1.26 及以下版本集群
v1.28 及以上版本集群
apiVersion: scheduling.sigs.k8s.io/v1alpha1
scheduleTimeoutSeconds: 10
apiVersion: scheduling.x-k8s.io/v1alpha1
scheduleTimeoutSeconds: 10
- 在对象浏览器的 CRD 分类下,查看已创建的 PodGroup CRD 资源。单击 podgroup 进入详情页面,可查看 PodGroup 的名称。
-
步骤二:工作负载中使用 Gang 调度
下文以无状态负载(Deployment)为例。
- 在集群管理页面的左侧导航栏中,选择 工作负载 > 无状态负载。
- 其中,高级配置 步骤的 实例配置 处,添加 实例标签。
- v1.26 及以下 Kubernetes 版本集群:标签 Key 为pod-group.scheduling.sigs.k8s.io、Value 为<PodGroup 名称>。
- v1.28 及以上 Kubernetes 版本集群:标签 Key 为scheduling.x-k8s.io/pod-group、Value 为<PodGroup 名称>。
通过 YAML 配置 Gang 调度相关示例如下:
v1.26 及以下版本集群
v1.28 及以上版本集群
pod-group.scheduling.sigs.k8s.io: demo-podgroup
image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0
scheduling.x-k8s.io/pod-group: demo-podgroup
image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0
- 若集群中节点资源满足 Deployment 中所有 Pod 请求的资源配额,则工作负载中所有 Pod 将正常启动,处于 Running 状态。您可以在工作负载详情页面的 实例列表 页签,查看 Pod 的启动状态。
-
- 若集群中节点资源仅满足 Deployment 中部分 Pod 请求的资源配额(例如 4 个 Pod 中仅满足 3 个 Pod 的资源请求量),则工作负载中所有 Pod 都将处于 Pending 状态。
最近更新时间:2026.06.29 11:13:29