Kubectl-fzf:kubectl自动补全插件

第一步 激活kubectl自带指令补全插件

kubectl 通过命令 kubectl completion zsh 生成 Zsh 自动补全脚本。 在 Shell 中导入(Sourcing)该自动补全脚本,将启动 kubectl 自动补全功能。

zsh 中,只需将下面内容添加到启动文件~/.zshrc

1
source <(kubectl completion zsh)

激活后,在输入kubectl指令时,按tab键即可提供简单的自动补全功能。

image-20241210113528907

如果使用其他终端,可以查看文档:在 Linux 系统中安装并设置 kubectl | Kubernetes

第二步 安装模糊搜索 fzf

1
apt install fzf

检查~./zshrc是否被添加了以下语句:

1
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

更新之后,即可使用ctrl+T 或输入**后按tab唤起模糊搜索。

image-20241210113842347

对于特定指令,fzf有针对性支持,比如ssh,会自动查找本机路由表:

image-20241210113936802

操作手册:fzf: Shell Integration | junegunn.choi.

第三步 安装Kubectl-fzf

使用Go安装:

1
2
3
4
5
6
7
8
# 安装 autocompletion 组件
go install github.com/bonnefoa/kubectl-fzf/v3/cmd/kubectl-fzf-completion@main

# 如果需要本地运行 server,安装 server 组件
go install github.com/bonnefoa/kubectl-fzf/v3/cmd/kubectl-fzf-server@main

# 下载Zsh补全脚本
wget https://raw.githubusercontent.com/bonnefoa/kubectl-fzf/main/shell/kubectl_fzf.plugin.zsh -O ~/.kubectl_fzf.plugin.zsh

确保 $GOPATH/bin 包含在你的 $PATH 环境变量中:

1
export PATH=$PATH:$GOPATH/bin

编辑~/.zshrc,添加如下语句并更新终端:

1
2
# 启用 kubectl-fzf 的自动补全
source ~/.kubectl_fzf.plugin.zsh

此时尝试使用自动补全,不会有任何结果,需要启动kubectl-fzf-server来监控k8s信息。

kubectl-fzf-server分为本地版本和pod版本。本地版本自己运行在自己的机器上,pod版本运行在集群中。本地版本使用如下指令运行:

1
kubectl-fzf-server

该服务会将集群信息缓存在本地 /tmp/kubectl_fzf_cache 目录中。

添加如下参数可以修改kubectl-fzf-server所监听的端口:

1
kubectl-fzf-server --listen-address=localhost:8081

使用如下环境变量使kubectl-fzf监听对应端口:

1
KUBECTL_FZF_PORT_FORWARD_LOCAL_PORT=8081

新开一个终端,键入以下内容后,结果如图

1
kubectl get pods <tab>

image-20241210115129324

选择目标pod后,会自动将pod和namespace信息添加到终端的输入:

image-20241210115218586

也可以将kubectl-fzf-server设为守护进程或k8s pod,具体见:bonnefoa/kubectl-fzf: A fast kubectl autocompletion with fzf


Kubectl-fzf:kubectl自动补全插件
https://buttering.github.io/EasyBlog/2025/02/18/Kubectl-fzf:kubectl自动补全插件/
作者
Buttering
发布于
2025年2月18日
许可协议