在 CentOS 上部署 Kubernetes(k8s) 时,“设置权限”通常涉及 Linux 系统权限、kubectl 访问权限、RBAC(K8s 权限控制) 等多个层面。下面按最常见的使用场景给你一个完整说明。
K8s 安装和初始化通常需要 root 权限:
sudo -i
或确保当前用户在 wheel 组:
usermod -aG wheel youruser
SELinux 会影响 kubelet 和容器运行:
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
如果是多节点集群,需要放行端口:
systemctl stop firewalld
systemctl disable firewalld
或按需放行:
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --reload
kubeadm init 后会生成 admin 配置:
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
✅ 此用户拥有 集群最高权限
如果你想让某个用户能执行 kubectl:
scp /etc/kubernetes/admin.conf user@node:/home/user/.kube/config
⚠️ 风险:等同于集群管理员
K8s 推荐使用 RBAC 控制权限,而不是共享 admin 配置。
apiVersion: v1
kind: ServiceAccount
metadata:
name: dev-user
namespace: dev
kubectl apply -f sa.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev
name: dev-admin
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dev-admin-binding
namespace: dev
subjects:
- kind: ServiceAccount
name: dev-user
namespace: dev
roleRef:
kind: Role
name: dev-admin
apiGroup: rbac.authorization.k8s.io
✅ 该 SA 只能管理 dev namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-admin-binding
subjects:
- kind: User
name: zhangsan
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
⚠️ 等同于 admin.conf
TOKEN=$(kubectl -n dev get secret \
$(kubectl -n dev get sa dev-user -o jsonpath='{.secrets[0].name}') \
-o jsonpath='{.data.token}' | base64 -d)
然后生成 kubeconfig(或使用脚本自动生成)。
Error: pods is forbidden: User "xxx" cannot get resource "pods"
✅ 说明 RBAC 权限不足
查看权限:
kubectl auth can-i get pods
kubectl auth can-i "*" "*"
kubectl config view
kubectl config current-context
| 需求 | 推荐方式 |
|---|---|
| 系统安装 k8s | root / sudo |
| kubectl 访问 | kubeconfig |
| 精细权限控制 | RBAC |
| namespace 管理员 | Role + RoleBinding |
| 集群管理员 | ClusterRole + ClusterRoleBinding |
如果你愿意,可以告诉我:
我可以给你一套 完全适合你场景的权限方案。