拓扑感知的工作负载调度
特性状态:
Kubernetes v1.36 [alpha](默认禁用)拓扑感知调度(Topology-Aware Scheduling,TAS)是一种调度算法, 用于为指定的 PodGroup 寻找最优的放置位置,并保证所有 Pod 都被调度到同一拓扑域中。 用户可以通过修改 TAS 插件配置来适配自身的特定需求。
调度框架:TAS 插件配置
调度器包含了新的以及扩展的内置插件,用于实现 TAS 的扩展点:
TopologyPlacement:实现了PlacementGeneratePlugin接口。 它通过根据 PodGroup 中定义的拓扑key的不同取值对节点进行分组,从而生成候选放置方案。
NodeResourcesFit:扩展实现了PlacementScorePlugin接口。其逻辑类似于标准的 Pod 装箱, 基于放置中所有节点的资源分配比例对候选方案进行打分。它使用MostAllocated策略来最大化放置内的资源利用率, 并继承了逐 Pod 插件中的资源权重设置。
PodGroupPodsCount:实现了PlacementScorePlugin接口。 它根据在该放置方案中可以成功调度的 PodGroup 中 Pod 的总数量来对候选方案进行评分。
自定义插件权重和装箱资源权重
默认情况下,NodeResourcesFit 和 PodGroupPodsCount 插件具有相同的权重(默认均为 1),
以在装箱策略与尽可能多调度 Pod 之间保持良好的平衡。
你可以在 KubeSchedulerConfiguration 中调整这些权重,或修改装箱策略中的资源权重。
以下示例展示了如何更改这两个插件的权重,以及如何覆盖 NodeResourcesFit 的资源权重。
后者的修改将同时应用于逐 Pod 调度和放置评分算法:
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: default-scheduler
plugins:
placementScore:
enabled:
# 1) 修改放置评分插件的默认权重
- name: NodeResourcesFit
weight: 2
- name: PodGroupPodsCount
weight: 5
pluginConfig:
- name: NodeResourcesFit
args:
# 2) 修改逐 Pod 和放置评分算法中的资源评分权重
scoringStrategy:
# 此类别仅在逐 Pod 调度中生效。放置评分始终使用 MostAllocated 策略
type: LeastAllocated
# 资源权重将同时应用于逐 Pod 和放置评分算法
resources:
- name: cpu
weight: 2
- name: memory
weight: 3
接下来
- 进一步了解拓扑感知调度 API。
- 参阅 Pod 组调度的内容。
- 参阅 Pod 组策略的内容。