Kubernetes 上下文切换噩梦已结束

发布: (2025年12月10日 GMT+8 03:42)
4 min read
原文: Dev.to

Source: Dev.to

Kubernetes 上下文切换噩梦示意图

如果你每天都在使用多个 Kubernetes 集群,你一定懂得其中的痛苦。生产、预发布、开发,甚至是上个月某人随手起的测试集群——它们全部都写在你的 kubeconfig 文件里,切换它们就像蒙着眼在迷宫里摸索。

我受够了,于是我写了 kubecfg

什么是 kubecfg?

kubecfg 是一个简化 kubeconfig 管理的 CLI 工具。它可以让你:

  • 添加 带自定义名称的新集群配置
  • 列出 所有上下文,一目了然
  • 切换 上下文并可选指定命名空间
  • 交互式 管理命名空间
  • 重命名 上下文,使其更易记
  • 删除 不再需要的上下文
  • 合并 多个 kubeconfig 文件

杀手级功能?带模糊搜索的交互式选择器。再也不需要复制粘贴冗长的上下文名称。

快速演示

带命名空间的上下文切换

切换上下文示意图

kubecfg use -n

该命令会打开交互式选择器让你先选上下文,然后再询问要使用的命名空间。两次选择在同一流程中完成。

Select context
  minikube
▸ production-eks
  staging-gke
  dev-local

✓ production-eks

Select namespace
  default
  kube-system
▸ backend-services
  frontend
  monitoring

✓ backend-services

Switched to context 'production-eks' with namespace 'backend-services'

只切换上下文

kubecfg use production-eks

带指定命名空间切换

kubecfg use production-eks -n backend-services

-n 参数很智能:不带值时进入交互式选择,直接提供值则直接使用。

安装

Homebrew(macOS)

brew tap kadirbelkuyu/tap
brew install kadirbelkuyu/tap/kubecfg

Go 安装

go install github.com/kadirbelkuyu/kubecfg@latest

从源码编译

git clone https://github.com/kadirbelkuyu/kubecfg.git
cd kubecfg
go build -o kubecfg .
sudo mv kubecfg /usr/local/bin/

命令详解

添加新集群

kubecfg add ~/Downloads/eks-config.yaml --name production-eks

原始文件保持不变。上下文会以你指定的名称加入主 kubeconfig。

列出所有上下文

kubecfg list

输出

CURRENT  NAME            CLUSTER         SERVER                              NAMESPACE
*        production-eks  production-eks  https://xxx.eks.amazonaws.com       backend
         staging-gke     staging-gke     https://xxx.gke.googleapis.com      -
         dev-local       minikube        https://192.168.49.2:8443           default

星号表示当前上下文。- 表示使用默认命名空间。

交互式上下文切换

kubecfg use

无需参数。会弹出交互式选择器,使用方向键移动,Enter 确认。

Select context
  minikube
▸ production-eks
  staging-gke

✓ production-eks

Switched to context 'production-eks'

命名空间管理

为当前上下文切换命名空间

kubecfg ns

交互式选择器会直接从集群读取可用命名空间:

Select namespace
  default
  kube-system
▸ backend-services
  monitoring

✓ backend-services

Namespace set to 'backend-services'

直接设置命名空间

kubecfg ns kube-system

查看当前命名空间

kubecfg ns current
# Output: backend-services

重命名上下文

kubecfg rename arn:aws:eks:us-east-1:123456789:cluster/prod production

删除上下文

kubecfg remove old-cluster

会出现确认提示:

Remove context 'old-cluster'? [y/N]:

使用 --force 跳过提示:

kubecfg remove old-cluster --force

合并配置文件

kubecfg merge config1.yaml config2.yaml config3.yaml -o merged.yaml

所有上下文、集群和用户会合并到同一个文件中,重复项会被优雅处理。

合并配置示意图

Back to Blog

相关文章

阅读更多 »