在多个集群环境中工作还是有挑战的。执行命令发现选择错了集群的情况很容易发生。如果你每天多次切换集群,会很方便快速。但是每次你想要切换集群时要执行kubectl config use-context <context_name>命令就会很低效。
今天介绍3个工具会让你在多k8s集群环境中工作的很轻松。我将从以下几个方面来评估工具实用性:
- 速度
如果你有多个k8s集群可选择,你切换k8s上下文有多快?你还记得所有的集群上下文? - 灵活性
工具是否具备高级特性比如支持多config文件? - 安全:
可以同时打开多个终端,每个终端都运行在自己集群上下文中?在一个终端切换集群上下文会影响其他终端,导致出错概率?
根据上面几个评估指标,下面我们来看看以下3个工具:
Kubectx
Kubectx是最流行的切换k8s集群工具,但是它功能比较少!可以显示你所有的kubeconfig列表供你选择。就这些!
安装Kubectx
Kubectx 适用于所有主要平台,Linux、Windows 和 macOS。它可以使用helm 这样的本地包管理器来安装。你还可以使用 kubectl krew install ctx 将其安装为 Kubectl 插件。更多细节在这里。
Kubectx缺点
更改 Kubernetes上下文时,kubectx 会为所有终端会话全局更改,因此多个终端不能独立管理不同的集群。
Kubie
Kubie 是kubectx 的替代品。它快速、灵活,并且不会影响你的Kubeconfig。
- 使用kubie ctx切换当前shell的Kubernetes 上下文。
- kubie exec <context> <namespace> <Kubectl command> 允许你在特定上下文中运行单个kubectl 命令。
- 可以管理多个kubeconfig文件并通过修改 ~/.kube/kubie.yaml 文件中的设置来自定义 Kubie 的行为。
安装Kubie
Kubie安装包适用于macOS 和Linux,不适用于 Windows。详细内容参考这里。
Kubeswitch
Kubeswitch具有Kubectx 和Kubie 的核心功能。它是明显的赢家,也是我们将在未来使用的工具。
- 使用Hooks(类似于 Git Hooks),可以在你选择的时间自动运行可执行文件/内联 shell 命令。
- 通过启用搜索索引功能,可以在数百个Kubernetes上下文中进行闪电般的快速搜索。这会索引跨多个本地和远程系统的所有上下文。请注意,你必须手动刷新索引以防止结果过时。
其他功能
- 更改历史记录 - 你之前切换到的所有上下文的列表。
- 上下文别名 - 给你的上下文一个别名,以帮助快速访问。
- 终端隔离——从不同的终端窗口访问多个集群。
安装Kubeswitch
如果你使用的不是 MacOS,从源代码或二进制文件下载和安装可能会有点复杂。但这绝对值得你花时间。详细说明参考这里。