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

GKE集群自动扩缩器与HorizontalPodAutoscaler无限循环覆盖配置问题

故障排查与解决方案

排查步骤

  • 首先确认HPA实际生效配置:执行kubectl get hpa my-app-hpa -n production -o yaml,检查返回结果中的spec.minReplicas是否为10。你提供的HPA配置文件名误写为horizontalPodScheduler.yaml,需确认是否正确apply了修改后的配置,避免应用了旧的minReplicas=5的配置。
  • 查看HPA事件日志:执行kubectl describe hpa my-app-hpa -n production,查看Events字段记录的扩缩容触发原因,确认缩容到5副本的操作发起方。
  • 排查是否存在多控制器冲突:执行kubectl get hpa -n production检查是否有多个HPA绑定同一个my-app Deployment,多个HPA配置冲突会导致循环修改副本数。
  • 排查自动化配置同步工具影响:确认集群是否部署了Argo CD、Flux CD等GitOps工具,若仓库中存储的Deployment/HPA配置仍是旧版本(比如Deployment replicas=5、HPA minReplicas=5),工具定时同步会覆盖你手动修改的配置,导致循环扩缩容。

解决方法

  1. 优先让HPA全权管理副本数:删除Deployment.yaml中的spec.replicas字段后重新apply,避免手动配置的副本数和HPA自动调整的副本数产生冲突,后续副本数完全由HPA根据负载和min/maxReplicas配置控制。
  2. 重新生效正确的HPA配置:执行kubectl apply -f <你的HPA配置文件名.yaml>,确认执行kubectl get hpa -n production返回结果的MINPODS列为10、MAXPODS列为50。
  3. 移除冲突配置:如果查到有多个HPA绑定同一个Deployment,删除多余的HPA实例即可。
  4. 配置GitOps工具忽略副本数同步:如果是GitOps工具同步导致的冲突,在Deployment的metadata.annotations中添加对应忽略规则:
    • Argo CD添加:argocd.argoproj.io/ignore-replicas: "true"
    • Flux CD添加:kustomize.toolkit.fluxcd.io/ignore: "replicas"
  5. 调整HPA扩缩容稳定窗口(可选):若仍出现频繁无理由扩缩,可在HPA的spec下添加缩容稳定窗口配置,避免短时间负载波动导致的频繁调整:
spec:
  # 原有配置保留,新增以下内容
  behavior:
    scaleDown:
      stabilizationWindowSeconds: 300 # 缩容前观察5分钟,默认值就是300,可根据需求调长

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:00