Kubernetes 上下文

处理 Kubernetes 上下文

Kubernetes 命令行工具 kubectl 通过本地文件 ~/.kube/config(会在 $KUBECONFIG 的文件) 记录你使用的 Kubernetes 集群和命名空间。

如果你想要改变命名空间,你可以使用 kubectl 命令行:

kubectl config set-context`kubectl config current-context` --namespace=foo

然而 jx 还提供了很多有用的命令,用来改变集群、命名空间或环境:

切换环境

使用 jx environment 来切换 环境

jx environment

你将会看到当前团队的环境列表。使用方向键和回车来选择你想要切换的环境。或者按下 Ctrl+C 终止,不切换环境。

或者,如果你知道想要切换的环境,可以直接把它作为参数:

jx env staging

切换命名空间

使用 jx namespace 在 Kubernetes 不同的命名空间之间进行切换。

jx namespace

你会看到 Kubernetes 集群中所有命名空间的列表。使用方向键和回车选择你想要切换的。或者,按下 Ctrl+C 中断,不切换命名空间。

或者,如果你知道想要切换的 Kubernetes 命名空间,可以直接把它作为参数:

jx ns jx-production

切换集群

使用 jx context 在不同的 Kubernetes 集群(或者上下文)之间切换。

jx context

你会得到当前机器上所有上下文的列表。使用方向键或者回车选择你想要切换的。或者,按下 Ctrl+C 中断,不切换集群。

或者,如果你知道想要切换的 Kubernetes 集群,可以直接把它作为参数:

jx ctx gke_jenkinsx-dev_europe-west2-a_myuserid-foo
jx ctx minikube

本地变化

当前你通过 kubectl 切换 Kubernetes 的命名空间或上下文,或上面提到的命令,那么 Kubernetes 会把 你所有的终端 都进行切换,因为它更新的是共享文件 (~/.kube/config$KUBECONFIG)。

这样很方便——但有时候会有危险。例如:如果你想要在生产集群上做一些事情;但是,忘记了,然后在另外一个终端上执行命令要删除你的开发命名空间上所有的 pod——但是你忘记来刚刚切换到来生产命名空间上!

因此,如果通过一个 shell 命令来切换 Kubernetes 上下文或命名空间,有时候是很有帮助的。例如:如果你总是想要看一下集群中的生产环境,就只在那个 shell 中使用那个集群,这样可以减少事故。

你可以使用命令 jx shell 提示你选择不同的 Kubernetes 上下文,例如:jx context 命令。然而,这样切换命名空间或集群就只能在当前 shell 中有效!

还有 jx shell 通过 jx prompt 自动更新你的命令提示符,这样使得你的 shell 很清楚上下文或命名空间的修改。

定制你的 shell

你可以使用 jx prompt 把当前 Kubernetes 集群和命名空间添加到你的终端提示符中。

要为 jx 命令 添加命令自动补充,尝试 jx 自动补充


Last modified March 23, 2026: Revert "Fix vertical" (436b79ca01)