生成一个私钥
[root@master-01 study]# cd /etc/kubernetes/pki/
apiserver.crt apiserver.key ca.crt front-proxy-ca.crt front-proxy-client.key
apiserver-etcd-client.crt apiserver-kubelet-client.crt ca.key front-proxy-ca.key sa.key
apiserver-etcd-client.key apiserver-kubelet-client.key etcd front-proxy-client.crt sa.pub
#进入一个子shell,生成一个证书
(umask 077; openssl genrsa -out lqx.key 2048
#证书签署请求,证书用户是lqx
openssl req -new -key lqx.key -out lqx.csr -subj "/CN=lqx"
#证书签署完成
openssl x509 -req -in lqx.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out lqx.crt -days 365
#查看证书,base64加密
openssl x509 -in lqx.crt -text -noout
配置新建的用户
#查看目前的kubectl的config文件
[root@master-01 study]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://cluster.kube.com:7443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
#使用新建的证书设置kubeclt的配置文件
kubectl config set-credentials lqx(用户的标志符) --client-certificate=./lqx.crt --client-key=./lqx.key
#查看新的用户
kubectl config view
#设置上下文
kubectl config set-context lqx@kubernetes --cluster=kubernetes --user=lqx
#切换账号
kubectl config use-context lqx@kubernetes
kubectl get pods #这里可能会出现没有权限
#自定义kubectl的证书
kubectl config set-cluster new-cluster --kubeconfig=/tmp/lqx.conf --server="https://192.168.30.243:6443" --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true
kubectl根据user不同来管理不同的集群
#去A集群创建一个账号
#创建一个账号
kubectl create serviceaccount def-ns-admin
#绑定集群权限
kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin
#查看建立的账号
kubectl get secret
kubectl describe secret def-ns-admin-token-r6dss
#创建一个集群的配置文件
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://10.129.60.211:6443" --embed-certs=true --kubeconfig=/tmp/def-ns-admin.conf
#查看创建账号的token
D=$(kubectl get secret def-ns-admin-token-r6dss -o jsonpath={.data.token}|base64 -d)
#给配置文件def-ns-admin.conf添加token信息
kubectl config set-credentials def-ns-admin --token=$D --kubeconfig=/tmp/def-ns-admin.conf
#给配置文件def-ns-admin.conf添加权限信息
kubectl config set-context def-ns-admin@kubernetes --cluster=kubernetes --user=def-ns-admin --kubeconfig=/tmp/def-ns-admin.conf
#给配置文件def-ns-admin.conf添加权限信息
kubectl config use-context def-ns-admin@kubernetes --kubeconfig=/tmp/def-ns-admin.conf
#将文件拷贝到需要访问的电脑上
#去B集群创建一个账号
重复上面的操作,或者使用默认的kubectl的config
#合并俩个集群的配置文件
copy到一个目录下面:
KUBECONFIG=def-ns-admin.conf:/etc/kubernetes/admin.conf kubectl config view --flatten > config