当前位置: 首页 > news >正文

K8S 实用工具之一 - 如何合并多个 kubeconfig?

开篇

📜 引言

  • 磨刀不误砍柴工
  • 工欲善其事必先利其器

K8S 集群规模,有的公司倾向于少量大规模 K8S 集群,也有的公司会倾向于大量小规模的 K8S 集群。

如果是第二种情况,是否有一个简单的 kubectl 命令来获取一个 kubeconfig 文件并将其合并到 ~/.kube/config 文件作为一个额外的上 context?

🔥 提示

Kubeconfig 文件会包含 Kubernetes 集群的以下信息:

  • 集群
  • 上下文(context)
  • 用户

有以下解决方案:

解决方案

方案一:KUBECONFIG 环境变量指向多个文件

通过在 KUBECONFIG 环境变量中指定多个文件,可以临时将 KUBECONFIG 文件组合在一起,并在 kubectl中使用。

如下,那么是在 kubeconfig 是在内存中做的合并:

export KUBECONFIG=~/.kube/config:~/anotherconfig 

方案二:flatten

直接如下:

export KUBECONFIG=~/.kube/config:~/anotherconfig 
kubectl config view --flatten

如果需要,还可以管道输出到另外一个新文件。

  • --flatten:将生成的 kubeconfig 文件扁平化为自包含的输出(用于创建可移植的 kubeconfig 文件)

方案三:kubectl 插件 konfig

kubectl 有个 krew 插件包管理器,可以通过 krew 安装 konfig 实用插件来管理 kubeconfig。

实用工具:krew

什么是 krew:

Krew 是 kubectl 命令行工具的插件管理器。

Krew 可以帮助你:

  • 发现 kubectl 插件
  • 将它们安装到您的机器上
  • 并保持安装的插件是最新的

目前在 krew 上有 164个 kubectl插件。

Krew 可以在所有主要平台上工作,比如 macOS、Linux和Windows。

Krew 还可以帮助 kubectl插件开发者: 你可以很容易地在多个平台上打包和发布你的插件,并且可以通过 krew 集中的插件库来发现它们。

安装

Krew 本身是一款通过 Krew 安装和更新的 kubectl 插件(是的,krew 自托管)。

Bash 或 ZSH shell 安装:

  1. 如果需要用代理,请先配置 proxy,操作指南:Advanced Configuration · Krew

  2. 确认已安装 git

  3. 下载并安装 krew:

    (set -x; cd "$(mktemp -d)" &&OS="$(uname | tr '[:upper:]' '[:lower:]')" &&ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&KREW="krew-${OS}_${ARCH}" &&curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&tar zxvf "${KREW}.tar.gz" &&./"${KREW}" install krew
    )
  4. 添加 krewPATH: export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" 并重启 shell

  5. 运行 kubectl krew 来验证

  6. 要看完整的插件列表,运行:kubectl krew search

实用工具:konfig

安装:kubectl krew install konfig

krew 插件 konfig 可以帮助你管理 ~/.kube/config

使用 konfig 插件的语法如下:

kubectl konfig import -s new.yaml

总结

今天分享了 2 个实用插件:

  1. krewkubectl 插件管理器
  2. konfig:kubeconfig 配置管理插件

🎉🎉🎉

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

http://www.lryc.cn/news/27465.html

相关文章:

  • 阿里云ECS服务器的6大功能组件
  • 外贸建站多少钱?不同预算对应的建站方案!
  • Vue3中hook的使用及使用中遇到的坑
  • 数据库-差集交集并集
  • spark性能调优(四):网络
  • 高性能 WPF 图表控件LightningChart.NET:支持从 Web 服务器获取数据 | 附最新版试用下载
  • 文科女生月入14k背后:转行IT软件测试不是谁都学得来!
  • GB28181监控视频统一汇聚平台LiveGBS将海康大华华为宇视等厂家监控设备统一接入后如何生成固定播放链接或者固定的流地址可以直接无插件播放或者拉取
  • 认识BUG
  • C++string类型内置的搜索函数
  • Disruptor 消费线程丢失、写入无限阻塞问题
  • 【禅道测试环境搭建及安装】Linux上的禅道安装教程,从环境搭建开始
  • spring-boot rabbitmq整合
  • CentOS7安装redis redis常用命令
  • 世界文明的脉络
  • map和set 的封装
  • Springboot集成kafka(环境搭建+演示)|超级详细,建议收藏
  • Qt 绘制图表 - Qt Charts版
  • Java学习笔记 --- JavaScript
  • AP5216 平均电流型LED 降压恒流驱动器
  • B站的多个视频教程,怎样生成一个二维码?
  • 深入底层源码的Listener内存马(内存马系列篇三)
  • 云端需求助力跑赢周期,金山办公有望借助ChatGPT加速腾飞
  • Vulnhub靶场----8、DC-8
  • Makefile 和 Shell 脚本的区别与联系
  • java25种设计模式之工厂模式
  • 力扣-2020年最后一次登录
  • [蓝桥杯] 数学与简单DP问题
  • 浏览器的渲染过程解析
  • 【C++容器】std::fstream读写文件错误【2023.03.03】