前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tke多集群kubeconfig如何合并

tke多集群kubeconfig如何合并

原创
作者头像
聂伟星
修改2021-12-08 20:35:40
9840
修改2021-12-08 20:35:40
举报
文章被收录于专栏:腾讯云容器运维

现在很多公司项目在腾讯云上会有多个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

代码语言:javascript
复制
# 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不一致时,切换集群访问是正常的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 问题描述
    • 1.1 准备2个集群的kubecofig
      • 1.2 验证kubeconfig权限
        • 1.3 合并kubeconfig
          • 1.4 测试切换集群
          • 2. 解决方案
          相关产品与服务
          访问管理
          访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档