如何解决如何使用kubectl正确访问多个kubernetes集群
我有两个集群,配置文件存储在.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)
如果我仅导出集群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
您可以在以下文章中找到更多有用的提示:
Using different kubectl versions with multiple Kubernetes clusters:
当您使用多个Kubernetes集群时,很容易 弄乱上下文并在错误的集群中运行
kubectl
。超越 也就是说,Kubernetes具有restrictions,用于 客户端(kubectl
)和服务器(kubernetes主服务器),因此运行命令 在正确的上下文中并不意味着运行正确的客户端版本。
要克服这一点:
- 使用
asdf
管理多个kubectl
版本 - Set the
KUBECONFIG
环境变量可在多个kubeconfig
文件之间切换 - 使用
kube-ps1
跟踪当前上下文/名称空间 - 使用
kubectx
andkubens
在群集/命名空间之间快速切换 - 使用别名将它们全部组合在一起
我还建议您阅读以下内容:
- Mastering the KUBECONFIG file,作者:Ahmet Alp Balkan( Google工程师) Henli Jacobs( Zalando Tech )的
- How Zalando Manages 140+ Kubernetes Clusters
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。