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

AWS EC2 Auto Scaling Group从0扩容至1实例超时及就绪信息查找失败问题排查咨询

AWS EC2 Auto Scaling Group从0扩容至1实例超时及就绪信息查找失败问题排查咨询

碰到这种阻塞流水线的问题确实闹心,咱们一步步来拆解排查,先解决眼前的超时问题,再深挖根因:

一、先确认5分钟超时是否合理,以及怎么调整

g4dn-2xlarge是GPU加速实例,启动流程比普通CPU实例复杂多了——要加载NVIDIA驱动、初始化GPU容器运行时,加上EKS节点本身的kubelet启动、CNI网络插件部署、节点注册到集群这一系列步骤,5分钟(300秒)真的可能不够用,尤其是如果你的节点自定义了UserData脚本(比如装额外工具),或者所在AWS区域的GPU实例库存紧张导致启动延迟的话。

调整ASG的健康检查宽限期

这是最直接的缓解手段:

  • 登录AWS控制台,找到你的Auto Scaling Group,进入「配置」>「编辑」
  • 找到「健康检查宽限期」(Health Check Grace Period),把默认的300秒改成900秒(15分钟)甚至1200秒(20分钟),保存配置
  • 如果用的是EKS托管节点组,直接在节点组的「高级配置」里调整这个参数就行

调整Cluster Autoscaler的扩容超时

Cluster Autoscaler默认的扩容超时是10分钟,但如果你的ASG健康检查宽限期调长了,也要同步调整CA的超时:

  • 如果是用Helm部署的CA,在values.yaml里添加或修改参数:--scale-up-timeout=15m
  • 如果是直接管理CA的Deployment,在容器的command里加上这个参数,比如:
    command:
      - ./cluster-autoscaler
      - --v=4
      - --scale-up-timeout=15m
      - --cloud-provider=aws
      # 其他原有参数...
    

调整ASG实例预热时间

在ASG的配置里找到「实例预热」(Instance Warmup),设置成和健康检查宽限期相近的时间,避免ASG在实例还没就绪的时候就判断扩容失败,重复触发扩容。

二、深挖「找不到就绪信息」的根因

调整超时只是治标,得找到为什么实例没就绪,咱们一步步查:

  1. 登录残留实例排查节点状态

    • 先SSH或者SSM连到那个残留的g4dn实例,查看kubelet日志:journalctl -u kubelet -f,看看有没有注册集群失败、CNI初始化错误、驱动加载失败的报错
    • 检查节点是否注册到EKS集群:在控制平面执行kubectl get nodes,看这个节点的状态是NotReady还是Pending,有没有对应的污点/标签问题
    • 检查NVIDIA驱动状态:执行nvidia-smi,如果报错说明驱动没装好,这会导致节点无法就绪(如果你的节点组依赖GPU就绪探针的话)
  2. 查看ASG的事件日志

    • 回到ASG的控制台,切换到「事件」标签,看看有没有健康检查失败的具体提示,比如「实例状态检查失败」「ELB健康检查未通过」,或者「实例未在宽限期内变为健康状态」的记录
  3. 排查CA的详细日志

    • 找到CA的Pod:kubectl get pods -n kube-system | grep cluster-autoscaler
    • 查看完整日志:kubectl logs <ca-pod-name> -n kube-system,除了那条“Failed to find readiness information”,有没有提到节点未注册、节点标签不符合扩容要求,或者CA无法和kube-apiserver通信的细节
  4. 检查节点的UserData脚本

    • 如果你的节点用了自定义的UserData,查看脚本执行日志:cat /var/log/cloud-init-output.log,看有没有脚本执行超时、安装包失败的情况——比如自定义安装NVIDIA驱动时编译卡住,会直接拖慢整个节点启动流程

三、针对g4dn实例的特殊优化

  • 尽量用AWS官方的EKS Optimized GPU AMI,这些AMI已经预装了经过验证的NVIDIA驱动和nvidia-container-toolkit,启动速度比自定义编译驱动快很多
  • 检查EKS节点的默认污点:g4dn节点默认会带nvidia.com/gpu=present:NoSchedule的污点,确保你的流水线Pod配置了对应的容忍(不过这是调度的问题,和节点就绪无关,但如果CA是因为Pod无法调度误判的话也要注意)

最后,调整完参数后可以手动触发一次从0到1的扩容测试,看看超时问题是否解决,再根据日志里的具体报错解决根因。

备注:内容来源于stack exchange,提问作者Shanteva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 07:50:34