K8s Pod调用API提示ServiceAccount无集群级别nodes资源list权限如何排查
问题原因
你当前的权限配置问题出在使用了命名空间级别的RoleBinding进行权限绑定,没有使用集群级别的ClusterRoleBinding。
核心逻辑说明
- K8s RBAC体系中,RoleBinding属于命名空间维度的资源,即便绑定的权限对象是ClusterRole,RoleBinding也仅能让该ClusterRole的权限在RoleBinding所在的
default命名空间内生效,仅可访问该命名空间下的资源。 - 你需要操作的
nodes属于集群级资源,不存在于任何命名空间下,报错提示也明确说明需要cluster scope(集群范围)的权限,RoleBinding无法提供该层级的权限。
修复方案
将你现有配置中的RoleBinding替换为ClusterRoleBinding即可,参考配置如下:
--- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: zeppelin-server-cluster-role-binding subjects: - kind: ServiceAccount name: flink namespace: default roleRef: kind: ClusterRole name: zeppelin-server-role apiGroup: rbac.authorization.k8s.io
补充说明
如果仅需要访问指定命名空间下的资源,使用RoleBinding即可满足需求;只要涉及操作集群级资源(如nodes、namespaces、persistentvolumes等)或者需要跨命名空间访问资源的场景,都必须使用ClusterRoleBinding绑定ClusterRole才能生效。
内容的提问来源于stack exchange,提问作者zjffdu
相关产品推荐
相关产品推荐

