温馨提示×

centos k8s怎么配置权限

小樊
48
2026-09-30 12:27:36
栏目: 智能运维

在 CentOS 上部署的 Kubernetes(k8s) 中,“配置权限”通常涉及 认证(Authentication)+ 授权(Authorization) 两部分。下面按常见场景给你一个清晰、可操作的说明。


一、Kubernetes 权限模型简介

K8s 权限核心组件:

  • User / ServiceAccount:身份
  • Role / ClusterRole:权限定义
  • RoleBinding / ClusterRoleBinding:绑定关系
  • RBAC(基于角色的访问控制):最常用方式

CentOS 本身只影响 kubeconfig、证书、网络,不影响 K8s 权限模型


二、最常见:使用 RBAC 配置权限(推荐)

1️⃣ 创建命名空间(可选)

kubectl create namespace dev

2️⃣ 创建 ServiceAccount(Pod 用)

kubectl create sa dev-sa -n dev

3️⃣ 创建 Role(命名空间级别权限)

# role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: dev
  name: dev-role
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch", "create", "update", "delete"]
kubectl apply -f role.yaml

4️⃣ 绑定 Role 到 ServiceAccount

# rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dev-rolebinding
  namespace: dev
subjects:
- kind: ServiceAccount
  name: dev-sa
  namespace: dev
roleRef:
  kind: Role
  name: dev-role
  apiGroup: rbac.authorization.k8s.io
kubectl apply -f rolebinding.yaml

5️⃣ Pod 使用 ServiceAccount

spec:
  serviceAccountName: dev-sa

三、集群级别权限(ClusterRole)

示例:集群管理员权限

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-admin-role
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
kubectl create clusterrolebinding admin-binding \
  --clusterrole=cluster-admin \
  --user=your-user

四、给“人”配置 kubectl 权限(CentOS 上)

方式一:使用 kubeconfig(最常见)

  1. 生成证书(或在 CentOS 使用 openssl)
  2. 创建 User
  3. 绑定 Role
kubectl config set-credentials dev-user \
  --client-certificate=dev.crt \
  --client-key=dev.key

kubectl config set-context dev-context \
  --cluster=kubernetes \
  --user=dev-user \
  --namespace=dev

kubectl config use-context dev-context

方式二:跳过认证(仅测试环境)

kubectl --insecure-skip-tls-verify ...

⚠️ 不建议生产使用


五、查看当前权限

kubectl auth can-i create pods
kubectl auth can-i "*" "*"
kubectl get rolebindings -A
kubectl get clusterrolebindings

六、CentOS 特别注意事项

  1. 防火墙
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --reload
  1. SELinux
setenforce 0
# 或配置 kube 相关策略
  1. kubeconfig 权限
chmod 600 ~/.kube/config

七、常见权限场景速查

场景 配置方式
Pod 访问 API ServiceAccount + Role
开发人员 Role + Namespace
运维人员 ClusterRole
CI/CD ServiceAccount Token
只读权限 verbs: [“get”,“list”,“watch”]

如果你能具体说明:

  • ✅ 是 人 还是 Pod 需要权限
  • ✅ 是 集群级 还是 命名空间级
  • ✅ 是否是 kubeadm / 二进制 / 云厂商

我可以给你一份 可直接用的 YAML 模板。

0 踩