关于EKS集群中eks:cloud-controller-manager ClusterRole的疑问
我们在EKS集群中发现一个未手动创建的ClusterRole——
eks:cloud-controller-manager,无法找到其创建来源,想了解该ClusterRole的作用。执行命令kubectl get clusterrole eks:cloud-controller-manager -o yaml得到如下配置:kind: ClusterRole metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRole","metadata":{"annotations":{},"name":"eks:cloud-controller-manager"},"rules":[{"apiGroups":[""],"resources":["events"],"verbs":["create","patch","update"]},{"apiGroups":[""],"resources":["nodes"],"verbs":["*"]},{"apiGroups":[""],"resources":["nodes/status"],"verbs":["patch"]},{"apiGroups":[""],"resources":["services"],"verbs":["list","patch","update","watch"]},{"apiGroups":[""],"resources":["services/status"],"verbs":["list","patch","update","watch"]},{"apiGroups":[""],"resources":["serviceaccounts"],"verbs":["create","get"]},{"apiGroups":[""],"resources":["persistentvolumes"],"verbs":["get","list","update","watch"]},{"apiGroups":[""],"resources":["endpoints"],"verbs":["create","get","list","watch","update"]},{"apiGroups":["coordination.k8s.io"],"resources":["leases"],"verbs":["create","get","list","watch","update"]},{"apiGroups":[""],"resources":["serviceaccounts/token"],"verbs":["create"]]}] creationTimestamp: "2022-08-02T00:25:52Z" name: eks:cloud-controller-manager resourceVersion: "762242250" uid: 34e568bb-20b5-4c33-8a7b-fcd081ae0a28 rules: - apiGroups: - "" resources: - events verbs: - create - patch - update - apiGroups: - "" resources: - nodes verbs: - '*' - apiGroups: - "" resources: - serviceaccounts/token verbs: - create我们尝试在GitOps仓库中查找该对象,但没有找到。
回答
1. 创建来源说明
这个eks:cloud-controller-manager是AWS EKS集群自动创建并维护的系统级ClusterRole,并非由用户手动部署或通过GitOps流程推送的,所以你在GitOps仓库中找不到对应的配置文件。它是EKS控制平面在集群初始化、版本升级或组件更新时自动生成的,用于为集群内置的云控制器管理器(Cloud Controller Manager, CCM)提供必要权限。
2. 核心作用解析
该ClusterRole的权限完全匹配EKS云控制器管理器的工作需求,具体对应规则的用途如下:
- 事件管理:对
events资源的create/patch/update权限,允许CCM在集群中生成、更新事件日志,用于记录云资源交互的状态(例如节点注册成功、负载均衡器配置完成等)。 - 节点全生命周期管理:对
nodes资源的所有权限(*)及nodes/status的patch权限,支持CCM对接AWS EC2服务,完成节点的注册、状态同步、故障标记等核心操作。 - 服务与负载均衡管理:对
services及services/status的list/patch/update/watch权限,用于将集群内LoadBalancer类型的Service与AWS ELB/NLB等云负载均衡器进行绑定、同步配置和状态。 - 服务账户与令牌管理:对
serviceaccounts的create/get权限和serviceaccounts/token的create权限,允许CCM创建自身运行所需的服务账户及身份令牌,完成组件的身份认证。 - 存储卷管理:对
persistentvolumes的get/list/update/watch权限,支持CCM对接AWS EBS等存储服务,同步PersistentVolume的状态并管理其生命周期。 - 端点管理:对
endpoints的create/get/list/watch/update权限,确保服务端点与云资源的映射关系准确。 - 领导者选举:对
coordination.k8s.io/leases的全生命周期权限,用于CCM组件的领导者选举机制,保证同一时刻只有一个活跃实例工作,避免操作冲突。
3. 重要注意事项
- 该角色是EKS集群正常运行的必要组件,禁止随意删除或修改,否则会导致节点管理、负载均衡配置、存储卷调度等核心功能失效。
- 若需调整相关权限,应通过AWS官方提供的EKS配置方式(如修改集群组件的RBAC规则)进行,避免直接手动修改该ClusterRole——EKS控制平面在后续更新时会覆盖手动修改的内容。
内容的提问来源于stack exchange,提问作者Amit Raj
相关产品推荐
相关产品推荐

