kubectl 为 Bash 和 Zsh 支持自动补全功能,可以节省大量输入!
下面是设置 Bash 与 Zsh 下自动补齐的过程(包括 Linux 与 macOS 的差异)。

介绍

用于 Bash 的 kubectl 自动补齐脚本可以用 kubectl completion bash 命令生成。 在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。
不过,补齐脚本依赖于 bash-completion 软件包, 这意味着你必须先安装 bash-completion(你可以通过运行 type _init_completion)来测试是否 你已经安装了这个软件)。

安装 bash-completion

很多包管理器都提供 bash-completion(参见这里)。 你可以通过 apt-get install bash-completionyum install bash-completion 来安装。
上述命令会创建 /usr/share/bash-completion/bash_completion,也就是 bash-completion 的主脚本。 取决于所用的包管理器,你可能必须在你的 ~/.bashrc 中通过 source 源引此文件。
要搞清楚这一点,可以重新加载你的 Shell 并运行 type _init_completion。 如果命令成功,一切就绪;否则你就需要将下面的内容添加到你的 ~/.bashrc 文件中:

  1. $ source /usr/share/bash-completion/bash_completion

之后,重新加载你的 Shell 并运行 type _init_completion 来检查 bash-completion 是否已 正确安装。

启用 kubectl 自动补齐

你现在需要确定在你的所有 Shell 会话中都源引了 kubectl 自动补齐脚本。 实现这点有两种方式:

  • ~/.bashrc 文件中源引自动补齐脚本:

    echo 'source <(kubectl completion bash)' >>~/.bashrc
    
  • 将自动补齐脚本添加到目录 /etc/bash_completion.d

    kubectl completion bash >/etc/bash_completion.d/kubectl
    

    如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:

    echo 'alias k=kubectl' >>~/.bashrc
    echo 'complete -F __start_kubectl k' >>~/.bashrc
    

    说明: bash-completion 会自动源引 /etc/bash_completion.d 下的所有自动补齐脚本。

两种方法是等价的。重新加载 Shell 之后,kubectl 的自动补齐应该能够使用了。