拓扑感知的工作负载调度

特性状态: 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 的总数量来对候选方案进行评分。

自定义插件权重和装箱资源权重

默认情况下,NodeResourcesFitPodGroupPodsCount 插件具有相同的权重(默认均为 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

接下来


最后修改 April 23, 2026 at 10:49 AM PST: [zh] Add topology-aware-scheduling.md (8c144bafdc)