为何AWS EKS节点组实例无法加入Kubernetes集群?
问题:EKS节点组创建失败,实例无法加入集群
尝试创建包含1个节点组、3个节点的AWS EKS集群,控制台显示1个节点已关联,但节点组状态为创建失败,报错信息如下:
Error: error waiting for EKS Node Group (eks-cluster-dev:workernodes-dev) to create: unexpected state 'CREATE_FAILED', wanted target 'ACTIVE'. last error: 1 error occurred: │ * i-06d98434fc92c67b5, i-0a8f71803eca13600: NodeCreationFailure: Instances failed to join the kubernetes cluster │ │ │ │ with module.eks_cluster.aws_eks_node_group.worker-node-group[0], │ on modules/eks/eks.tf line 87, in resource "aws_eks_node_group" "worker-node-group": │ 87: resource "aws_eks_node_group" "worker-node-group" { │ ╵
以下是module/eks/eks.tf的内容:
resource "aws_eks_cluster" "eks_cluster" { count = var.pubsubnet ? 1 : 0 name = format("%s-%s", var.eks_cluster_name, var.env) role_arn = var.eks_cluster_role_arn vpc_config { subnet_ids = var.subnet_ids security_group_ids = [aws_security_group.main.id] } } resource "aws_eks_node_group" "worker-node-group" { count = var.pubsubnet ? 1 : 0 cluster_name = format("%s-%s", var.eks_cluster_name, var.env) node_group_name = "workernodes-${var.env}" node_role_arn = aws_iam_role.workernodes.arn subnet_ids = var.subnet_ids instance_types = var.instance_type scaling_config { desired_size = 3 max_size = 3 min_size = 1 } }
其中pubsubnet变量已设置为true。
排查与修复步骤
检查节点IAM角色权限:确保
aws_iam_role.workernodes关联以下AWS托管策略:AmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryReadOnlyAmazonEKS_CNI_Policy
同时验证角色的信任关系,允许ec2.amazonaws.com和eks.amazonaws.com进行角色假设。
验证安全组规则:确认EKS集群安全组(
aws_security_group.main)配置了必要的通信规则:- 入站:允许来自节点安全组的TCP 443(API服务器)、TCP 10250(kubelet)流量
- 出站:允许节点访问互联网(用于拉取容器镜像、连接控制平面),以及VPC内部的所有必要流量
检查子网配置:
- 若使用私有子网,需配置NAT网关确保节点能访问互联网
- 确认子网路由表包含指向EKS控制平面端点的路由,或允许节点访问VPC内的相关服务
确认AMI兼容性:使用AWS官方提供的EKS优化AMI,自定义AMI可能缺失Kubernetes组件或必要配置,导致节点无法加入集群
检查集群端点访问:确认EKS集群的VPC配置中,节点所在子网能正常解析并访问集群的公有/私有端点
内容的提问来源于stack exchange,提问作者Vamsi
相关产品推荐
相关产品推荐

