k8s多集群切换
kueconfig配置文件
参考: 定义集群、用户和上下文
# 集群配置文件示例
apiVersion: v1
kind: Config
# 配置多个集群名称
clusters:
- cluster:
certificate-authority: { 使用base64加密的证书内容 }
server: https://{api地址}:6443
# K8s集群的名称
name: kubernetes
# 连接集群使用的用户
users:
# 用户名
- name: kubernetes-admin
user:
client-certificate-data: { 使用base64加密的证书内容 }
client-key-data: { 使用base64加密的key内容 }
# 上下文--将users和集群关联起来
contexts:
- context:
# 集群名字
cluster: kubernetes
# 关联的用户名
user: kubernetes-admin
# 上下文name(固定格式): users@集群名
name: kubernetes-admin@kubernetes
# 当前上下文---声明当前所连接的集群
# current-context: 当前所要使用的上下文name
current-context: kubernetes-admin@kubernetes
kubecm多集群配置文件合并
kubecm可以将多个kubeconfig文件合并成一个文件
参考链接: https://mp.weixin.qq.com/s?src=11×tamp=1643335860&ver=3585&signature=QX*sp7C24LoguwuXh-FqrapEY3IxUW7SX4UVtNShBm8TGVINfTUxizw6Ryixr8Fq9g27kYPjCxWpUyCzxvQQM7mqpRiBnJHlt2a5R3mTKNpNa-g-UEDNR238lZC5dsx0&new=1
项目地址: https://github.com/sunny0826/kubecm
安装kubecm命令行
# 下载
curl -Lo kubecm.tar.gz https://ghproxy.com/https://github.com/sunny0826/kubecm/releases/download/v0.16.2/kubecm_0.16.2_Linux_x86_64.tar.gz
# 解压
tar -zxvf kubecm.tar.gz kubecm
# 移动到/usr/local/bin
cd kubecm && sudo mv kubecm /usr/local/bin/
# 赋予可执行权限
chmod +x /usr/local/bin/kubecm
# 查看是否可以使用命令行
which kubecm
# 查看命令是否启用了
which kubecm
合并多个kubeconfig文件
把需要合并的 Kubeconfig
文件放到 all_kubeconfig
目录下,执行命令后会在当前路径下产生一个新的 kubeconfig
文件
# 合并多个kubeconfig文件
kubecm merge -f all_kubeconfig
替换默认config文件
直接把新生成的 kubeconfig
文件替换$HOME/.kube/config
文件
kubecm merge -f all_kubeconfig -c
使用kubectx命令切换k8集群
kubectx项目地址: https://github.com/ahmetb/kubectx
安装kubectx命令行
kubectx
命令是第三方命令,需要自行安装
参考: https://cloud.tencent.com/developer/article/1649627
# 下载kubectx命令行到/usr/local/bin
curl -Lo kubectx https://ghproxy.com/https://github.com/ahmetb/kubectx/releases/download/v0.9.5/kubectx
# 移动到/usr/local/bin
mv kubectx /usr/local/bin
# 赋予可执行权限
chmod +x /usr/local/bin/kubectx
# 查看命令是否启用了
which kubectx
kubectx基本用法
# 列出目前所有的context
kubectx
# 切换到<NS_NAME>对应的context
kubectx <NS_NAME>
# 切换到上一次的context
kubectx -
# 给<NS_NAME>context命名一个新名字
kubectx <NEW_NS_NAME>=<NS_NAME>
# 给当前context命名一个新名字
kubectx <NEW_NS_NAME>=.
kubectx切换集群
# 查看当前所在集群
kubectx
# 切换集群
kubectx 集群名
kubectl多集群切换命令
# 查看所有集群
kubectl config get-contexts
# 切换集群
kubectl config user-context 集群名