背景:
kubectl使用congig文件来访问集群。
目前,工作节点直接拷贝kubeadm在master生成的admin,conf文件。该文件使工作节点的kubectl具有最高权限。
目的:
单独为工作节点的kubectl设置权限适当的config文件。
方案概述:
目前,平台预设了以下四种权限。我们为工作节点的kubectl绑定“开发人员权限”。master节点的kubectl保持“管理员权限”。
目前,手动操作的流程如下:
第一部分:为工作节点的kubectl,生成config文件
操作地点:master节点(需要使用的CA证书,只存在于master节点)
1.使用集群CA,为节点签证书
工作目录:/etc/kubernetes
// 生成服务器的私钥(长度为2048)
openssl genrsa -out worker.key 2048
// 使用私钥,生成证书请求文件
openssl req -new -key worker.key -subj "/CN=worker" -out worker.csr
// 生成证书
openssl x509 -req -in worker.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -days 36500 -out worker.crt
2.生成config文件
1)在/etc/kubernetes创建config-worker文件
内容如下:
apiVersion: v1
kind: Config
preferences: {}
2)设置集群地址和CA证书
kubectl config --kubeconfig=config-worker set-cluster cls-54g954mb --server=https://kube-chongqing.cls-54g954mb.io:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs
3)设置worker用户
kubectl config --kubeconfig=config-worker set-credentials worker --client-key=/etc/kubernetes/worker.key --client-certificate=/etc/kubernetes/worker.crt --embed-certs
4)设置上下文
kubectl config --kubeconfig=config-worker set-context worker@cls-54g954mb --cluster cls-54g954mb --user worker
5)设置当前上下文
kubectl config --kubeconfig=config-worker use-context worker@cls-54g954mb
3.检查clusterRole[dev]
检查是否存在dev
kubectl get clusterrole dev -o yaml
4.绑定角色[dev]
5.检查config文件
检查是否符合预期。
命令 | 预期结果 |
---|---|
kubectl get pod -A --kubeconfig='config-worker' | Y |
kubectl get node --kubeconfig='config-worker' | Y |
kubectl delete pod <pod名字> --kubeconfig='config-worker' | Y |
kubectl get csidrivers --kubeconfig='config-worker' | N |
kubectl get clusterroles --kubeconfig='config-worker' | N |
kubectl get clusterrolebindings --kubeconfig='config-worker' | N |
kubectl delete node 10.0.2.21 --kubeconfig='config-worker' | N |
第二部分:拷贝config文件至工作节点
地址:~/.kube
修改文件名为config