Sha*_*ash 4 kubernetes kubectl kubeconfig
我有两个集群,配置文件存储在.kube
. 我出口KUBECONFIG
如下
export KUBECONFIG=/home/vagrant/.kube/config-cluster1:/home/vagrant/.kube/config-cluster2
Run Code Online (Sandbox Code Playgroud)
检查上下文
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* cluster-1 cluster-1 kubernetes-admin
cluster-2 cluster-2 kubernetes-admin
Run Code Online (Sandbox Code Playgroud)
但是当我选择 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)
Run Code Online (Sandbox Code Playgroud)
如果我只导出 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
Run Code Online (Sandbox Code Playgroud)
您可以在以下文章中找到更多有用的提示:
在多个 Kubernetes 集群中使用不同的 kubectl 版本:
当您使用多个 Kubernetes 集群时,很容易弄乱上下文并
kubectl
在错误的集群中运行。除此之外,Kubernetes对客户端 ( ) 和服务器 (kubernetes master)之间的版本不匹配有限制kubectl
,因此在正确的上下文中运行命令并不意味着运行正确的客户端版本。
为了克服这个:
asdf
管理多个kubectl
版本KUBECONFIG
env var设置为在多个kubeconfig
文件之间更改kube-ps1
跟踪您当前的上下文/命名空间kubectx
和kubens
在集群/命名空间之间快速更改我还推荐以下阅读:
归档时间: |
|
查看次数: |
480 次 |
最近记录: |