0%

k8s配置多集群接入

情景和思路

当需要接入多个kubernetes集群的情况,如果使用--kubeconfig进行指定config file后执行kubectl命令会比较麻烦。可以使用kubectl config use-context ${context_name}命令进行切换context,从而实现一个config file文件能连接多个cluster的功能,当然一个时间段内是只能连接一个的。

配置文件路径

配置文件一般名称为config,放置路径为$HOME/.kube/目录下。

  • cluster,定义cluster名称,认证信息等。

  • users,定义users的名称,认证信息等。

  • contexts,关联了cluster和user的信息。

在原有集群上追加额外集群信息

原有配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: v1
clusters:
- cluster:
server: https://server1.com
certificate-authority-data: secret_info==
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: "340933575320448663"
name: 340933575320448663-c1d785b5c421249d798362081b10830a6
current-context: 340933575320448663-c1d785b5c421249d798362081b10830a6
kind: Config
preferences: {}
users:
- name: "340933575320448663"
user:
client-certificate-data: secret_info==
client-key-data: secret_info==

追加第二个集群的信息

  1. clusters字段内定义了name字段,区分了两个不同的集群,一个是k3s,一个是kubernetes
  2. users字段内定义了两个user,一个是340933575320448663,一个是default。可以看出第一个user信息使用密钥方式登录;第二个使用用户名和密码登录
  3. 通过contexts字段内可以看到将clustername进行了关联,kubernetes集群指定user采用340933575320448663上下文信息;k3s集群指定user使用default的上下文。
  4. 还有一个独立的字段是current-context,表示当前配置文件采用哪个context,下面配置文件是使用的k3s那么此时当使用命令kubectl操作集群的时候,是去连接k3s这个集群
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: secret_info==
server: https://server1.com
name: k3s
- cluster:
insecure-skip-tls-verify: true
server: https://server2.com
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: "340933575320448663"
name: kubernetes #切换使用的context_name
- context:
cluster: k3s
user: default
name: k3s #切换使用的context_name
current-context: k3s
kind: Config
preferences: {}
users:
- name: "340933575320448663"
user:
client-certificate-data: secret_info==
client-key-data: secret_info==
- name: default
user:
password: da25a8668cd6b469df139351c74c9eda
username: admin

切换成另外一个集群

使用命令kubectl config use-context ${context_name}

比如当前我的context_name为k3s,要切换成配置中的kubernetes,则使用命令kubectl config use-context kubernetes

1
2
PS C:\Users\hysan\.kube> kubectl config use-context kubernetes
Switched to context "kubernetes".

此时使用kubectl命令,则连接到了kubernetes这个集群。

手动命令行进行配置三大件

查看refer官方文档。

refer:

https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

坚持原创技术分享,您的支持将鼓励我继续创作!