簡體   English   中英

如何使用 kubectl 正確訪問多個 kubernetes 集群

[英]How to properly access multiple kubernetes cluster using kubectl

我有兩個集群,配置文件存儲在.kube中。 我正在導出KUBECONFIG如下

export KUBECONFIG=/home/vagrant/.kube/config-cluster1:/home/vagrant/.kube/config-cluster2

檢查上下文

kubectl config get-contexts
CURRENT   NAME        CLUSTER     AUTHINFO           NAMESPACE
*         cluster-1   cluster-1   kubernetes-admin   
          cluster-2   cluster-2   kubernetes-admin   

但是當我選擇 cluster-2 作為我當前的上下文時,我得到一個錯誤

kubectl config get-contexts
CURRENT   NAME        CLUSTER     AUTHINFO           NAMESPACE
*         cluster-1   cluster-1   kubernetes-admin   
          cluster-2   cluster-2   kubernetes-admin   

kubectl config use-context cluster-2
Switched to context "cluster-2".


kubectl get pods -A
error: You must be logged in to the server (Unauthorized)

如果我只導出 cluster-2 的配置並嘗試運行kubectl它工作正常。

我的問題是我是正確導出配置文件還是應該做更多的事情。

您需要將每個集群的AUTHINFO (配置文件中的context.user )與各自的憑據分開。

例如:

apiVersion: v1
clusters:
- cluster:
    server: https://192.168.10.190:6443
  name: cluster-1
- cluster:
    server: https://192.168.99.101:8443
  name: cluster-2
contexts:
- context:
    cluster: cluster-1
    user: kubernetes-admin-1
  name: cluster-1
- context:
    cluster: cluster-2
    user: kubernetes-admin-2
  name: cluster-2
kind: Config
preferences: {}
users:
- name: kubernetes-admin-1
  user:
    client-certificate: /home/user/.minikube/credential-for-cluster-1.crt
    client-key: /home/user/.minikube/credential-for-cluster-1.key
- name: kubernetes-admin-2
  user:
    client-certificate: /home/user/.minikube/credential-for-cluster-2.crt
    client-key: /home/user/.minikube/credential-for-cluster-2.key

您可以在以下文章中找到更多有用的提示:

在多個 Kubernetes 集群中使用不同的 kubectl 版本

當您使用多個 Kubernetes 集群時,很容易弄亂上下文並在錯誤的集群中運行kubectl 除此之外,Kubernetes 對客戶端( kubectl )和服務器( kubernetes master )之間的版本不匹配有限制,因此在正確的上下文中運行命令並不意味着運行正確的客戶端版本。

為了克服這個:

  • 使用asdf管理多個kubectl版本
  • 設置KUBECONFIG env var 以在多個kubeconfig文件之間進行更改
  • 使用kube-ps1跟蹤您當前的上下文/命名空間
  • 使用kubectxkubens在集群/命名空間之間快速切換
  • 使用別名將它們組合在一起

我還推薦以下閱讀:

我編寫了一個腳本來輕松切換 kubeconfig 和命名空間。 希望它可以幫助你。

. k-use -k <kubeconfig> -n <namespace>

https://github.com/kingonion/k-use

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM