在實際k8s的應用中可能會限制用戶對namespace的訪問,一個賬號訪問多個namespaces 情況,經過測試後設置如下,
創建一個賬號,創建sa後系統會自動創建一個kubernetes.io/service-account-token類型的secret
kubectl create serviceaccount updateuser
綁定集羣權限,(分別綁定在兩個不通的namespaces,綁定哪個namesapce就有哪個namespace相應的權限)
kubectl create rolebinding updateuser --clusterrole=system:controller:deployment-controller --serviceaccount=default:updateuser --namespace=default
kubectl create rolebinding updateuser --clusterrole=system:controller:deployment-controller --serviceaccount=default:updateuser --namespace=kube-system
查看
[root@k8s-master01 rbac]# kubectl describe rolebinding updateuser
Name: updateuser
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: system:controller:deployment-controller
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount updateuser default
查看建立的賬號
kubectl get secret
kubectl describe secret updateuser-token-jqxw7
創建一個集羣的配置文件
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://192.168.0.16:6443" --embed-certs=true --kubeconfig=/tmp/updateuser.conf
查看創建賬號的token
D=$(kubectl get secret updateuser-token-jqxw7 -o jsonpath={.data.token}|base64 -d)
給配置文件def-ns-admin.conf添加token信息
kubectl config set-credentials updateuser --token=$D --kubeconfig=/tmp/updateuser.conf
給配置文件def-ns-admin.conf添加權限信息
kubectl config set-context updateuser@kubernetes --cluster=kubernetes --user=updateuser --kubeconfig=/tmp/updateuser.conf
給配置文件def-ns-admin.conf添加權限信息
kubectl config use-context updateuser@kubernetes --kubeconfig=/tmp/updateuser.conf
將文件拷貝到需要訪問的電腦上,進行測試即可
參考:https://www.cnblogs.com/kuku0223/p/10383063.html