在 CentOS 上部署的 Kubernetes(k8s) 中,“配置权限”通常涉及 认证(Authentication)+ 授权(Authorization) 两部分。下面按常见场景给你一个清晰、可操作的说明。
K8s 权限核心组件:
CentOS 本身只影响 kubeconfig、证书、网络,不影响 K8s 权限模型
kubectl create namespace dev
kubectl create sa dev-sa -n dev
# 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
# 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
spec:
serviceAccountName: dev-sa
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
openssl)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
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --reload
setenforce 0
# 或配置 kube 相关策略
chmod 600 ~/.kube/config
| 场景 | 配置方式 |
|---|---|
| Pod 访问 API | ServiceAccount + Role |
| 开发人员 | Role + Namespace |
| 运维人员 | ClusterRole |
| CI/CD | ServiceAccount Token |
| 只读权限 | verbs: [“get”,“list”,“watch”] |
如果你能具体说明:
我可以给你一份 可直接用的 YAML 模板。