EvenChan's Ops.

kubernetes多集群管理维护方式

字数统计: 507阅读时长: 1 min
2020/06/19

相信很多人都会经常部署不同的 Kubernetes 集群,也会经常删除不再使用的 Kubernetes 集群,如果要在本地通过 kubectl 客户端与集群进行交互,就需要不同的 kubeconfig,然后通过环境变量或命令行参数不断来回切换 kubeconfig,或者手动将多个 kubeconfig 合并为一个,然后通过 kubectl 插件 kubectx[1] 或 kubie 来切换上下文环境(即 context)。

那么有没有一种方法可以自动将多个 kubeconfig 文件合并成一个呢?手动合并也太麻烦了啊!

有个小哥和我也有同样的苦恼,索性写了一个自动化工具 kubectx.manager[2],可以将多个 kubeconfig 合并成一个,也可以从现有的 kubeconfig 文件中删除不想要的 context


安装方法很简单,首先需要有 nodejs 环境,然后通过下面的命令安装:

1
$ npm install -g git+https://git@github.com/AveryanovS/kubectx.manager

假设现在要合并多个 kubeconfig,只需执行命令,不带任何参数,然后就会有一系列交互动作:

1
2
3
4
5
6
7
$ kubemanager
✔ Select action · merge
✔ Path to current kube config? · /Users/xxx/.kube/config
✔ Path to config to merge? · /Users/xxx/.kube/kubeconfig
✔ Name of new context? · test
Context test created!
Config file updated!
  • 第一行选择 merge,表示合并
  • 第二行选择需要合并到哪个 kubeconfig,也就是你最终要用的 kubeconfig
  • 第三行选择需要合并的 kubeconfig
  • 第四行定义合并后新加入的 context 名称

删除多余的 context 与上面类似,自己摸索一下。


合并多个 kubeconfig 之后还不行,需要一个能快速切换 context 的工具,不然每次都自己去 kubeconfig 中修改当前的 context 也太 low 了吧!


目前有两款插件都比较好用, kubectx[1] 或 kubie,我推荐使用 kubie,功能更强大,使用 rust 语言编写,你可以通过 cargo 来编译安装,也可以从 release 页面直接下载二进制文件。

脚注

[1]kubectx: https://github.com/ahmetb/kubectx

[2]kubectx.manager: https://github.com/AveryanovS/kubectx.manager

CATALOG
  1. 1. 脚注