📝 CKA 1.26·第1题|Kubernetes 权限配置快速解答
场景: 令 CI/CD 管道在
app-team1命名空间中,仅具备创建 Deployment、StatefulSet、DaemonSet 的权限。
一、题目要求
-
切换上下文到
k8s集群。 -
创建
deployment-clusterroleClusterRole,仅允许执行create动作,针对资源:deploymentsstatefulsetsdaemonsets
-
在
app-team1命名空间中创建 ServiceAccountcicd-token。 -
通过 RoleBinding 将该 ClusterRole 限定绑定到
app-team1:cicd-token。
二、核心命令示例
# 1. 切换上下文
kubectl config use-context k8s
# 2. 创建 ClusterRole(仅允许 create 指定 workload)
kubectl create clusterrole deployment-clusterrole \
--verb=create \
--resource=deployments,statefulsets,daemonsets
# 3. 创建 ServiceAccount
kubectl create serviceaccount cicd-token \
-n app-team1
# 4. 创建 RoleBinding(ClusterRole → ServiceAccount)
kubectl create rolebinding cicd-token-binding \
--clusterrole=deployment-clusterrole \
--serviceaccount=app-team1:cicd-token \
-n app-team1
三、关键点提示
- ClusterRole 作用域:定义权限集合,可跨命名空间复用。
- RoleBinding 限定范围:仅在
app-team1生效,不影响其他命名空间。 - Verb 与 资源粒度:
--verb=create+--resource=deployments,statefulsets,daemonsets(复数形式)。 - 最小权限原则:仅授予所需操作,避免多余权限。
四、常见问题与排查
-
权限不生效:
- 确认使用复数资源名称:
deployments、statefulsets、daemonsets。 - 复查 ClusterRole 名称是否正确。
- 确认使用复数资源名称:
-
RoleBinding 无法绑定:
- 检查命名空间是否一致(
-n app-team1)。 - 确保 ServiceAccount 存在。
- 检查命名空间是否一致(
-
误用 ClusterRoleBinding 导致越权:
- 使用 RoleBinding 可局部授权,满足安全隔离。
- 权限不生效:检查资源名拼写(需复数)
- ServiceAccount 未注入:确认
-n app-team1与--serviceaccount=app-team1:cicd-token一致 - 误用 ClusterRoleBinding:会导致权限跨命名空间扩散