You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS集群Pod均调度至同一节点,如何实现跨节点均衡调度?

解决多Deployment Pod跨节点均衡分布问题及集群排查方向

一、集群可能存在的问题排查

  • 节点亲和性/污点容忍配置异常:检查所有Deployment的Pod模板,是否统一配置了指向某一节点的nodeAffinity,或者所有Pod都添加了针对某节点污点的tolerations(比如控制节点的污点),导致调度器只能选择该节点。执行kubectl get deployment <deploy-name> -o yaml查看spec.template.spec.affinity和tolerations字段。
  • 节点可分配资源差异过大:两个节点的allocatable资源(尤其是内存)可能差距明显,调度器会优先选择资源更充足的节点。执行kubectl describe node <node-name>查看Allocatable和Capacity字段,同时检查kubelet的资源预留参数(--kube-reserved、--system-reserved)是否配置不均。
  • 调度器策略配置问题:默认调度器的SpreadPriority插件被禁用,或者NodeResourcesFit插件权重过高,导致调度器优先选择资源充足的节点而非均衡分布。检查调度器配置(如果是kubeadm部署,查看kube-scheduler的ConfigMap),确认PodSpreadPriority是否启用,以及各插件的权重设置。
  • Pod资源请求配置不合理:所有Pod的内存请求值设置过高,导致其中一个节点的可分配资源无法容纳多个Pod的请求总和,只能集中调度到另一个节点。检查Pod模板的resources.requests.memory字段,对比节点的可分配内存计算是否存在这个问题。

二、实现Pod跨节点均衡分布的方法

  • 配置全局Pod反亲和性:给所有Deployment的Pod添加一个统一标签(比如app-group: shared-services),然后配置Pod反亲和性规则,让调度器优先将同组Pod打散到不同节点。示例配置:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deploy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: example
        app-group: shared-services # 统一标签
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchLabels:
                  app-group: shared-services
              topologyKey: kubernetes.io/hostname # 按节点hostname打散
      containers:
      - name: example-container
        image: nginx
        resources:
          requests:
            memory: "256Mi"
          limits:
            memory: "512Mi"
  • 调整调度器均衡策略:启用NodeResourcesBalancedAllocation插件,该插件会优先选择CPU和内存使用率更均衡的节点;同时调高PodSpreadPriority的权重,让调度器更倾向于分散Pod。修改调度器ConfigMap后重启kube-scheduler生效。
  • 手动触发Pod重调度:对负载过高的节点执行kubectl drain <node-name> --ignore-daemonsets(临时驱逐所有Pod,让Deployment重建时重新调度),或者直接删除集中在该节点的Pod:kubectl delete pod -n <namespace> -l <pod-label>,注意操作前确保业务有高可用能力。
  • 均衡节点可分配资源:调整两个节点的kubelet资源预留参数,让它们的allocatable内存、CPU尽量一致,消除调度器的资源倾斜选择倾向。

内容的提问来源于stack exchange,提问作者Manish Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:27:34