Kubernetes v1.35 [alpha](默认禁用)每个 PodGroup
都必须在其 spec.schedulingPolicy 字段中声明一个调度策略。
该策略决定了调度器如何处理组中的 Pod 集合。
schedulingPolicy 字段支持两种策略类型:basic 和 gang。
你必须指定其中一种。
basic 策略指示调度器尽力评估所有 Pod。
与 gang 策略不同,使用 basic 策略的 PodGroup 无论其当前有多少 Pod 可调度,
都被认为是可行的。
使用 basic 策略的主要原因是将 Pod 组织成组,以提升可观测性和管理能力,
同时仍然在单个原子
PodGroup 调度周期
内对它们进行一起评估。
此策略可用于那些不需要同时启动但逻辑上属于同一组的群体, 或者为不涉及“全有或全无”的组约束提供扩展空间。
schedulingPolicy:
basic: {}
gang 策略强制执行“全有或全无”的调度机制。这对于紧密耦合的工作负载非常重要,
因为部分启动可能导致死锁或资源浪费。
此策略常用于 Job 或其他需要所有 Worker 同时运行才能推进的批处理任务。
gang 策略需要一个 minCount 字段,该字段表示为了使该组可行,
必须同时调度的最小 Pod 数量:
schedulingPolicy:
gang:
# 组被允许调度所需的最小 Pod 数量
minCount: 4
使用 Workload API 时,
你需要在 PodGroupTemplates 中定义调度策略。
工作负载控制器会将模板中的策略复制到它创建的每个 PodGroup 中,
从而使 PodGroup 成为自包含的。对工作负载模板的更改只会影响新创建的 PodGroup,
而不会影响已存在的 PodGroup。
对于独立 PodGroup(未通过工作负载创建),你可以直接在
PodGroup 本身上设置 spec.schedulingPolicy。