You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为支持RBAC的Kubernetes集群创建多个管理员用户?

创建多个Kubernetes管理员用户(RBAC模式)

没问题,我来帮你搞定这个事儿!要给多个用户分配K8s集群的管理员权限,核心就是把用户(或者用户组)和K8s自带的集群级管理员角色绑定起来,下面是一步步的实操方法:

1. 先创建用户身份(证书+kubeconfig)

首先你得给每个管理员用户生成身份凭证——私钥、签名证书,然后配置到kubeconfig里。这里以创建用户alice为例:

# 生成用户私钥
openssl genrsa -out alice.key 2048

# 生成证书签名请求(CSR),CN是用户名,O是用户所属组(可选,后面可以用组批量绑定)
openssl req -new -key alice.key -out alice.csr -subj "/CN=alice/O=cluster-admins"

# 用集群CA签名证书(如果你有权限访问控制节点的CA文件)
openssl x509 -req -in alice.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out alice.crt -days 365

# 将用户添加到kubeconfig
kubectl config set-credentials alice --client-certificate=alice.crt --client-key=alice.key

如果不想直接操作CA文件,也可以用kubectl certificate approve来通过CSR请求,步骤差不多:先提交CSR到集群,再用命令审批即可。

2. 绑定管理员权限到用户

K8s默认提供了一个拥有全集群所有权限的ClusterRole:cluster-admin,我们只需要把用户绑定到这个角色就可以了。

创建一个ClusterRoleBinding的yaml文件(比如alice-cluster-admin.yaml):

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: alice-cluster-admin
subjects:
- kind: User
  name: alice  # 这里填你的用户名
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin  # 绑定默认的管理员角色
  apiGroup: rbac.authorization.k8s.io

然后执行:

kubectl apply -f alice-cluster-admin.yaml

3. 批量创建多个管理员用户

如果要创建多个用户,重复上面的步骤太麻烦,写个简单的shell脚本批量搞定:

#!/bin/bash
# 定义要创建的管理员用户列表
ADMIN_USERS=("bob" "charlie" "diana")
# 集群CA文件路径(控制节点上的路径)
CA_CERT="/etc/kubernetes/pki/ca.crt"
CA_KEY="/etc/kubernetes/pki/ca.key"
# 用户所属组
ADMIN_GROUP="cluster-admins"

for USER in "${ADMIN_USERS[@]}"; do
  echo "创建用户: $USER"
  # 生成私钥
  openssl genrsa -out "${USER}.key" 2048
  # 生成CSR
  openssl req -new -key "${USER}.key" -out "${USER}.csr" -subj "/CN=${USER}/O=${ADMIN_GROUP}"
  # 签名证书
  openssl x509 -req -in "${USER}.csr" -CA "${CA_CERT}" -CAkey "${CA_KEY}" -CAcreateserial -out "${USER}.crt" -days 365
  # 配置kubeconfig
  kubectl config set-credentials "${USER}" --client-certificate="${USER}.crt" --client-key="${USER}.key"
  # 创建ClusterRoleBinding
  cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ${USER}-cluster-admin
subjects:
- kind: User
  name: ${USER}
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
EOF
done

把脚本保存成create-admins.sh,赋予执行权限chmod +x create-admins.sh,然后在控制节点运行就行。

4. 更高效的方式:用用户组批量绑定

如果你的管理员用户都属于同一个组,比如cluster-admins,可以直接把整个组绑定到cluster-admin角色,这样后续新增用户只要加入这个组,自动获得管理员权限:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-admins-group-binding
subjects:
- kind: Group
  name: cluster-admins  # 这里填你的用户组名
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

执行kubectl apply -f group-cluster-admin.yaml后,所有CSR里O=cluster-admins的用户都会自动拥有管理员权限,不用再逐个绑定。

验证权限

最后可以验证一下用户的权限是否生效:

# 用bob用户查看集群节点
kubectl --user=bob get nodes
# 检查用户是否拥有所有权限
kubectl auth can-i --user=bob '*' '*'

如果返回yes,说明权限配置成功啦!

内容的提问来源于stack exchange,提问作者sherlock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:14:10