维护一大堆 kubeconfig 的一些实践

本文介绍了在维护多个Kubernetes集群时,针对kubeconfig管理的挑战和解决方案。包括使用kubectx快速切换上下文和namespace,通过kube-ps1或自定义fish函数在shell中显示当前context,使用kubie作为一站式解决方案,以及利用direnv自动注入环境变量以确保集群环境正确。文章详细讲解了各个工具的用法和优缺点,旨在提高多集群运维效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021-12-20 更新

由于 kubie 是开一个子 shell 它会导致 direnv 失效,也就是说 kubiedirenv 无法共同使用,我只好再去尝试其他兼容的方案,毕竟如果换回 kubectx 就依然有维护 kubeconfig 的烦恼。这里找到一个新的工具 kubecm 可以帮助做 kubeconfig 的合并。

不过其实它也包含了 kubectx 的功能,但我的 kubectx 还提供了自动补全等东西,就这么一直用着了。

开始

如果需要维护很多 kubernetes 集群,每个集群都有一个 kubeconfig 的 yaml 那么在 ~/.kube 目录下就会有一大堆的 yaml 。在频繁切换和修改不同的集群的内容的时候,一个不小心就可能把 A 集群的东西部署到 B 集群造成运维事故。这里介绍下到目前为止维护对多个集群环境的一些痛点和实践。

首先先总结下痛点吧:

  1. 多个集群以及集群的 namespace 切换比较繁琐,通常需要 KUBECONFIG 环境变量的切换
  2. 不晓得自己当前处于哪个集群下
  3. 在使用 kustomize 或者 helm 对集群做更新的时候需要确保自己切换了 kubeconfig,除了小心之外没什么办法阻止错位的环境部署

下面记录下自己在试图解决这些痛点过程中找到的还不错的方案。

kubectx 快速切换上下文和 namespace

kubectx 可以切换 ~/.kube/config 文件中的多个 context,然后可以通过 kubens 命令切换不同的 namespace 。但如果我有一堆 kubeconfig yaml 的话还需要额外的一步,将它们合并到 ~/.kube/config 文件里。这个步骤用 kubectl 就能搞定:

KUBECONFIG=~/.kube/config:~/.kube/other.yaml kubectl config view \
    --merge --flatten > out.txt

不过依然是多了一步,而且既然有添加就有删除,如果其中一个集群的配置文件变化了或者废弃了就需要把这个集群剃掉:

kubectl config unset users.gke_project_zone_name
kubectl config unset contexts.aws_cluster1-kubernetes
kubectl config unset clusters.foobar-baz

zsh / bash / fish 集成展示当前 context

既然 kubectl config current-context

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值