前言

随着公司的k8s迁移,会发现集群越来越多,尤其是有混合云的公司,开发,测试,预生产,多个生产环境等等,管理k8s集群会越来越麻烦,下面我来介绍下k8s管理多集群的俩种方法。

通过多种kubeconfig文件管理

因为我的一台机器,网络打通了多个生产环境,测试,开发环境,故我拿这一台机器举个简单的例子。

1
2
3
4
5
6
7
8
#切换到生产集群
kubectl get pod --kubeconfig=/root/.kube/aliyun_prod-v1

#切换到生产idc集群
kubectl get pod --kubeconfig=/root/.kube/aliyun_prod-v2

#切换到测试环境
kubectl get pod --kubeconfig=/root/.kube/aliyun_prod-v3

这样虽然能达到管理多集群的目的,但是稍显麻烦且不灵活

通过KUBECM管理K8S多集群

安装kubecm我就不详细说了,下载二进制包解压可用,地址 https://github.com/sunny0826/kubecm/releases

首先将config文件拷贝到cluster目录。

1
2
3
cd cluster
cp /root/.kube/aliyun_prod-v2 .
cp /root/.kube/aliyun_prod-v3 .

merge一下,合并kubeconfig文件

1
2
3
4
5
6
7
8
9
10
#直接把新生成的 kubeconfig 文件替换 $HOME/.kube/config 文件
$ kubecm merge -f cluster
Loading KubeConfig file:cluster/v2
Add Context: v2
Loading KubeConfig file:cluster/v3
Add Context: v3
Use the arrow keys to navigate: ↓ ↑ → ←
Are you sure you want to overwrite the「/.kube/config」file?
False
> True # 将新合并的文件替换成原文件

查看集群列表

1
2
3
4
5
6
7
8
$ kubecm list
+------------+----------------+-----------------------+--------------------+--------------------------------+--------------+
| CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
+============+================+=======================+====================+================================+==============+
| | v2 | cluster-fbg4dcb697 | user-fbg4dcb697 | https://192.168.200.16:6443 | default |
+------------+----------------+-----------------------+--------------------+--------------------------------+--------------+
| * | v3 | cluster-tgd2747b9m | user-tgd2747b9m | https://192.168.203.22:6443 | default |
+------------+----------------+-----------------------+--------------------+--------------------------------+--------------+

切换集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 知道集群名称的情况下指定Name直接切换
$ kubecm switch v2

# 不知道集群名称通过选择切换
$ kubecm switch
Use the arrow keys to navigate: ↓ ↑ → ← and / toggles search
Select Kube Context
v1
v2(*)
> v3
<Exit>

--------- Info ----------
Name: v3
Cluster: cluster-tgd2747b9m
User: user-tgd2747b9m

向现有kubeconf文件中添加新集群

1
2
3
4
5
# 指定v1集群的配置文件
$ kubecm add -f v1

# 查看集群列表
$ kubecm list

修改配置文件中的集群Name

1
$ kubecm rename

切换集群默认命名空间

1
$ kubecm ns

更多的命令参考官方文档吧,上面只列举了我常用的几个命令

小结

通过 kubecm 工具能快速的把多个 kubeconfig 文件合并到一个 kubeconfig 文件中,这种方式相比于第一种更好。