You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
任务调度
Gang 调度
复制全文
下载 pdf
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 调度。​
前提条件​
已安装 scheduler-plugin 组件并开启了 Gang 调度 能力。具体操作,请参见 scheduler-plugin。​
使用方法​
步骤一:创建 PodGroup CRD 资源​
  1. 在容器服务的左侧导航栏,选择 集群。​
  1. 在集群列表,单击目标集群名称。​
  1. 在集群管理页面的左侧导航栏,选择 工作负载 > 对象浏览器。​
  1. 在 对象浏览器 页面,单击 使用 Yaml 创建,创建 PodGroup CRD 资源。​
注意​
YAML 的 类型 请选择 自定义。​
  • ​
    v1.26 及以下版本集群
    v1.28 及以上版本集群
    ​
    ​
    apiVersion: scheduling.sigs.k8s.io/v1alpha1​
    kind: PodGroup​
    metadata:​
    name: demo-podgroup # PodGroup 名称​
    namespace: default # PodGroup 所属命名空间​
    spec:​
    scheduleTimeoutSeconds: 10 # 等待该 PodGroup 达到最小副本数的超时时间​
    minMember: 4 # 该 PodGroup 所需的最小副本数​
    ​
    ​
  1. 单击 确定,创建完成 CRD 资源。​
  • 在对象浏览器的 CRD 分类下,查看已创建的 PodGroup CRD 资源。单击 podgroup 进入详情页面,可查看 PodGroup 的名称。​
  • ​alt​​
步骤二:工作负载中使用 Gang 调度​
下文以无状态负载(Deployment)为例。​
通过控制台配置​
  1. 在集群管理页面的左侧导航栏中,选择 工作负载 > 无状态负载。​
  1. 在 无状态负载 页面,创建无状态负载或更新已有的负载。详细操作,请参见 创建无状态负载、管理工作负载。​
  • 其中,高级配置 步骤的 实例配置 处,添加 实例标签。​
  • 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 配置​
通过 YAML 配置 Gang 调度相关示例如下:​
​
v1.26 及以下版本集群
v1.28 及以上版本集群
​
​
apiVersion: apps/v1​
kind: Deployment​
metadata:​
name: worker # Deployment 名称​
namespace: default # Deployment 所属命名空间​
spec:​
replicas: 4 # Deployment 副本数,需与 PodGroup 的 minMember 一致​
selector:​
matchLabels:​
app: worker​
template:​
metadata:​
labels:​
app: worker​
pod-group.scheduling.sigs.k8s.io: demo-podgroup # 关键标签,关联到已创建的 PodGroup​
spec:​
containers:​
- name: worker​
image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 容器镜像地址和 Tag,请替换为您自己的容器镜像。若使用公网镜像,请确保您的集群能够访问公网​
resources:​
requests:​
cpu: "2" # 单 Pod 请求 CPU 大小​
​
​
结果验证​
  • 若集群中节点资源满足 Deployment 中所有 Pod 请求的资源配额,则工作负载中所有 Pod 将正常启动,处于 Running 状态。您可以在工作负载详情页面的 实例列表 页签,查看 Pod 的启动状态。​
  • ​alt​​
  • 若集群中节点资源仅满足 Deployment 中部分 Pod 请求的资源配额(例如 4 个 Pod 中仅满足 3 个 Pod 的资源请求量),则工作负载中所有 Pod 都将处于 Pending 状态。​
最近更新时间:2026.06.29 11:13:29
这个页面对您有帮助吗?
有用
有用
无用
无用