EKS新增节点无法加入集群,报CNI插件未初始化错误
EKS新节点无法加入集群(CNI未初始化)问题排查方案
问题本质
自定义启动模板未正确配置EKS节点必需的CNI初始化流程,导致AWS VPC CNI插件未安装/启动,进而出现cni plugin not initialized错误,同时缺失/var/log/aws-routed-eni目录——该目录是AWS VPC CNI组件运行后生成的核心日志目录。
具体排查修复步骤
1. 核对启动模板的User Data配置
你使用的ami-0af5eb518f7616978是Amazon EKS优化的Amazon Linux 2镜像,必须通过特定User Data触发CNI初始化流程。对比AWS默认启动模板的User Data,确保自定义模板包含以下核心脚本:
#!/bin/bash set -o xtrace /etc/eks/bootstrap.sh <你的集群名称> --kubelet-extra-args "--node-labels=eks.amazonaws.com/nodegroup=<你的节点组名称>,eks.amazonaws.com/nodegroup-image=<镜像ID>"
替换<你的集群名称>``<你的节点组名称>``<镜像ID>为实际值即可,该脚本负责拉取EKS集群配置、安装并启动VPC CNI插件。
2. 检查节点上的CNI组件状态
登录新节点执行以下命令,验证CNI相关组件是否存在:
- 查看
/opt/cni/bin目录是否有AWS CNI二进制文件:ls /opt/cni/bin/aws-cni - 检查CNI配置文件是否生成:
cat /etc/cni/net.d/10-aws.conflist - 在集群内查看
aws-nodeDaemonSet运行状态:kubectl get daemonset -n kube-system aws-node
若上述文件/组件缺失,说明节点初始化时未触发CNI安装流程,需重新确认User Data是否完整执行。
3. 再核对节点角色的IAM策略
虽然你已确认权限充足,但需确保节点角色绑定了三个核心托管策略:AmazonEKSWorkerNodePolicy、AmazonEKS_CNI_Policy、AmazonEC2ContainerRegistryReadOnly,尤其是AmazonEKS_CNI_Policy——它负责授权CNI组件管理ENI和路由表的权限。
4. 检查启动模板的网络配置
- 节点组使用的子网需与EKS集群VPC子网一致,且子网需启用自动分配私有IP
- 安全组需允许节点与控制平面的443端口通信,以及节点间的ENI通信(53、67-68、4789等端口)
5. 查看节点初始化日志
通过cloud-init日志确认User Data是否正常执行:
cat /var/log/cloud-init-output.log
若日志中出现bootstrap.sh执行失败的信息,可根据错误提示进一步排查(如集群名称错误、网络不通导致无法拉取配置等)。
内容的提问来源于stack exchange,提问作者BrianY
相关产品推荐
相关产品推荐

