让kubectl命令能自动补全

kubectl命令一般都挺长的,经常重复输入还挺麻烦的,其实也是可以让它自动补全的。

默认bash包含了自动补全,只要输入命令的前几个字母,再按TAB键,如果这几个字母有很多命令匹配到会全部列出让选择,如果只匹配到一个,就会直接补全命令。 但这种补全一般是只针对命令和文件名。

比如默认情况下输入"kubectl",这个时候按TAB键,只会匹配出当前目录下的文件,不会列出这个命令的参数。 还比如输入"kubectl -n k",这个时候按TAB键,并不能匹配出以k开头的命名空间来。

想要让kubectl命令也补全这种信息,就需要安装bash的一个扩展包bash-completion。

Linux下安装和设置:

1、安装bash-completion
yum install  bash-completion
或者
apt install bash-completion
2、使其生效
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
3、添加环境变量(让以后开机就生效)

echo "source <(kubectl completion bash)" >> ~/.bashrc

4、测试

输入kubectl命令后,按TAB建,会列出kubectl参数,在没装扩展包前只会列出当前目录下的文件。

# kubectl[TAB键]
alpha          (Commands for features in alpha)
annotate       (Update the annotations on a resource)
api-resources  (Print the supported API resources on the server)
api-versions   (Print the supported API versions on the server, in the form of…)
apply          (Apply a configuration to a resource by file name or stdin)
attach         (Attach to a running container)
auth           (Inspect authorization)
autoscale      (Auto-scale a deployment, replica set, stateful set, or replica…)
certificate    (Modify certificate resources.)

输入kubectl -n kube-命令后,按TAB建,会列出匹配kube-开头的命名空间,在没装扩展包前是没有反应的。

# kubectl -n kube-[TAB键]
kube-node-lease  kube-public      kube-system