首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用kubectl正确访问多个kubernetes集群

如何使用kubectl正确访问多个kubernetes集群
EN

Stack Overflow用户
提问于 2020-10-27 17:25:43
回答 2查看 2.7K关注 0票数 6

我有两个集群,配置文件存储在.kube中。我正在导出KUBECONFIG如下所示

代码语言:javascript
复制
export KUBECONFIG=/home/vagrant/.kube/config-cluster1:/home/vagrant/.kube/config-cluster2

检查上下文

代码语言:javascript
复制
kubectl config get-contexts
CURRENT   NAME        CLUSTER     AUTHINFO           NAMESPACE
*         cluster-1   cluster-1   kubernetes-admin   
          cluster-2   cluster-2   kubernetes-admin   

但是,当我选择集群2作为当前上下文时,将出现一个错误。

代码语言:javascript
复制
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)

如果我只导出集群-2的配置并尝试运行kubectl,它就可以正常工作。

我的问题是我是正确地导出配置文件,还是应该做更多的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-04 17:01:49

您需要将每个集群的AUTHINFO (context.user on配置文件)与各自的凭据分开。

例如:

代码语言:javascript
复制
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主版)之间的版本不匹配,因此在正确的上下文中运行命令并不意味着运行正确的客户端版本。

为了克服这一问题:

  • 使用asdf管理多个kubectl版本
  • KUBECONFIG env在多个kubeconfig文件之间进行更改
  • 使用kube-ps1跟踪当前上下文/命名空间
  • 使用kubens在集群/命名空间之间进行快速更改
  • 使用别名将它们组合在一起。

我还建议如下:

票数 8
EN

Stack Overflow用户

发布于 2022-08-06 08:37:56

我编写了一个脚本来轻松切换kubeconfig和命名空间。希望它能帮到你。

代码语言:javascript
复制
. k-use -k <kubeconfig> -n <namespace>

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64559766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档