前言
通常在操作不同环境的集群时,可以准备多个config文件在/.kube文件夹下,要切换的时候就改config的名字,或者使用别名。但要注意用户名不能相同,否则可能只能连接到一个集群。
不同集群间切换的方式可以使用kubectl命令:https://wghdr.top/archives/1241中的config章节。
下面介绍一种更高效的工具kubectx,kubens。
安装使用
GitHub地址:https://github.com/ahmetb/kubectx
可以当作kubectl的插件:(需要先安装kerw)
kubectl krew install ctx
kubectl krew install ns
也可以clone下来
git clone https://github.com/ahmetb/kubectx.git
cd kubectx
# 重命名,防止影响kubectl的自动补全
ln -sf kubectx /usr/bin/ktx
ln -sf kubens /usr/bin/kns
自动补全
COMPDIR=$(pkg-config --variable=completionsdir bash-completion)
ln -sf ~/kubectx/completion/kubens.bash $COMPDIR/kns
ln -sf ~/kubectx/completion/kubectx.bash $COMPDIR/ktx
cat << EOF >> ~/.bashrc
#kubectx and kubens
export PATH=~/.kubectx:\$PATH
EOF
但是我这里没有生效,直接使用kubectx是可以生效的,如果哪里有问题请评论我一下。
使用
集群config文件如下:
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
server: https://xxxxx:6443
certificate-authority-data: xxxxx
name: cluster1 #第一个集群名称
- cluster:
server: https://xxxxx:6443
certificate-authority-data: xxxxx
name: cluster2 #第二集群名称
contexts:
- context:
cluster: cluster1 #第一个集群名称
user: user1 #第一个集群用户
name: cluster1 #第一个集群名称
- context:
cluster: cluster2 #第二集群名称
user: user2 #第二个集群用户
name: cluster2 #第二集群名称
users:
- name: user1 #第一个集群context中的user
user:
client-certificate-data: xxxxxxxxxxx
client-key-data: xxxxxxxxxxxxxxxxxxx
- name: user2 #第二个集群context中的user
user:
client-certificate-data: xxxxxxxxxxx
client-key-data: xxxxxxxxxxxxxxxxxxx
kubectx
- kubectx : 列出目前所有的context
- kubectx
: 切换到 对应的context - kubectx - : 切换到上一次的context
- kubectx -c : 显示当前context
- kubectx
= : 给 context命名一个新名字 - kubectx
=. : 给当前context命名一个新名字 - kubectx -d
[ ]:删除一个context
列出全部context
ktx
cluster1
cluster2
切换到指定context
ktx cluster1
Switched to context "cluster1".
切换到上一次的context
ktx cluster1
Switched to context "cluster1".
ktx cluster2
Switched to context "cluster2".
ktx -
Switched to context "cluster1".
kubens
列出全部namespace
切换到指定namespace
kns kube-system