多集群的切换是K8s运维中比不可少的问题,常见的基于多个集群进行切换的方法有三种:

  • 切换config文件
  • 通过context进行集群切换
  • 用kubecm进行集群切换

切换config文件

我们先看看放在.kube下默认的config集群:

  1. $ kubectl config view
  2. apiVersion: v1
  3. clusters:
  4. - cluster:
  5. certificate-authority-data: DATA+OMITTED
  6. server:
  7. name: kubernetes
  8. contexts:
  9. - context:
  10. cluster: kubernetes
  11. user: "2xxxxxxxxx7"
  12. name: 2xxxxxxxxxxxxxxxx8
  13. current-context: 2xxxxxxxxxxxx8
  14. kind: Config
  15. preferences: {}
  16. users:
  17. - name: "2xxxxxxxxxxx27"
  18. user:
  19. client-certificate-data:
  20. client-key-data:

通过export更改默认集群配置:

  1. $ export KUBECONFIG=$HOME/.kube/rancher-config

查看:

  1. $ kubectl config view
  2. apiVersion: v1
  3. clusters:
  4. - cluster:
  5. certificate-authority-data: DATA+OMITTED
  6. server:
  7. name: stage
  8. contexts:
  9. - context:
  10. cluster: stage
  11. user: stage
  12. name: stage
  13. current-context: stage
  14. kind: Config
  15. preferences: {}
  16. users:
  17. - name: stage
  18. user:
  19. token:

这种方法就是特别麻烦,每次切换都要通过export设置,非常麻烦,同时也不方便。

通过context进行集群切换

把要切换的所有config文件添加到KUBECONFIG环境变量中

  1. $ export KUBECONFIG=$HOME/.kube/config:$HOME/.kube/rancher-config

或者可以将命令直接写到.bashrc文件中,这样就不需要每次手动设置。

通过kubectl config view可以看到这两个文件已经合并到一起了:

  1. $ kubectl config view
  2. apiVersion: v1
  3. clusters:
  4. - cluster:
  5. certificate-authority-data: DATA+OMITTED
  6. server:
  7. name: kubernetes
  8. contexts:
  9. - context:
  10. cluster: kubernetes
  11. user: "2xxxxxxxxx7"
  12. name: 2xxxxxxxxxxxxxxxx8
  13. current-context: 2xxxxxxxxxxxx8
  14. kind: Config
  15. preferences: {}
  16. users:
  17. - name: "2xxxxxxxxxxx27"
  18. user:
  19. client-certificate-data:
  20. client-key-data:

合并一起后就可以通过use-context切换上下文来切换集群:

  1. # 切换stage集群
  2. $ kubectl config use-context stage
  3. Switched to context "stage".

切换到第二个集群:

  1. $ kubectl config use-context 2xxxxxxxxxxx8
  2. Switched to context "21xxxxxxxxxxxxx9648".

但这种方法不方便的地方就在如果context很多的时候,不方便查看。

用kubecm进行集群切换

安装篇

基础环境

mac

k8s 1.16.9

  1. # wget https://github.com.cnpmjs.org/sunny0826/kubecm/releases/download/v0.10.3/kubecm_0.10.3_Darwin_x86_64.tar.gz
  2. # tar xf kubecm_0.10.3_Darwin_x86_64.tar.gz
  3. # mv kubecm /usr/local/bin
  4. # kubecm --help
  5. KubeConfig Manager
  6. _ _
  7. | | ___ _| |__ ___ ___ _ __ ___
  8. | |/ / | | | '_ \ / _ \/ __| '_ \ _ \
  9. | <| |_| | |_) | __/ (__| | | | | |
  10. |_|\_\\__,_|_.__/ \___|\___|_| |_| |_|
  11. Find more information at: https://github.com/sunny0826/kubecm
  12. Usage:
  13. kubecm [command]
  14. Available Commands:
  15. add Merge configuration file with $HOME/.kube/config
  16. alias Generate alias for all contexts
  17. completion Generates bash/zsh completion scripts
  18. delete Delete the specified context from the kubeconfig
  19. help Help about any command
  20. ls List kubeconfig
  21. merge Merge the kubeconfig files in the specified directory
  22. namespace Switch or change namespace interactively
  23. rename Rename the contexts of kubeconfig
  24. switch Switch Kube Context interactively
  25. version Print version info
  26. Flags:
  27. --config string path of kubeconfig (default "/var/root/.kube/config")
  28. -h, --help help for kubecm
  29. Use "kubecm [command] --help" for more information about a command.

补全

bash

  1. # ource <(kubecm completion bash)
  2. # echo "source <(kubecm completion bash)" >> ~/.bashrc
  3. # source ~/.bashrc

zsh

  1. # source <(kubecm completion zsh)
  2. # echo "source <(kubecm completion zsh)" >> ~/.zshrc
  3. # source ~/.zshrc

基本使用

查看

  1. # kubecm ls
  2. +------------+-----------------------------------+---------------+-----------------------+--------------------------------+--------------+
  3. | CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
  4. +============+===================================+===============+=======================+================================+==============+
  5. | * | 283387751775489594-c02e82b6ada | kubernetes | 283387751775489594 | https://3.3.3.3:6443 | default |
  6. | | f044bd94d251fea1279648 | | | | |
  7. +------------+-----------------------------------+---------------+-----------------------+--------------------------------+--------------+
  8. Cluster check succeeded!
  9. Kubernetes master is running at https://3.3.3.3:6443
  10. Contains components: [scheduler controller-manager etcd-5 etcd-0 etcd-4 etcd-1 etcd-3 etcd-2]

添加

  1. # ll
  2. -rw-r--r-- 1 root wheel 5.9K 8 26 15:39 config.shengchan
  3. -rw-r--r-- 1 root wheel 5.9K 11 18 15:59 config.yufa
  4. # kubecm add -f config.yufa -c -n stage
  5. # kubecm add -f config.shengchan -c -n production
  6. # kubecm ls
  7. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
  8. | CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
  9. +============+===============+=======================+====================+================================+==============+
  10. | * | production | cluster-kg7h48f8tb | user-kg7h48f8tb | https://3.3.3.3:6443 | default |
  11. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
  12. | | stage | cluster-kfc6fbfcdt | user-kfc6fbfcdt | https://4.4.4.4:6443 | default |
  13. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+

删除

  1. # kubecm delete
  2. Select:production
  3. True
  4. Context Delete:「production
  5. 「/var/root/.kube/config write successful!
  6. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
  7. | CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
  8. +============+===============+=======================+====================+================================+==============+
  9. | * | stage | cluster-kfc6fbfcdt | user-kfc6fbfcdt | https://4.4.4.4:6443 | default |
  10. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+

切换

  1. # kubecm switch
  2. Select:production
  3. 「/var/root/.kube/config write successful!
  4. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
  5. | CURRENT | NAME | CLUSTER | USER | SERVER | Namespace |
  6. +============+===============+=======================+====================+================================+==============+
  7. | * | production | cluster-kg7h48f8tb | user-kg7h48f8tb | https://3.3.3.3:6443 | default |
  8. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
  9. | | stage | cluster-kfc6fbfcdt | user-kfc6fbfcdt | https://4.4.4.4:6443 | default |
  10. +------------+---------------+-----------------------+--------------------+--------------------------------+--------------+
  11. Switched to context production

多k8s集群管理的更多相关文章

  1. k8s 集群管理和微服务 适合做啥

    k8s 集群管理和微服务 适合做啥 都知道k8s是集群 适合微服务 有很多教程 但你可以先了解他能干啥 traefix 是负载均衡工具 k8s 适合部署无状态依赖的微服务 可以按需求开启多个微服务 管 ...

  2. 整理全网最全K8S集群管理工具、平台

    整理常见的整理全网最全K8S集群管理工具.平台解决方案. 1 Rancher Rancher中文官网:https://docs.rancher.cn/ 2 KubeSphere 官网:https:// ...

  3. 强大多云混合多K8S集群管理平台Rancher入门实战

    @ 目录 概述 定义 为何使用 其他产品 安装 简述 规划 基础环境 Docker安装 Rancher安装 创建用户 创建集群 添加Node节点 配置kubectl 创建项目和名称空间 发布应用 偏好 ...

  4. 近万字案例:Rancher + VMware PKS实现全球数百站点K8S集群管理

    Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的.基于云的技术平台,以更好地应对业务挑战.曾连续3年提名CRN,并且在2012 ...

  5. NVIDIA-GPU归入K8S集群管理的安装文档--第二版

    一,nvidia K80驱动安装 1,  查看服务器上的Nvidia(英伟达)显卡信息,命令lspci |grep NVIDIA 2,  按下来,进行显卡驱动程序的安装,驱动程序可到nvidia的官网 ...

  6. k8s集群管理注意要点【持续更新】

    1.编写pod yaml文件时绑定调度标签,必须要给指定节点绑定标签,否则无法调度到指定节点上,报错: Events: Type Reason Age From Message ---- ------ ...

  7. 大规模 K8s 集群管理经验分享 · 上篇

    11 月 23 日,Erda 与 OSCHINA 社区联手发起了[高手问答第 271 期 -- 聊聊大规模 K8s 集群管理],目前问答活动已持续一周,由 Erda SRE 团队负责人骆冰利为大家解答 ...

  8. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

  9. 通过Heketi管理GlusterFS为K8S集群提供持久化存储

    参考文档: Github project:https://github.com/heketi/heketi MANAGING VOLUMES USING HEKETI:https://access.r ...

随机推荐

  1. sqlsugar入门(1)-初识sugar正确打开sugar的方式

    1.实例化DB public static SqlSugarClient GetDB(string s) { var ssc = new SqlSugarClient(new ConnectionCo ...

  2. Charles使用part4——修改网络请求

    Charles提供了Map功能.Rewrite功能.Breakpoints功能,都可以达到修改服务器返回内容的目的,这三者的差异是: Map功能适合长期的将某些请求重定向到另一个网络地址或本地文件   ...

  3. AQS源码深入分析之共享模式-你知道为什么AQS中要有PROPAGATE这个状态吗?

    本文基于JDK-8u261源码分析 本篇文章为AQS系列文的第二篇,前文请看:[传送门] 第一篇:AQS源码深入分析之独占模式-ReentrantLock锁特性详解 1 Semaphore概览 共享模 ...

  4. electron 实现文件下载管理器

    文件下载是我们开发中比较常见的业务需求,比如:导出 excel. web 应用文件下载存在一些局限性,通常是让后端将响应的头信息改成 Content-Disposition: attachment; ...

  5. html+js+highcharts绘制圆饼图表的简单实例

    下面我就为大家带来一篇html+js+highcharts绘制圆饼图表的简单实例.我觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随我过来看看吧 实例如下: 1 2 3 4 5 6 7 8 ...

  6. Sublime Text 3 安装插件与快捷键总结

    ublime Text 3 是一个了不起的软件.首先,它是一个干净,实用,可以快速的编写代码编辑器.它不仅具有令人难以置信的内置功能(多行编辑和VIM模式),而且还支持插件,代码片段和其他许多东西.很 ...

  7. delphi 设置默认控件得到焦点

    如果同一窗体有多个按钮的话,追踪源码发现最后是taborder来的 如: 在空白窗体上拖入两个button (btn1,btn2) 如果在btn2设置default = True 运行后,默认焦点还是 ...

  8. http 请求体数据--ngx

    HTTP包体的长度有可能非常大,不同业务可能对包体读取 处理不相同, 比如waf, 也许会读取body内容或者只是读取很少的前几十字节.所以根据不同业务特性,对http body 数据包处理方式不同, ...

  9. vue 使用中的小技巧 (一)

    在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发.下面有一些我在日常开发的时候用到的小技巧 data 和 Object.freeze 每个Vue实 ...

  10. 剑指offer刷题(算法类_2)

    排序 035-数组中的逆序对(归并排序) 题目描述 题解 代码 复杂度 029-最小的K个数(堆排序) 题目描述 题解 代码 复杂度 029-最小的K个数(快速排序) 题目描述 题解 代码 复杂度 位 ...