实际工作中,会有多个k8s集群,就需要有台服务器可以同时访问多个集群。

方式:将多个集群的config信息存放到一个文件中,通过使用 kubectl config use-context context_name 来访问集群。

8WwGvV.jpg

配置config文件

config-1修改配置如下,config2、config3、config-n…的配置都借鉴config1。注意:不通config文件修改的内容不要一模一样。例如:config1中的name为:40-k8s 其他config文件就不要为40-k8s

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: 
    server: https://172.16.77.40:6443
  name: 40-k8s
contexts:
- context:
    cluster: 40-k8s
    user: 40-admin
  name: 40-k8s
current-context: context-cluster1-admin
kind: Config
preferences: {}
users:
- name: 40-admin
  user:
    client-certificate-data: 
    client-key-data: 

文件合成

1
2
cd $HOME/.kube/
KUBECONFIG=config-1:config-2:config-3:config-4:config-5 kubectl config view --flatten > $HOME/.kube/config

验证

查看cluster name以及context name

  • 方法一
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://172.16.77.40:6443
  name: 40-k8s
......
contexts:
- context:
    cluster: 40-k8s
    namespace: default
    user: admin
  name: 40-k8s
.....
  • 方法二
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ kubectl config get-clusters
NAME
....
53-k8s
40-k8s
....

$ kubectl config get-contexts
CURRENT   NAME              CLUSTER           AUTHINFO           NAMESPACE
......
*         40-k8s            40-k8s            admin              default
          53-k8s            53-k8s            53-admin
.....

查看当前使用的集群

1
2
$ kubectl config current-context
40-k8s

切换集群

1
2
$ kubectl config use-context 53-k8s
Switched to context "53-k8s".

至此验证成功

可以配合kubectx、kubens、fzf使用,有兴趣的可以试一下

kubectx