为EKS 1.21工作节点配置集群管理员权限后节点组异常求助
问题解决方法
问题根源
将EKS工作节点角色直接加入system:masters组会触发EKS控制台健康检查误判——控制台的节点健康校验逻辑期望节点角色仅映射到system:nodes和system:bootstrappers组,同时存在system:masters会导致校验逻辑判定角色配置异常,进而标记节点组为降级状态。此外,直接给节点赋予system:masters权限存在严重安全风险,不推荐这种做法。
修复步骤
1. 恢复aws-auth ConfigMap
先移除aws-auth ConfigMap中的system:masters组,恢复默认节点角色映射:
data: mapRoles: | - groups: - system:nodes - system:bootstrappers rolearn: arn:aws:iam::686143527223:role/terraform-eks-worker-node-role username: system:node:{{EC2PrivateDNSName}}
执行更新命令:
kubectl apply -f aws-auth.yaml
2. 通过RBAC赋予节点所需权限
若确实需要给工作节点赋予集群管理员级权限,不要直接使用system:masters,而是通过自定义ClusterRoleBinding实现:
方法一:绑定system:nodes组到cluster-admin角色
创建node-cluster-admin-binding.yaml文件:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: node-cluster-admin-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:nodes
执行创建命令:
kubectl apply -f node-cluster-admin-binding.yaml
方法二:绑定特定节点用户名到cluster-admin角色
若仅需给特定节点赋予权限,可针对节点用户名绑定:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: specific-node-cluster-admin-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: system:node:<EC2_PRIVATE_DNS_NAME>
替换<EC2_PRIVATE_DNS_NAME>为目标节点的私有DNS名称,再执行创建命令。
3. 验证节点组状态
完成操作后等待5-10分钟,刷新EKS控制台查看节点组状态,降级状态会自动恢复,同时节点将获得所需的集群权限。
关键说明
- 禁止将工作节点角色直接加入
system:masters组,这会让节点拥有完全集群控制权限,带来极高安全隐患。 - EKS控制台健康检查依赖节点角色的标准映射配置,偏离默认配置易触发误判,推荐通过RBAC机制扩展权限而非修改默认组映射。
内容的提问来源于stack exchange,提问作者abhinav tyagi
相关产品推荐
相关产品推荐

