在 EKS 控制台无法看到节点,但 kubectl get nodes 可以看到。这通常是 aws-auth ConfigMap 配置问题导致的。
问题现象
- EKS 控制台 “Compute” 标签页看不到节点
kubectl get nodes可以正常显示节点- 节点运行正常,Pod 可以正常调度
解决方法
需要在 aws-auth ConfigMap 中添加节点的 IAM Role 映射。
编辑 ConfigMap
1 | kubectl edit configmap aws-auth -n kube-system |
添加配置
在 mapRoles 字段中添加节点角色:
1 | apiVersion: v1 |
配置说明
| 字段 | 说明 | 示例 |
|---|---|---|
rolearn |
节点使用的 IAM Role ARN | arn:aws:iam::123456789012:role/eksNodeRole |
groups |
Kubernetes RBAC 组 | system:nodes 是必需的 |
username |
节点用户名模板 | system:node:{{EC2PrivateDNSName}} |
获取节点 IAM Role
不确定节点使用哪个 IAM Role?可以通过以下方式查看:
1 | # 获取节点实例 ID |
注意事项
- 修改
aws-authConfigMap 后,节点会立即在 EKS 控制台显示 - 错误的配置可能导致节点无法加入集群
- 建议先备份现有 ConfigMap:
kubectl get cm aws-auth -n kube-system -o yaml > aws-auth-backup.yaml