1 下载、解压并准备如下所示的命令行工具。 1 2 3 4 5 6 curl -L https://gi thub.com/cloudflare/ cfssl/releases/ download/v1.5.0/ cfssl_1.5.0 _linux_amd64 -o cfssl//gi thub.com/cloudflare/ cfssl/releases/ download/v1.5.0/ cfssljson_1.5.0 _linux_amd64 -o cfssljson//gi thub.com/cloudflare/ cfssl/releases/ download/v1.5.0/ cfssl-certinfo_1.5.0 _linux_amd64 -o cfssl-certinfo
将证书工具放到/usr/local/bin下面
1 2 3 mv cfssl /usr/ local/bin/ cfssl/usr/ local/bin/ cfssljson/usr/ local/bin/ cfssl-certinfo
2 准备配置文件 创建一个 JSON 配置文件,用于 CA 证书签名请求(CSR) ,这里存放在/usr/local/k8s-install
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 vi /usr/ local/k8s-install/ devuser-csr.json"CN" : "devuser" ,"key" : {"algo" : "rsa" ,"size" : 2048 "names" :[{"C" : "CN" ,"ST" : "Beijing" ,"L" : "Beijing" ,"O" : "k8s" ,"OU" : "System" 
3 针对用户devuser生成证书文件 1 2 3 4 5 6 $ cd /etc/ kubernetes/pki/ /usr/ local/k8s-install/ devuser-csr.json|cfssljson -bare devusergrep  devuser
4 设置集群参数 1 2 3 4 5 6 $ export  KUBE_APISERVER ="https://10.0.0.10:6443" cd  /usr /local /k8s-install kubectl  config  set-cluster  kubernetes  \--certificate-authority=/etc/kubernetes/pki/ca.crt  --embed-certs=true  --server=${KUBE_APISERVER}  --kubeconfig=devuser.kubeconfig 
得到结果:
1 2 3 4 5 6 7 8 9 10 11 apiVersion:  v1 clusters: -  cluster: certificate-authority-data:  LS0tLS1CRUdJTiBD... server:  https://10.0.0.10:6443 name:  kubernetes contexts:  null current-context:  "" kind:  Config preferences:  {}users:  null 
这里把证书导进来了
5 设置客户端认证参数 1 2 3 4 5 kubectl  config  set-credentials  devuser  \ --client-certificate=/etc/kubernetes/pki/devuser.pem  \--client-key=/etc/kubernetes/pki/devuser-key.pem  \--embed-certs=true  \--kubeconfig=devuser.kubeconfig           
得到结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 apiVersion:  v1 clusters: -  cluster: certificate-authority-data:  LS0tLS1CRUdJTiBD... server:  https://10.0.0.10:6443 name:  kubernetes contexts:  null current-context:  "" kind:  Config preferences:  {}users: -  name:  devuser user: client-certificate-data:  LS0tLS1CRUdJTiBDRVJU... client-key-data:  LS0tLS1CRUdJTiBSU0EgUFJJVkFURSB... 
得到用户的信息,用户名,证书以及私钥的信息。
6 提前创建dev空间 root用户下
1 $ kubectl create namespace  dev 
7 设置上下文参数 1 2 3 4 5 $ kubectl  config  set-context  kubernetes  \--cluster=kubernetes  \--user=devuser  \--namespace=dev  \--kubeconfig=devuser.kubeconfig 
得到结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 apiVersion :  v1 clusters : -  cluster: certificate-authority-data :  LS0tLS1CRUdJTiBD... server :  https://10.0.0.10:6443 name :  kubernetes contexts : -  context: cluster :  kubernetes namespace :  dev user :  devuser name :  kubernetes current-context :  "" kind :  Config preferences :  {} users : -  name: devuser user : client-certificate-data :  LS0tLS1CRUdJTiBDRVJU... client-key-data :  LS0tLS1CRUdJTiBSU0EgUFJJVkFURSB... 
通过命令在devuser.kubeconfig文件中多出一个上下文:
1 2 3 4 5 - context:namespace : dev user : devuser name : kubernetes 
8 设置默认上下文 1 kubectl config  use-context kubernetes --kubeconfig =devuser.kubeconfig
得到结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 apiVersion :  v1 clusters : -  cluster: certificate-authority-data :  LS0tLS1CRUdJTiBD... server :  https://10.0.0.10:6443 name :  kubernetes contexts : -  context: cluster :  kubernetes namespace :  dev user :  devuser name :  kubernetes current-context :  kubernetes kind :  Config preferences :  {} users : -  name: devuser user : client-certificate-data :  LS0tLS1CRUdJTiBDRVJU... client-key-data :  LS0tLS1CRUdJTiBSU0EgUFJJVkFURSB... 
在文件中出现
1 current-context :  kubernetes
9 创建角色绑定 1 2 3 4 $ kubectl create rolebinding devuser-admin-binding \--clusterrole =admin \--user =devuser \--namespace =dev
10 将devuser.kubeconfig放到devuser home目录下 devuser用户,先创建/home/devuser/.kube文件夹
1 [devuser@k8s -master01 ~]$  mkdir .kube
root用户操作
1 2 [root@k8s-master01 devuser]# cp ./devuser.kubeconfig / home/devuser/ .kube/config/home/ devuser/.kube/ config
11 验证结果 1 2 3 4 [devuser@k8s-master01 ~]$ kubectl run  nginx --image =nginxget  pod 
root用户查看
1 2 3 [root@k8s - master01 devuser]# kubectl get  pod 1 / 1      Running      0                2 m1s