1. 程式人生 > >kubernetes中kubeconfig的用法

kubernetes中kubeconfig的用法

com -h use 編寫 文件描述 sys 文件組 clust ole

在開啟了 TLS 的集群中,每當與集群交互的時候少不了的是身份認證,使用 kubeconfig(即證書) 和 token 兩種認證方式是最簡單也最通用的認證方式。

以kubectl為例介紹kubeconfig的配置。kubectl只是個go編寫的可執行程序,只要為kubectl配置合適的kubeconfig,就可以在集群中的任意節點使用。kubectl默認會從$HOME/.kube目錄下查找文件名為 config 的文件,也可以通過設置環境變量 KUBECONFIG 或者通過設置 --kubeconfig 去指定其它 kubeconfig 文件。

總之kubeconfig就是為訪問集群所作的配置。

export KUBE_APISERVER="https://172.20.0.113:6443"
# 設置集群參數
kubectl config set-cluster kubernetes   --certificate-authority=/etc/kubernetes/ssl/ca.pem   --embed-certs=true   --server=${KUBE_APISERVER}
# 設置客戶端認證參數
kubectl config set-credentials admin   --client-certificate=/etc/kubernetes/ssl/admin.pem   --embed-certs=true
--client-key=/etc/kubernetes/ssl/admin-key.pem # 設置上下文參數 kubectl config set-context kubernetes --cluster=kubernetes --user=admin # 設置默認上下文 kubectl config use-context kubernetes

生成的 kubeconfig 被保存到 ~/.kube/config 文件;配置文件描述了集群、用戶和上下文

集群參數

本段設置了所需要訪問的集群的信息。使用set-cluster設置了需要訪問的集群,如上為kubernetes;--certificate-authority設置了該集群的公鑰;--embed-certs為true表示將--certificate-authority證書寫入到kubeconfig中;--server則表示該集群的kube-apiserver地址

生成的kubeconfig 被保存到 ~/.kube/config 文件

用戶參數

本段主要設置用戶的相關信息,主要是用戶證書。如上的用戶名為admin,證書為:/etc/kubernetes/ssl/admin.pem,私鑰為:/etc/kubernetes/ssl/admin-key.pem。註意客戶端的證書首先要經過集群CA的簽署,否則不會被集群認可。此處使用的是ca認證方式,也可以使用token認證,如kubelet的 TLS Boostrap機制下的bootstrapping使用的就是token認證方式。

上下文參數

集群參數用戶參數可以同時設置多對,在上下文參數中將集群參數用戶參數關聯起來。上面的上下文名稱為kubenetes,集群為kubenetes,用戶為admin,表示使用admin的用戶憑證來訪問kubenetes集群的default命名空間,也可以增加--namspace來指定訪問的命名空間。

最後使用kubectl config use-context kubernetes來使用名為kubenetes的環境項來作為配置。如果配置了多個環境項,可以通過切換不同的環境項名字來訪問到不同的集群環境。

備註

使用kubeconfig還需要註意用戶已經經過授權(如RBAC授權),上述例子中用戶的證書中OU字段為system:masterskube-apiserver 預定義的 RoleBinding cluster-admin 將 Group system:masters 與 Role cluster-admin 綁定,該 Role 授予了調用kube-apiserver 相關 API 的權限。

參考:

  • https://k8smeetup.github.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
  • https://k8smeetup.github.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
  • https://jimmysong.io/kubernetes-handbook/guide/kubectl-user-authentication-authorization.html
  • http://kubernetes.kansea.com/docs/user-guide/kubectl

kubernetes中kubeconfig的用法