多集群的切換是K8s運維中比不可少的問題,常見的基于多個集群進行切換的方法有三種:
- 切換config檔案
- 通過context進行集群切換
- 用kubecm進行集群切換
切換config檔案
我們先看看放在.kube下默認的config集群:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server:
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: "2xxxxxxxxx7"
name: 2xxxxxxxxxxxxxxxx8
current-context: 2xxxxxxxxxxxx8
kind: Config
preferences: {}
users:
- name: "2xxxxxxxxxxx27"
user:
client-certificate-data:
client-key-data:
通過export更改默認集群配置:
$ export KUBECONFIG=$HOME/.kube/rancher-config
查看:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server:
name: stage
contexts:
- context:
cluster: stage
user: stage
name: stage
current-context: stage
kind: Config
preferences: {}
users:
- name: stage
user:
token:
這種方法就是特別麻煩,每次切換都要通過export設定,非常麻煩,同時也不方便,
通過context進行集群切換
把要切換的所有config檔案添加到KUBECONFIG環境變數中
$ export KUBECONFIG=$HOME/.kube/config:$HOME/.kube/rancher-config
或者可以將命令直接寫到.bashrc檔案中,這樣就不需要每次手動設定,
通過kubectl config view可以看到這兩個檔案已經合并到一起了:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server:
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: "2xxxxxxxxx7"
name: 2xxxxxxxxxxxxxxxx8
current-context: 2xxxxxxxxxxxx8
kind: Config
preferences: {}
users:
- name: "2xxxxxxxxxxx27"
user:
client-certificate-data:
client-key-data:
合并一起后就可以通過use-context切換背景關系來切換集群:
# 切換stage集群
$ kubectl config use-context stage
Switched to context "stage".
切換到第二個集群:
$ kubectl config use-context 2xxxxxxxxxxx8
Switched to context "21xxxxxxxxxxxxx9648".
但這種方法不方便的地方就在如果context很多的時候,不方便查看,
用kubecm進行集群切換
安裝篇
基礎環境
mac
k8s 1.16.9
# wget https://github.com.cnpmjs.org/sunny0826/kubecm/releases/download/v0.10.3/kubecm_0.10.3_Darwin_x86_64.tar.gz
# tar xf kubecm_0.10.3_Darwin_x86_64.tar.gz
# mv kubecm /usr/local/bin
# kubecm --help
KubeConfig Manager
_ _
| | ___ _| |__ ___ ___ _ __ ___
| |/ / | | | '_ \ / _ \/ __| '_ \ _ \
| <| |_| | |_) | __/ (__| | | | | |
|_|\_\\__,_|_.__/ \___|\___|_| |_| |_|
Find more information at: https://github.com/sunny0826/kubecm
Usage:
kubecm [command]
Available Commands:
add Merge configuration file with $HOME/.kube/config
alias Generate alias for all contexts
completion Generates bash/zsh completion scripts
delete Delete the specified context from the kubeconfig
help Help about any command
ls List kubeconfig
merge Merge the kubeconfig files in the specified directory
namespace Switch or change namespace interactively
rename Rename the contexts of kubeconfig
switch Switch Kube Context interactively
version Print version info
Flags:
--config string path of kubeconfig (default "/var/root/.kube/config")
-h, --help help for kubecm
Use "kubecm [command] --help" for more information about a command.
補全
bash
# ource <(kubecm completion bash)
# echo "source <(kubecm completion bash)" >> ~/.bashrc
# source ~/.bashrc
zsh
# source <(kubecm completion zsh)
# echo "source <(kubecm completion zsh)" >> ~/.zshrc
# source ~/.zshrc
基本使用
查看
# kubecm ls
+------------+-----------------------------------+---------------+-----------------------+--------------------------------+--------------+
| CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
+============+===================================+===============+=======================+================================+==============+
| * | 283387751775489594-c02e82b6ada | kubernetes | 283387751775489594 | https://3.3.3.3:6443 | default |
| | f044bd94d251fea1279648 | | | | |
+------------+-----------------------------------+---------------+-----------------------+--------------------------------+--------------+
Cluster check succeeded!
Kubernetes master is running at https://3.3.3.3:6443
Contains components: [scheduler controller-manager etcd-5 etcd-0 etcd-4 etcd-1 etcd-3 etcd-2]
添加
# ll
-rw-r--r-- 1 root wheel 5.9K 8 26 15:39 config.shengchan
-rw-r--r-- 1 root wheel 5.9K 11 18 15:59 config.yufa
# kubecm add -f config.yufa -c -n stage
# kubecm add -f config.shengchan -c -n production
# kubecm ls
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
| CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
+============+===============+=======================+====================+================================+==============+
| * | production | cluster-kg7h48f8tb | user-kg7h48f8tb | https://3.3.3.3:6443 | default |
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
| | stage | cluster-kfc6fbfcdt | user-kfc6fbfcdt | https://4.4.4.4:6443 | default |
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
洗掉
# kubecm delete
?? Select:production
?? True
Context Delete:「production」
「/var/root/.kube/config」 write successful!
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
| CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
+============+===============+=======================+====================+================================+==============+
| * | stage | cluster-kfc6fbfcdt | user-kfc6fbfcdt | https://4.4.4.4:6443 | default |
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
切換
# kubecm switch
?? Select:production
「/var/root/.kube/config」 write successful!
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
| CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
+============+===============+=======================+====================+================================+==============+
| * | production | cluster-kg7h48f8tb | user-kg7h48f8tb | https://3.3.3.3:6443 | default |
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
| | stage | cluster-kfc6fbfcdt | user-kfc6fbfcdt | https://4.4.4.4:6443 | default |
+------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
Switched to context 「production」
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/228892.html
標籤:其他
