前言
随着公司的k8s迁移,会发现集群越来越多,尤其是有混合云的公司,开发,测试,预生产,多个生产环境等等,管理k8s集群会越来越麻烦,下面我来介绍下k8s管理多集群的俩种方法。
通过多种kubeconfig文件管理
因为我的一台机器,网络打通了多个生产环境,测试,开发环境,故我拿这一台机器举个简单的例子。
1 2 3 4 5 6 7 8
| kubectl get pod --kubeconfig=/root/.kube/aliyun_prod-v1
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
| $ 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
| $ 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
| $ kubecm add -f v1
$ kubecm list
|
修改配置文件中的集群Name
切换集群默认命名空间
更多的命令参考官方文档吧,上面只列举了我常用的几个命令
小结
通过 kubecm
工具能快速的把多个 kubeconfig 文件合并到一个 kubeconfig 文件中,这种方式相比于第一种更好。