CompositePodGroup 生命周期

CompositePodGroup 生命周期

特性状态: Alpha since Kubernetes v1.37; (默认禁用)
More information about this feature

To use this feature, you (or a cluster administrator) will need to enable the CompositePodGroup feature gate for all relevant components in your cluster.

See Enable Or Disable Feature Gates for more information.

CompositePodGroup 表示多级 PodGroup 层级结构中的一个非叶节点。 与 PodGroup 资源不同,CompositePodGroup 资源不直接包含 Pod。 相反,它们维护由后代 CompositePodGroup 和 PodGroup 对象构成的层级结构, 并承载适用于其子组的调度策略。

属主关系与垃圾收集

一个 CompositePodGroup 对象及其后代 CompositePodGroup 和 PodGroup 资源, 归属于创建它的工作负载控制器(通过 Kubernetes 的 ownerReferences 建立属主关系)。 当拥有它的工作负载对象被删除时,级联垃圾收集会自动删除关联的组层级结构。

CompositePodGroup 名称在名字空间内必须唯一,且必须是合法的 DNS 子域名。

创建顺序

为确保正确的层级解析和调度,工作负载控制器按自顶向下的顺序创建资源:

  1. Workload:定义静态模板(CompositePodGroupTemplates 和 PodGroupTemplates)。
  2. 根级 CompositePodGroup:创建时用 spec.workloadRef 指向 Workload 中的根模板。
  3. 后代 CompositePodGroup 和 PodGroup:按自顶向下的顺序创建。每个子组通过 spec.parentCompositePodGroupName 指定其父组,并通过 spec.workloadRef 指定其模板。
  4. Pods:创建时用 spec.schedulingGroup.podGroupName 指向其所属的叶子 PodGroup。

如果某个组引用的父 CompositePodGroup 不存在,或者某个 Pod 引用的 PodGroup 尚未创建, 则调度器会暂缓调度,直到层级结构中的所有父资源都存在为止。

限制与验证规则

  • 一致的调度器名称:整个 CompositePodGroup 层级结构中的所有 Pod 必须使用相同的 spec.schedulerName。如果检测到不一致,调度器会将该层级结构视为不可调度而拒绝。
  • 一致的优先级:整个 CompositePodGroup 层级结构中的所有 Pod 必须指定相同的 spec.priority 值,且该值必须等于根组指定的优先级。如果检测到不一致, 调度器会将该层级结构视为不可调度而拒绝。
  • 一致的抢占策略:整个 CompositePodGroup 层级结构中的所有 Pod 必须使用相同的 spec.preemptionPolicy。此外,当启用 PodGroupPreemptionPolicy 特性门控时,根组的抢占策略必须与 Pod 指定的策略一致。如果检测到不一致, 调度器会将该层级结构视为不可调度而拒绝。
  • 最大嵌套深度:组模板层级结构最多支持 4 级嵌套。
  • 列表项数量上限:Workload 任意层级下的子 CompositePodGroupTemplates 和 PodGroupTemplates 数量上限为 8。
  • 不可变的 gang 组数量:CompositePodGroup 上的 spec.schedulingPolicy.gang.minGroupCount 字段在创建后不可变。
  • 不可变的层级引用:组上的 spec.parentCompositePodGroupName 和 Pod 上的 spec.schedulingGroup 一经设置便不可变。

接下来

最后修改 October 12, 2026 at 5:00 PM PST: [zh] Add compositepodgroup-api/lifecycle.md (4483fc5f51)