tke多集群kubeconfig如何合并

现在很多公司项目在腾讯云上会有多个tke集群用来区分不同的环境,比如测试是一个集群,生产又是另外一个集群,很多时候我们会用到kubectl来操作集群,一般会在客户端配置集群的kubeconfig来访问集群。当我们的集群有多个时候,就需要合并多个集群kubeconfig,然后用context来切换不同集群。

现在tke集群都是用每个账号的uin生成对应的kubeconfig来通过rbac鉴权,也就说你不同集群,对应的kubeconfig的user和name是一致的,都是子账号的uin,那么这里合并kubeconfig的时候就会有有一个问题,当切换集群操作的时候会出现无法访问集群的apiserver。

下面我们通过操作来描述下这个问题现象,并说明下如何解决。

1. 问题描述

1.1 准备2个集群的kubecofig

首先我们准备好2个集群的kubecofig文件,这里可以看出不同集群的kubecofig的user和name都是子账号的uin。

1.2 验证kubeconfig权限

这里我们先单独验证下这2个kubeconfig是否有操作集群的权限。

上面测试get节点是没问题的。

1.3 合并kubeconfig

下面我们来合并下2个tke集群的kubeconfig,合并后会生成$HOME/.kube/config

# KUBECONFIG=b3mg1p92.config:jmdg96ew.config  kubectl config view --flatten > $HOME/.kube/config

1.4 测试切换集群

我们测试下通过context来切换集群访问

从上面的结果可以发现,我们访问第一个集群是正常的,但是切到到第二个集群就报错了error: You must be logged in to the server (Unauthorized)

这个报错大概就是kubecofng的客户端证书权限问题,但是我们之前单独指定集群的kubeconfig是可以访问。这里的问题,大概就是因为user和name是相同的,导致config读取的证书有问题。

2. 解决方案

那么这里有这个问题,后续要怎么合并多个tke集群的kubecofig呢?其实方案很简答,我们只要修改下集群kubeconfig的user和name区分开来即可。

下面我们修改下jmdg96ew.config的user和name

我们在user和name的字段加上一个jmdg96ew后缀,然后我们重新合并下kubeconfig,在切换集群访问看看

经过测试,当kubeconfig的user和name不一致时,切换集群访问是正常的。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
tke多集群kubeconfig如何合并
现在很多公司项目在腾讯云上会有多个tke集群用来区分不同的环境,比如测试是一个集群,生产又是另外一个集群,很多时候我们会用到kubectl来操作集群,一般会在客...
<<上一篇
下一篇>>