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 子域名。
为确保正确的层级解析和调度,工作负载控制器按自顶向下的顺序创建资源:
Workload:定义静态模板(CompositePodGroupTemplates 和 PodGroupTemplates)。CompositePodGroup:创建时用 spec.workloadRef 指向 Workload 中的根模板。CompositePodGroup 和 PodGroup:按自顶向下的顺序创建。每个子组通过
spec.parentCompositePodGroupName 指定其父组,并通过 spec.workloadRef 指定其模板。Pods:创建时用 spec.schedulingGroup.podGroupName 指向其所属的叶子 PodGroup。如果某个组引用的父 CompositePodGroup 不存在,或者某个 Pod 引用的 PodGroup 尚未创建,
则调度器会暂缓调度,直到层级结构中的所有父资源都存在为止。
CompositePodGroup 层级结构中的所有 Pod 必须使用相同的
spec.schedulerName。如果检测到不一致,调度器会将该层级结构视为不可调度而拒绝。CompositePodGroup 层级结构中的所有 Pod 必须指定相同的
spec.priority 值,且该值必须等于根组指定的优先级。如果检测到不一致,
调度器会将该层级结构视为不可调度而拒绝。CompositePodGroup 层级结构中的所有 Pod 必须使用相同的
spec.preemptionPolicy。此外,当启用
PodGroupPreemptionPolicy
特性门控时,根组的抢占策略必须与 Pod 指定的策略一致。如果检测到不一致,
调度器会将该层级结构视为不可调度而拒绝。Workload 任意层级下的子 CompositePodGroupTemplates 和
PodGroupTemplates 数量上限为 8。CompositePodGroup 上的
spec.schedulingPolicy.gang.minGroupCount 字段在创建后不可变。spec.parentCompositePodGroupName 和 Pod 上的
spec.schedulingGroup 一经设置便不可变。