交互式模糊搜索需自行在 PATH 中安装 fzf,否则退回普通行为;装了 fzf 想关掉需设 KUBECTX_IGNORE_FZF=1;Tab 补全脚本需按 shell 手动配置到 fpath 或 completions 目录
kubectx
ahmetbApache-2.0活跃维护在多个 Kubernetes 集群和命名空间之间快速切换的命令行工具,省去反复敲长串 kubectl config 命令的麻烦。
Faster way to switch between clusters and namespaces in kubectl
brew install kubectxREADME 未说明,纯命令行工具,无 GPU 或显存要求
在 kubectl 里快速切换集群 context 和 namespace 的命令行小工具
在多个 Kubernetes 集群和命名空间之间快速切换的命令行工具,省去反复敲长串 kubectl config 命令的麻烦。
核心能力
- 用 kubectx 一条命令切换 kubeconfig 中的集群 context
- 用 kubens 切换当前 namespace 并写回 kubectl 配置
- 支持 kubectx - 和 kubens - 回到上一个 context/namespace
- 可启动只含单个 context 的隔离 shell 或只读 shell
- 安装 fzf 后支持交互式模糊搜索,bash/zsh/fish 支持 Tab 补全
容易踩的坑
- v0.11.0最新正式版2026-03-27 · 2026-03-27 03:13 UTC
Changelog
- feature:
kubectx -rlaunches a read-only shell where only edits to the cluster via kubectl are prevented. Demo: https://x.com/ahmetb/status/2036830308587241971
- feature:
- v0.10.22026-03-23 · 2026-03-23 23:45 UTC
查看更新说明
Changelog
- 2cb7500e341cd83db0c57b1a6901bd37c4a2f267 Support interactive fzf selection for
kubectx -swith no arguments - e4727d38f8894e11848ecf823eb24d00e580d477 Fix relative path resolution in exec credential plugins (#490)
- eb621b4406b7e08c63c0ffa546b67083d251ca0b Support multiple kubeconfig files (KUBECONFIG=file1:file2:file3) (#489)
- 2cb7500e341cd83db0c57b1a6901bd37c4a2f267 Support interactive fzf selection for
- v0.10.02026-03-20 · 2026-03-20 20:30 UTC
查看更新说明
Changelog
More features in the Go implementation of kubectx/kubens! (It's been 2.5 years since the last release.)
Features
kubectx --shell/-s <CONTEXT>spins up an isolated shell where only that context exists! (#461)kubens -f <NAMESPACE>skips checking if namespace exists and switches into it (#416) @idsulikkubens -u/--unsetunsets the current namespace (#440) @jmischler72- kubectx and kubens now respect
$XDG_CACHE_HOME(#478)
Bug Fixes
- kubectx: skip launching fzf when no contexts exist in kubeconfig (#480)
- kubens: skip launching fzf when no contexts exist in kubeconfig (#481)
Full Changelog: https://github.com/ahmetb/kubectx/compare/v0.9.5...v0.10.0
- v0.9.52023-07-14 · 2023-07-14 03:24 UTC
查看更新说明
Changelog
- 92e5b5f Release v0.9.5
- v0.9.42021-07-06 · 2021-07-06 22:32 UTC
查看更新说明
Changelog
979012e Release v0.9.4
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
kubectx + kubens: Power tools for kubectl
This repository provides both kubectx and kubens tools.
Install →
What are kubectx and kubens?
kubectx is a tool to switch between contexts (clusters) on kubectl faster, and launch readonly shells for each context. kubens is a tool to switch between Kubernetes namespaces (and configure them for kubectl) easily.
Here's a kubectx demo:

...and here's a kubens demo:

Usage
kubectx
Switch to another cluster that's in kubeconfig:
$ kubectx minikube
Switched to context "minikube".
Switch back to previous cluster:
$ kubectx -
Switched to context "oregon".
Start an isolated shell that only has a single context:
$ kubectx -s minikube
Start a read-only shell where write operations are blocked:
$ kubectx -r minikube
Rename context:
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "gke_ahmetb_europe-west1-b_dublin" renamed to "dublin".
kubens
Change the active namespace on kubectl:
$ kubens kube-system
Context "test" set.
Active namespace is "kube-system".
Go back to the previous namespace:
$ kubens -
Context "test" set.
Active namespace is "default".
Change the active namespace even if it doesn't exist:
$ kubens namespace-404 -f
Context "test" set.
Active namespace is "namespace-404".
If you have fzf installed, you can also
interactively select a context or cluster, or fuzzy-search by typing a few
characters. To learn more, read interactive mode →
Both kubectx and kubens support Tab completion on bash/zsh/fish
shells to help with long context names. You don't have to remember full context
names anymore.
Installation
| Package manager | Command |
|---|---|
| Homebrew (macOS & Linux) | brew install kubectx |
| MacPorts (macOS) | sudo port install kubectx |
| apt (Debian/Ubuntu) | sudo apt install kubectx |
| pacman (Arch Linux) | sudo pacman -S kubectx |
| Chocolatey (Windows) | choco install kubens kubectx |
| Scoop (Windows) | scoop bucket add main && scoop install main/kubens main/kubectx |
| winget (Windows) | winget install --id ahmetb.kubectx && winget install --id ahmetb.kubens |
| Krew (kubectl plugin) | kubectl krew install ctx && kubectl krew install ns |
Alternatively, download binaries from the Releases page → and add them to somewhere in your PATH.
zsh (with antibody)
Add this line to your Plugins File (e.g.
~/.zsh_plugins.txt):
ahmetb/kubectx path:completion kind:fpath
Depending on your setup, you might or might not need to call compinit or
autoload -U compinit && compinit in your ~/.zshrc after you load the Plugins
file. If you use oh-my-zsh, load the
completions before you load oh-my-zsh because oh-my-zsh will call
compinit.
zsh (plain)
The completion scripts have to be in a path that belongs to $fpath. Either
link or copy them to an existing folder.
Example with oh-my-zsh:
mkdir -p ~/.oh-my-zsh/custom/completions
chmod -R 755 ~/.oh-my-zsh/custom/completions
ln -s /opt/kubectx/completion/_kubectx.zsh ~/.oh-my-zsh/custom/completions/_kubectx.zsh
ln -s /opt/kubectx/completion/_kubens.zsh ~/.oh-my-zsh/custom/completions/_kubens.zsh
echo "fpath=($ZSH/custom/completions $fpath)" >> ~/.zshrc
If completion doesn't work, add autoload -U compinit && compinit to your
.zshrc (similar to
zsh-completions).
If you are not using oh-my-zsh, you
could link to /usr/share/zsh/functions/Completion (might require sudo),
depending on the $fpath of your zsh installation.
In case of errors, calling compaudit might help.
bash
git clone https://github.com/ahmetb/kubectx.git ~/.kubectx
COMPDIR=$(pkg-config --variable=completionsdir bash-completion)
ln -sf ~/.kubectx/completion/kubens.bash $COMPDIR/kubens
ln -sf ~/.kubectx/completion/kubectx.bash $COMPDIR/kubectx
cat << EOF >> ~/.bashrc
#kubectx and kubens
export PATH=~/.kubectx:\$PATH
EOF
fish
mkdir -p ~/.config/fish/completions
ln -s /opt/kubectx/completion/kubectx.fish ~/.config/fish/completions/
ln -s /opt/kubectx/completion/kubens.fish ~/.config/fish/completions/
[!NOTE] Tip: Show context/namespace in your shell prompt with oh-my-posh or simply with kube-ps1.
Interactive mode
If you want kubectx and kubens commands to present you an interactive menu
with fuzzy searching, you just need to install
fzf in your $PATH.

Caveats:
- If you have
fzfinstalled, but want to opt out of using this feature, set the environment variableKUBECTX_IGNORE_FZF=1. - If you want to keep
fzfinteractive mode but need the default behavior of the command, you can do it by piping the output to another command (e.g.kubectx | cat).
Customizing colors
If you like to customize the colors indicating the current namespace or context,
set the environment variables KUBECTX_CURRENT_FGCOLOR and
KUBECTX_CURRENT_BGCOLOR (refer color codes
here):
export KUBECTX_CURRENT_FGCOLOR=$(tput setaf 6) # blue text
export KUBECTX_CURRENT_BGCOLOR=$(tput setab 7) # white background
Colors in the output can be disabled by setting the
NO_COLOR environment variable.
If you liked kubectx, you may like my
kubectl-aliases project, too. I
recommend pairing kubectx and kubens with fzf and
kube-ps1.