使用kubectl配置多集群管理

2022-01-27 11:40:41 浏览数 (2)

大家都知道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使用命令

0 人点赞