Kubernetes實戰總結 - kubectl多集群配置


前言

Kubectl 是一個命令行接口,用於對 Kubernetes 集群運行命令。
Kubectl 在 $HOME/.kube 目錄中尋找一個名為 config 的文件。
你可以通過設置環境變量 KUBECONFIG 或設置 --kubeconfig 參數指定其它 kubeconfig 文件。

 

 


基本配置

當集群初始化成功后,要使 kubectl 適用於非 root 用戶,則需要運行以下命令,這些命令也是 kubeadm init輸出的一部分:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 即創建.kube目錄 -> 拷貝配置文件 -> 用戶授權

當然,如果你是 root 用戶,則可以直接添加環境變量:

export KUBECONFIG=/etc/kubernetes/admin.conf

 

 


本地配置

① 打開CMD,在用戶目錄下新建.kube文件夾【mkdir .kube】並拷貝k8s集群config文件到.kube目錄。

② 下載 kubectl.exe 文件放置任意文件夾,添加到環境變量Path中,打開CMD即可執行kubectl命令。

 

 


多集群配置

  1)同樣需要新建.kube文件夾,拷貝不同集群的config,例如重命名為config-jhmy和config-ymt,分別查看配置文件。

[root@jenkins .kube]# cat config-jhmy
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSU******
    server: https://10.88.88.147:6443
  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: LS0tLS1CRUdJTiBDRVJUSUZ******
    client-key-data: LS0tLS1CRUdJTiBSU0E******

 

  2)兩份配置文件中context、cluster、users名稱必須不一樣(同集群設置不同環境除外),否則調用將會出錯,所以我們可以適當修改配置文件。

[root@jenkins .kube]# cat config-jhmy
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSU******
    server: https://10.88.88.147:6443
  name: k8s-jhmy
contexts:
- context:
    cluster: k8s-jhmy
    user: k8s-jhmy
  name: k8s-jhmy
current-context: k8s-jhmy
kind: Config
preferences: {}
users:
- name: k8s-jhmy
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZ******
    client-key-data: LS0tLS1CRUdJTiBSU0EgU******
[root@jenkins .kube]# cat config-ymt apiVersion: v1 clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSU****** server: https://10.88.88.148:6443 name: k8s-ymt contexts: - context: cluster: k8s-ymt user: k8s-ymt name: k8s-ymt current-context: k8s-ymt kind: Config preferences: {} users: - name: k8s-ymt user: client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZ****** client-key-data: LS0tLS1CRUdJTiBSU0EgU******

 

3)然后執行以下命令生成新的config文件即可

[root@jenkins8 .kube]# KUBECONFIG=config-ymt:config-jhmy kubectl config view --flatten > $HOME/.kube/config
[root@jenkins8 .kube]# cat config
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0F******
    server: https://10.88.88.147:6443
  name: k8s-jhmy
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0F******
    server: https://10.88.88.148:6443
  name: k8s-ymt
contexts:
- context:
    cluster: k8s-jhmy
    user: k8s-jhmy
  name: k8s-jhmy
- context:
    cluster: k8s-ymt
    user: k8s-ymt
  name: k8s-ymt
current-context: k8s-jhmy
kind: Config
preferences: {}
users:
- name: k8s-jhmy
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJ******
    client-key-data: LS0tLS1CRUdJTiBSU******
- name: k8s-ymt
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJ******
    client-key-data: LS0tLS1CRUdJTiBSU******

 

 4)現在我們來測試一下吧

[root@jenkins8 .kube]# kubectl config current-context
k8s-jhmy
[root@jenkins8 .kube]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
k8s116   Ready    master   67d   v1.17.5
k8s117   Ready    master   67d   v1.17.5
k8s134   Ready    <none>   67d   v1.17.5
k8s147   Ready    master   67d   v1.17.5
k8s178   Ready    <none>   67d   v1.17.5
[root@jenkins8 .kube]# kubectl config use-context k8s-ymt
Switched to context "k8s-ymt".

 

作者:Leozhanggg

出處:https://www.cnblogs.com/leozhanggg/p/13223951.html

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM