IPv6原生EKS集群无法创建托管节点组问题求助
排查IPv6原生EKS集群托管节点组部署失败问题
问题背景
我尝试部署IPv6原生EKS集群已一周,集群创建成功,但托管节点组始终部署失败,已做以下尝试:
- 使用仅IPv6的公有子网,触发
SubnetInvalidConfiguration错误,提示需IPv4 - 使用双栈(IPv4+IPv6)但关闭「自动分配公有IPv4」的子网,节点无法加入集群,报错:
NodeCreationFailure, Message=Instances failed to join the kubernetes cluster - 将托管节点组部署在私有子网,同样触发
SubnetInvalidConfiguration错误
上述操作均通过AWS Console和Terraform EKS模块执行,最后严格遵循AWS官方文档用eksctl(后台通过CloudFormation创建VPC、子网、角色及节点组等)部署,仍出现与第二种尝试相同的节点加入失败错误。
针对性排查步骤
1. 子网配置合规性验证
IPv6原生EKS集群的托管节点组对子网有强制要求:
- 必须使用双栈子网(同时支持IPv4和IPv6),仅IPv6子网不被EKS托管节点组支持(这是第一种尝试失败的直接原因)
- 公有子网部署时,必须开启「自动分配公有IPv4地址」——即使是IPv6集群,节点初始化阶段仍需通过IPv4访问EKS控制平面完成注册
- 私有子网部署时,需确保子网关联双栈NAT网关,且路由表配置了IPv4和IPv6的出站路由(分别指向NAT网关和互联网网关),否则节点无法拉取容器镜像或访问EKS API
2. 节点网络与DNS检查
- 登录EC2控制台查看节点实例的网络接口,确认已分配到IPv6地址
- 检查节点的DNS配置:双栈子网下,实例需使用支持IPv6的DNS服务器(如VPC默认DNS地址
VPC_CIDR+2,或AWS提供的169.254.169.253),否则无法解析EKS控制平面的IPv6端点
3. IAM角色权限校验
托管节点组的实例角色(通常命名为AmazonEKSNodeRole)必须包含以下核心权限:
eks:RegisterCluster、eks:DescribeCluster:用于节点向EKS控制平面注册ecr:GetDownloadUrlForLayer、ecr:BatchGetImage:用于拉取EKS节点所需的容器镜像ec2:DescribeInstances:用于节点网络配置初始化
同时需确认角色信任关系正确,允许ec2.amazonaws.com和eks.amazonaws.com扮演该角色。
4. 安全组规则核查
- 节点安全组需允许:
- 出站TCP 443访问EKS控制平面的IPv4和IPv6端点
- 出站UDP 53访问DNS服务器(IPv4/IPv6)
- 节点间的入站/出站通信(如TCP 10250、UDP 4789等)
- 控制平面安全组需允许来自节点安全组的TCP 443和6443访问
5. 节点启动日志分析
通过EC2控制台获取节点实例的系统日志(/var/log/cloud-init-output.log或/var/log/messages),定位具体失败原因:
- 若日志中出现
Failed to connect to eks-api-endpoint类错误,优先排查网络连通性和DNS解析问题 - 若出现
IAM authentication failed类错误,检查实例角色的权限和信任关系配置
内容的提问来源于stack exchange,提问作者gabo
相关产品推荐
相关产品推荐

