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

EKS集群Pod创建失败:FailedScheduling错误排查求助

解决EKS单节点集群Pod调度失败(Too many pods)问题

问题分析

从Pod事件中的1 Too many pods错误可以明确:唯一的工作节点已达到Pod数量上限,尽管节点状态显示Ready,但剩余调度名额已被系统Pod或其他已有Pod占满。

排查步骤

  1. 查看节点Pod容量与已用情况
    执行命令获取节点资源分配详情:

    kubectl describe node ip-10-0-12-61.ec2.internal
    

    在输出的Capacity段找到pods字段(节点最大Pod上限),在Allocated resources段查看已使用的Pod数量。

  2. 统计全集群Pod状态
    查看所有命名空间下的Pod,确认总占用量:

    kubectl get pods --all-namespaces
    

    重点关注kube-system命名空间的系统Pod(如kube-proxy、aws-node、coredns等),这些是EKS默认运行的组件,会占用固定的Pod名额。

解决方案

方案1:扩容节点组(推荐)

这是最直接有效的方法,将节点组实例数从1增加至2或更多:

  • 通过AWS控制台进入EKS集群的节点组页面,选择目标节点组,点击Edit调整实例数量;
  • 或使用AWS CLI命令:
    aws eks update-nodegroup-config --cluster-name <你的集群名称> --nodegroup-name <你的节点组名称> --scaling-config minSize=2,maxSize=2,desiredSize=2
    
    节点扩容完成后,新节点会自动加入集群,Pod调度即可正常进行。

方案2:调整节点Pod上限(单节点场景)

若必须使用单节点集群,可修改maxPods参数提升上限(注意不能超过实例类型的ENI/IP硬限制):

  1. 创建自定义EC2启动模板,在用户数据中添加kubelet配置:
    #!/bin/bash
    echo "KUBELET_EXTRA_ARGS=--max-pods=17" >> /etc/sysconfig/kubelet
    systemctl daemon-reload
    systemctl restart kubelet
    
    注:t3.micro实例最多支持3个ENI,每个ENI含6个IP(含节点自身IP),实际可用Pod IP为3*6-1=17,maxPods不可超过此数值。
  2. 使用该启动模板创建新节点组,替换原有节点组。

方案3:清理无用Pod

检查并删除处于Pending状态的无用Pod,或临时移除非必要组件Pod以释放名额:

kubectl delete pod <Pod名称> -n <命名空间>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:45:49