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

AKS集群升级遇PodDrainFailure失败,副本数修改后自动回退求助

AKS集群升级PodDrainFailure问题:副本数自动回退排查与解决

问题核心

AKS集群升级触发PodDrainFailure,根源是某PDB的Allowed Disruptions为0;手动将对应Deployment副本数改为2后,PDB允许中断数临时变为1,但副本数很快自动回退为1,导致问题复发。

副本数自动回退的常见原因及解决方法

1. 水平Pod自动扩缩容(HPA)干预

如果Deployment关联了HPA,且HPA的minReplicas设为1,手动调整副本数到2后,HPA会根据预设的扩缩容规则(比如CPU/内存使用率)将副本数拉回最小值。

  • 检查HPA配置:
    kubectl get hpa <deployment_name>
    
  • 临时调整HPA最小副本数:
    kubectl scale hpa <deployment_name> --min=2
    
  • 或临时禁用HPA缩容:
    kubectl annotate hpa <deployment_name> autoscaling.kubernetes.io/scale-down-disabled=true
    

2. GitOps工具(Argo CD/Flux)同步覆盖

如果Deployment由GitOps工具管理,集群中的配置会和Git仓库中的定义自动同步。手动修改集群内的副本数后,工具会将其覆盖回仓库中设定的1。

  • 检查GitOps应用状态(以Argo CD为例):
    argocd app get <app_name>
    
  • 解决方法:先在Git仓库中修改Deployment的spec.replicas为2,再触发GitOps工具同步,确保集群配置与仓库一致。

3. 其他自动化配置工具/脚本

存在定时任务、运维脚本或自定义控制器自动修改Deployment副本数,也会导致手动配置被覆盖。

  • 查看Deployment事件记录,定位修改源:
    kubectl describe deployment <deployment_name>
    
    检查Events中是否有Scaled down replica set类事件,记录中的触发方即为修改源,针对性调整该工具/脚本的逻辑。

临时应急方案(用于紧急完成AKS升级)

如果暂时无法解决副本数回退问题,可直接修改PDB的允许中断数,跳过驱逐限制:

kubectl patch pdb <pdb_name> -p '{"spec":{"maxUnavailable":1}}'

完成集群升级后,再恢复PDB配置并彻底解决副本数自动回退的根源问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:05:16