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

AWS EKS节点组Max Pods设为110失败,求解决方案

解决EKS节点Max Pods无法设置为110的问题

以下是针对你的问题的排查与修正方案:

1. 修正Bootstrap参数的引号转义问题

你当前的template_file中,--kubelet-extra-args的单引号嵌套会导致shell解析错误,kubelet无法正确获取--max-pods=110参数。请调整为以下写法:

data "template_file" "test" {
  template = <<EOF
#!/bin/bash
/etc/eks/bootstrap.sh ${var.cluster-name} --use-max-pods false --kubelet-extra-args \"--max-pods=110\"
EOF
}
  • 增加#!/bin/bash确保脚本被正确解析
  • 用转义双引号包裹kubelet参数,避免shell解析时丢失参数

如果使用terraform-aws-modules的_user_data模块,同样需要修正参数转义:

module "eks__user_data" {
  source               = "terraform-aws-modules/eks/aws//modules/_user_data"
  version              = "18.30.3"
  cluster_name         = aws_eks_cluster.metashape-eks.name
  bootstrap_extra_args = "--use-max-pods false --kubelet-extra-args \\\"--max-pods=110\\\""
}

2. 确认节点组已滚动更新到最新配置

即使修改了启动模板,旧节点仍会保留原有配置。需确保:

  • 执行terraform apply后,节点组完成create_before_destroy的滚动更新
  • 通过AWS控制台验证节点组使用的启动模板版本为最新版
  • 登录任意节点执行ps aux | grep kubelet,检查输出中是否包含--max-pods=110

3. 验证CNI前缀模式配置

要支持110个Pod,需确保CNI的前缀模式已正确配置:

  • 检查aws-node DaemonSet的环境变量:
    kubectl describe daemonset aws-node -n kube-system | grep AWS_VPC_K8S_CNI_USE_PREFIX_DELEGATION
    
    确认值为true
  • 设置足够的前缀预分配数量,例如:
    kubectl set env daemonset aws-node -n kube-system WARM_IP_TARGET=0 WARM_PREFIX_TARGET=8
    
    (8个前缀×16个IP=128,满足110个Pod的IP需求)

4. 检查节点实例类型的资源限制

确认你使用的实例类型支持足够的ENI和前缀数量:

  • 例如m5.large最多支持3个ENI,每个ENI可关联4个前缀,总计3×4×16=192个IP,完全满足110个Pod的需求
  • 若使用其他实例类型,可参考AWS官方文档确认ENI和IP配额

5. 查看节点初始化日志定位问题

登录节点查看cloud-init执行日志,确认bootstrap脚本是否正常运行:

cat /var/log/cloud-init-output.log | grep bootstrap.sh

若日志中存在参数解析错误,需进一步调整userdata的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:20:55