大家都知道kubectl主要用来管理kubernetes集群,但当我们的环境中有多套kubernetes集群时,该如何进行管理呢,下面列出了通过配置kubeconfig来实现kubectl管理多套集群的方法。
一、使用kubeclt合并多个config
这里假设当前客户端已配置一个集群的访问凭证, 即~/.kube/config 里已包含一套集群的访问凭证,那么我们可以将另一套集群的访问凭证上传到/tmp,并命名为test-config,然后执行以下命令以合并多个集群的config。
代码语言:javascript复制#KUBECONFIG=~/.kube/config:/tmp/test-config kubectl config view --merge --flatten >> ~/.kube/config
#export KUBECONFIG=~/.kube/config
可以使用kubectl config view查看合并后kubeconfig配置情况,正常情况下,可以显示两个集群凭证信息。
说明:这里在测试时遇到个小问题,上面的命令不加>> ~/.kube/config时,可以输出两个集群的访问凭证,正常情况下应该使用
> ~/.kube/config 将输出结果覆盖到config中,实际执行完成后,config只保留了test-config的访问凭证,所以换成了使用>> ~/.kube/config,将两个集群的访问凭证追加到config文件中,但同时之前的访问凭证还存在。
二、将多个config配置到环境变量
我们将另一套集群的访问凭证上传到~/.kube,并命名为test-config,然后进行如下命令:
代码语言:javascript复制#echo KUBECONFIG=/root/.kube/config:/root/.kube/test-config ~/.bash_profile
#source ~/.bash_profile
执行kubectl config view同样可以看到kubeconfig包含两个集群的访问凭证。
三、手工配置
手工方式较为繁琐,只所以列出来,是想观察下config的详细格式,这样能对kubeconfig有个更清晰的认识,如下为config的详细格式。
代码语言:javascript复制#一个访问凭证时#
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ***
server: https://192.168.*.*: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: ***
client-key-data: ***
#两个访问凭证时#
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ***
server: https://42.194.*.*:443/
name: cls-ec6ymsmo
- cluster:
certificate-authority-data: ***
server: https://192.168.*.*:6443
name: kubernetes
contexts:
- context:
cluster: cls-ec6ymsmo
user: "10000******"
name: cls-ec6ymsmo-10000******
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: "100006621061"
user:
client-certificate-data: ***
client-key-data: ***
- name: kubernetes-admin
user:
client-certificate-data: ***
client-key-data: ***
可以很清晰的看出来,我们也可以通过手工的方式将另一套集群的cluster、context、user按照格式要求粘贴到config即可。
四、总结
三种配置方法我倾向于使用第二种,当需要管理多套集群时配置起来也比较简单,值得注意的是第一种配置方法在使用> ~/.kube/config时会把之前的访问凭证覆盖掉,这时可以将集群的/etc/kubernetes/admin.conf文件重新复制出来一份。
当配置完多集群访问凭证后,可以使用以下命令进行多集群信息的查看及切换。
代码语言:javascript复制kubectl config get-contexts #查看集群信息,*表示当前的工作环境。
kubectl config use-context kubernetes-admin@kubernetes #切换工作环境到kubernetes-admin@kubernetes
kubectl config --help #查看更多的config使用命令