自動合併Kubeconfig,實現多k8s集群切換

2021-09-19 18:47:36 字數 2192 閱讀 4177

隨著微服務和容器化的深入人心,以及kubernetes已經成為容器編排領域的事實標準,越來越多的公司將自己的服務遷移到kubernetes集群中。而隨著kubernetes集群的增加,集群管理的問題就凸顯出來,不同的環境存在不同的集群,不同的業務線不同的集群,甚至有些開發人員都有自己的集群。誠然,如果集群是使用公有雲如阿里雲或華為雲的容器服務,可以登入其控制台進行集群管理;或者使用rancher這用的多集群管理工具進行統一的管理。但是在想操作istio特有的容器資源,或者想使用istioctl的時候,或者像我一樣就是想使用kubectl命令的同學,這個時候多集群的切換就顯的十分重要了。

使用kubeconfig檔案,您可以組織您的群集,使用者和命名空間。 還可以定義上下文以快速輕鬆地在群集和命名空間之間切換。

kubeconfig檔案中的上下文元素用於以方便的名稱對訪問引數進行分組。 每個上下文有三個引數:集群,命名空間和使用者。 預設情況下,kubectl命令列工具使用當前上下文中的引數與集群進行通訊。可以使用下面的命令設定上下文:

kubectl config use-context
kubectl config view
如果設定了--kubeconfig標誌,則只使用指定的檔案。該標誌只允許有乙個例項。

如果環境變數kubeconfig存在,那麼就使用該環境變數kubeconfig裡面的值,如果不存在該環境變數kubeconfig,那麼預設就是使用$home/.kube/config檔案。

從下面kubeconfig檔案的配置來看集群、使用者、上下文、當前上下文的關係就比較明顯了。

apiversion: v1

kind: config

preferences: {}

clusters:

- cluster:

name:

users:

- name:

contexts:

- context:

cluster:

user:

name:

current-context:

在日常的工作中,如果我們需要操作多個集群,會得到多個kubeconfig配置檔案。一般的kubeconfig檔案都是yaml格式的,但是也有少部分的集群kubeconfig時已json檔案的形式給出的(比如華為雲的=。=),比如我們公司再阿里雲、華為雲和自建環境上均存在kubernetes集群,平時操作要在多集群之間切換,這也就催生了我寫這個工具(其實就是乙個指令碼)的動機。

眾所周知,yaml是一種直觀的能夠被電腦識別的資料序列化格式,是乙個可讀性高並且容易被人類閱讀的語言和json相比(沒有格式化之前)可讀性更強。而我這個工具並不是很關心kubeconfig的格式,只要將想要合併的kubeconfig放入指定檔案即可。

github:

python merge.py
python merge.py -d

cp config ~/.kube
kubectl config get-contexts
kubectl config --help
kubectl config use-context
在使用kubernetes初期,在多集群之間我一直是頻繁的切換.kube/config檔案來達到切換操作集群的目的。這也導致了我的.kube目錄中存在這多個類似於al_test_config.bakal_prod_config.bakhw_test_config.bak的檔案,本地環境已經自建環境,在集群切換的時候十分頭疼。而後來使用--kubeconfig來進行切換集群,雖然比之前的方法要方便很多,但是並不十分優雅。這個簡單的小工具一舉解決了我的檔案,對於我這個kubectl重度依賴者來說十分重要。

python ChainMap 合併字典的實現步驟

字典是python語言中唯一的對映型別。對映型別物件裡雜湊值 鍵,key 和指向的物件 值,value 是一對多的的關係,通常被認為是可變的雜湊表。字典物件是可變的,它是乙個容器型別,能儲存任意個數的python物件,其中也可包括其他容器型別。字典型別與序列型別的區別 1.訪問和www.cppcns...

python批量快速合併excel檔案 實踐出真知

簡介 如果有很多excel檔案需要合併到乙個excel檔案中,使用複製貼上來操作是非常痛苦,這時可以使用python來批量自動操作。把需要合併的excel檔案放到同一資料夾下。安裝需要的庫 python環境python3 pip3 install xlrd pip3 install xlsxwrit...

HBase自動大合併指令碼

hbase有預設的大合併機制。我們可以使用major compact命令手動合併。但是如果hbase中的表很多的時候,就該寫個指令碼了。說明 只使用了major compact這個合併命令。bin bash time start date y m d h m s str echo list hbas...