随着公司的k8s迁移,会发现集群越来越多,尤其是有混合云的公司,开发,测试,预生产,多个生产环境等等,管理k8s集群会越来越麻烦,下面我来介绍下k8s管理多集群的俩种方法。
因为我的一台机器,网络打通了多个生产环境,测试,开发环境,故我拿这一台机器举个简单的例子。
#切换到生产集群
kubectl get pod --kubeconfig=/root/.kube/aliyun_prod-config
#切换到生产idc集群
kubectl get pod --kubeconfig=/root/.kube/vnet_prod-config
#切换到测试环境
kubectl get pod --kubeconfig=/root/.kube/bjcs_test-config
这样虽然能达到管理多集群的目的,但是稍显麻烦且不灵活
安装kubecm我就不详细说了,下载二进制包解压可用,地址 https://github.com/sunny0826/kubecm/releases
首先将config文件拷贝到sy目录。
cd sy
cp /root/.kube/aliyun_prod-config .
cp /root/.kube/vnet_prod-config .
cp /root/.kube/bjcs_test-config .
merge一下,合并kubeconfig文件
kubecm merge -f sy
#直接把新生成的 kubeconfig 文件替换 $HOME/.kube/config 文件
kubecm merge -f sy -c
切换集群
# kubecm
+------------+-----------------------+-----------------------+--------------------+--------------+
| CURRENT | NAME | CLUSTER | USER | Namespace |
+============+=======================+=======================+====================+======
--------+
| | vnet_prod-config | cluster-ccccc5 | user-hbhbh9gmd5 | |
+------------+-----------------------+-----------------------+--------------------+--------------+
| * | aliyun_prod-config | cluster-bbbbb59 | user-m4fd662d59 | |
+------------+-----------------------+-----------------------+--------------------+--------------+
| | bjcs_test-config | cluster-baaaaa | user-b9mbtft7b2 | |
+------------+-----------------------+-----------------------+--------------------+--------------+
2020/06/22 11:25:41 Cluster check succeeded!
Contains components: [scheduler controller-manager etcd-0 etcd-1 etcd-3 etcd-2 etcd-4]
# kubecm switch
Use the arrow keys to navigate: ↓ ↑ → ← and / toggles search
Select Kube Context
aliyun_prod-config(*)
bjcs_test-config
↓ vnet_prod-config
切换命名空间
# kubecm ns
Search: test█
Select Namespace:
test
test1
通过 kubecm
工具能快速的把多个 kubeconfig 文件合并到一个 kubeconfig 文件中,这种方式相比于第一种更好。