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

如何避免AKS集群缩容时moon2部署的Pod被意外终止?

解决AKS自动缩容时避免特定Pod被终止的方案

方案一:锁定承载目标Pod的节点,阻止集群缩容销毁它们

这是最直接的解决方式,通过给节点添加注解阻止自动扩缩容组件删除它,同时用标签和污点确保只有目标Pod能运行在这些节点上:

  1. 先找到承载moon2-pod1和moon2-pod2的节点名称,执行命令查看:
    kubectl get pods -o wide
    
  2. 给这两个节点打上专属标签:
    kubectl label nodes <节点名称1> dedicated=moon2-pods
    kubectl label nodes <节点名称2> dedicated=moon2-pods
    
  3. 给节点添加污点,避免其他无关Pod调度到这些节点上:
    kubectl taint nodes <节点名称1> dedicated=moon2-pods:NoSchedule
    kubectl taint nodes <节点名称2> dedicated=moon2-pods:NoSchedule
    
  4. 修改moon2的Deployment,让Pod能容忍上述污点,并且只调度到打了标签的节点:
    执行命令编辑Deployment配置:kubectl edit deployment moon2,在spec.template.spec下添加以下内容:
    tolerations:
    - key: "dedicated"
      operator: "Equal"
      value: "moon2-pods"
      effect: "NoSchedule"
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: dedicated
              operator: In
              values:
              - moon2-pods
    
  5. 给节点添加禁用缩容的注解,让集群自动扩缩容组件跳过这些节点:
    kubectl annotate nodes <节点名称1> cluster-autoscaler.kubernetes.io/scale-down-disabled=true
    kubectl annotate nodes <节点名称2> cluster-autoscaler.kubernetes.io/scale-down-disabled=true
    

方案二:用拓扑分布约束固定Pod节点分布+节点缩容保护

如果不想完全锁定节点,只想避免Pod因节点缩容被频繁调度,可以采用这个方案:

  1. 修改moon2的Deployment,添加拓扑分布约束,确保两个Pod分别运行在不同节点:
    执行命令编辑Deployment:kubectl edit deployment moon2,在spec下添加以下内容:
    topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: kubernetes.io/hostname
      whenUnsatisfiable: DoNotSchedule
      labelSelector:
        matchLabels:
          app: moon2 # 替换成你的Deployment实际使用的标签
    
  2. 同样给承载Pod的节点添加缩容禁用注解,操作同方案一的第5步。

方案三:创建专用节点池,禁用自动缩容

直接给moon2的Pod单独分配一个不会触发缩容的节点池:

  1. 使用Azure CLI创建专用节点池,设置最小和最大节点数一致(比如2个),关闭自动扩缩容:
    az aks nodepool add --resource-group <你的资源组名> --cluster-name <你的AKS集群名> --name moon2-pool --node-count 2 --min-count 2 --max-count 2
    
  2. 给这个节点池的节点打标签,然后配置moon2的Deployment的节点亲和性,让Pod只调度到这个节点池的节点上,配置方式参考方案一的第4步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:55:25