推荐答案
RoleBinding 和 ClusterRoleBinding 的主要区别在于它们的作用范围:
RoleBinding:将角色(Role 或 ClusterRole)绑定到特定命名空间中的用户、组或服务账户。它仅在指定的命名空间内生效。
ClusterRoleBinding:将集群角色(ClusterRole)绑定到集群范围内的用户、组或服务账户。它在整个集群中生效,不受命名空间限制。
本题详细解读
RoleBinding
- 作用范围:RoleBinding 的作用范围限定在某个特定的命名空间内。它只能在该命名空间中授予权限。
- 绑定对象:RoleBinding 可以绑定 Role 或 ClusterRole。如果绑定的是 ClusterRole,则该 ClusterRole 的权限会被限制在 RoleBinding 所在的命名空间内。
- 适用场景:适用于需要为某个命名空间内的用户、组或服务账户授予权限的场景。
ClusterRoleBinding
- 作用范围:ClusterRoleBinding 的作用范围是整个集群,不受命名空间的限制。它可以在集群范围内授予权限。
- 绑定对象:ClusterRoleBinding 只能绑定 ClusterRole,不能绑定 Role。
- 适用场景:适用于需要为整个集群中的用户、组或服务账户授予权限的场景,例如集群管理员权限。
示例
RoleBinding 示例:
// www.javascriptcn.com code example apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: default subjects: - kind: User name: alice apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io
这个 RoleBinding 将
pod-reader角色绑定到default命名空间中的用户alice。ClusterRoleBinding 示例:
// www.javascriptcn.com code example apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cluster-admin-binding subjects: - kind: User name: admin apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
这个 ClusterRoleBinding 将
cluster-admin角色绑定到集群范围内的用户admin。