在实际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