我们通过如下命令可以看到当前Kubernetes集群的管理用户是什么:

    1. [root@master ssl]# kubectl config view
    2. apiVersion: v1
    3. clusters:
    4. - cluster:
    5. certificate-authority-data: DATA+OMITTED
    6. server: https://172.16.1.128:6443
    7. name: cluster1
    8. contexts:
    9. - context:
    10. cluster: cluster1
    11. user: admin
    12. name: context-cluster1-admin
    13. - context:
    14. cluster: kubernetes
    15. namespace: kube-system
    16. user: joker
    17. name: joker-context
    18. current-context: context-cluster1-admin
    19. kind: Config
    20. preferences: {}
    21. users:
    22. - name: admin
    23. user:
    24. client-certificate-data: REDACTED
    25. client-key-data: REDACTED
    26. - name: joker
    27. user:
    28. client-certificate: /root/k8s/rbac/joker.crt
    29. client-key: /root/k8s/rbac/joker.key

    下面我们自定义证书文件,然后自定义用户来作为集群的管理用户:
    1、我们用的ca证书还是集群的原有证书,我的证书位置在如下位置:

    1. [root@master ssl]# pwd
    2. /etc/kubernetes/ssl
    3. You have new mail in /var/spool/mail/root
    4. [root@master ssl]# ll
    5. total 72
    6. -rw-r--r-- 1 root root 1679 Sep 4 18:17 admin-key.pem
    7. -rw-r--r-- 1 root root 1391 Sep 4 18:17 admin.pem
    8. -rw-r--r-- 1 root root 997 Sep 4 18:22 aggregator-proxy.csr
    9. -rw-r--r-- 1 root root 219 Sep 4 16:54 aggregator-proxy-csr.json
    10. -rw------- 1 root root 1679 Sep 4 18:22 aggregator-proxy-key.pem
    11. -rw-r--r-- 1 root root 1383 Sep 4 18:22 aggregator-proxy.pem
    12. -rw-r--r-- 1 root root 294 Sep 4 16:42 ca-config.json
    13. -rw-r--r-- 1 root root 1679 Sep 4 16:42 ca-key.pem
    14. -rw-r--r-- 1 root root 1350 Sep 4 16:42 ca.pem
    15. -rw-r--r-- 1 root root 17 Sep 9 07:35 ca.srl
    16. -rw-r--r-- 1 root root 1082 Sep 4 18:23 kubelet.csr
    17. -rw-r--r-- 1 root root 281 Sep 4 16:56 kubelet-csr.json
    18. -rw------- 1 root root 1679 Sep 4 18:23 kubelet-key.pem
    19. -rw-r--r-- 1 root root 1448 Sep 4 18:23 kubelet.pem
    20. -rw-r--r-- 1 root root 1265 Sep 4 18:22 kubernetes.csr
    21. -rw-r--r-- 1 root root 466 Sep 4 16:54 kubernetes-csr.json
    22. -rw------- 1 root root 1675 Sep 4 18:22 kubernetes-key.pem
    23. -rw-r--r-- 1 root root 1631 Sep 4 18:22 kubernetes.pem

    2、自定义证书

    1. # 生成自定义key
    2. # (umask 077; openssl genrsa -out unclejoker.key 2048)
    3. # 生成csr签名请求文件
    4. # openssl req -new -key unclejoker.key -out unclejoker.csr -subj "/CN=unclejoker"
    5. # 用CA证书进行签名
    6. # openssl x509 -req -days 365 -in unclejoker.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out unclejoker.crt

    3、配置集群config,添加集群(由于我们这里只有一个集群,所以这步不操作)
    命令如下:

    1. # kubectl config set-cluster joker-kubernetes --server=https://172.16.1.128:6443 --certificate-authority=./ca.pem --embed-certs=true

    4、配置集群config,添加用户
    命令如下:

    1. # kubectl config set-credentials unclejoker --client-certificate=./unclejoker.crt --client-key=./unclejoker.key --embed-certs=true

    5、添加上下文关联contexts,命令如下:

    1. # kubectl config set-context unclejoker@joker-kubernetes --cluster=joker-kubernetes --user=unclejoker --namespace=default

    到此就配置完成,如果要使用这个用户,则配置current-context

    1. # kubectl config use-context unclejoker@joker-kubernetes

    这是我们使用kubectl等操作就是在unclejoker用户下执行了。