Kubectl命令再也不用记了,自动补全提示真好

Posted 琦彦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubectl命令再也不用记了,自动补全提示真好相关的知识,希望对你有一定的参考价值。

Kubectl命令概览

Kubernetes提供的kubectl命令是与集群交互最直接的方式,v1.6版本的kubectl命令参考图如下:

Kubectl的子命令主要分为8个类别:

  • 基础命令(初学者都会使用的)
  • 基础命令(中级)
  • 部署命令
  • 集群管理命令
  • 故障排查和调试命令
  • 高级命令
  • 设置命令
  • 其他命令

熟悉这些命令有助于大家来操作和管理kubernetes集群。

Kubectl命令行提示

Bash命令提示

简介

kubectl 的 Bash 补全脚本可以用命令 kubectl completion bash 生成。 在 shell 中导入(Sourcing)补全脚本,将启用 kubectl 自动补全功能。

然而,补全脚本依赖于工具 bash-completion, 所以要先安装它(可以用命令 type _init_completion 检查 bash-completion 是否已安装)。

安装 bash-completion

很多包管理工具均支持 bash-completion(参见这里)。 可以通过 apt-get install bash-completionyum install bash-completion 等命令来安装它。

上述命令将创建文件 /usr/share/bash-completion/bash_completion,它是 bash-completion 的主脚本。 依据包管理工具的实际情况,你需要在 ~/.bashrc 文件中手工导入此文件。

要查看结果,请重新加载你的 shell,并运行命令 type _init_completion。 如果命令执行成功,则设置完成,否则将下面内容添加到文件 ~/.bashrc 中:

source /usr/share/bash-completion/bash_completion

重新加载 shell,再输入命令 type _init_completion 来验证 bash-completion 的安装状态。

启动 kubectl 自动补全功能

Bash

你现在需要确保一点:kubectl 补全脚本已经导入(sourced)到 shell 会话中。 可以通过以下两种方法进行设置:

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

如果 kubectl 有关联的别名,你可以扩展 shell 补全来适配此别名:

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null

如果 kubectl 有关联的别名,你可以扩展 shell 补全来适配此别名:

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

Note:

bash-completion 负责导入 /etc/bash_completion.d 目录中的所有补全脚本。

两种方式的效果相同。重新加载 shell 后,kubectl 自动补全功能即可生效。

完整的执行命令

# ubuntu的方式
# 安装 bash-completion
apt-get install bash-completion
# 将 completion 脚本添加到你的 ~/.bashrc 文件
echo 'source <(kubectl completion bash)' >>~/.bashrc
# 将 completion 脚本添加到 /etc/bash_completion.d 目录
kubectl completion bash >/etc/bash_completion.d/kubectl


# centos的方式
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
# 将 completion 脚本添加到你的 ~/.bashrc 文件
echo "source <(kubectl completion bash)" >> ~/.bashrc

kube-shell

开源项目kube-shell可以为kubectl提供自动的命令提示和补全,使用起来特别方便,推荐给大家。

Kube-shell有以下特性:

  • 命令提示,给出命令的使用说明
  • 自动补全,列出可选命令并可以通过tab键自动补全,支持模糊搜索
  • 高亮
  • 使用tab键可以列出可选的对象
  • vim模式

注:kube-shell 必须用 root 用户运行。如果是普通用户运行会报 /bin/sh: 1: kubectl: not found 错误。即使使用了 sudo kube-shell 同样也是不行的。

Linux下安装

# centos安装pip
sudo yum -y install epel-release
sudo yum -y install python-pip
# 安装kube-shell
pip install kube-shell

Mac下安装

pip install kube-shell --user -U

Kube-prompt

Kube-prompt 可以让你在命令行下接受与 Kubectl 相同的命令,并且不需要提供 Kubectl前缀。Kube-prompt 还提了交互式会话下的命令提示、自动补全等功能。

项目地址:https://github.com/c-bata/kube-prompt

安装 Kube-prompt

Kube-prompt 使用 Go 语言开发,天生良好的跨平台性。安装起来非常简单,只需下载各平台对应的二进制版本就可以开箱即用。

# Linux
$ wget https://github.com/c-bata/kube-prompt/releases/download/vv1.0.11/kube-prompt_vv1.0.11_linux_amd64.zip
$ unzip kube-prompt_v1.0.11_linux_amd64.zip

# macOS (darwin)
$ wget https://github.com/c-bata/kube-prompt/releases/download/vv1.0.11/kube-prompt_vv1.0.11_darwin_amd64.zip
$ unzip kube-prompt_v1.0.11_linux_amd64.zip

# 给 kube-prompt 加上执行权限并移动常用的可搜索路径。
$ chmod +x kube-prompt
$ sudo mv ./kube-prompt /usr/local/bin/kube-prompt

Kube-prompt 使用效果图

更推荐 Kube-prompt。Go 的原生性更好一些,并且 Kube-prompt 也不需要 root 权限。

Oh My Zsh

Oh My Zsh 是什么

  • Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于 zsh 命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。
  • Oh My Zsh 是基于 zsh 命令行的一个扩展工具集,提供了丰富的扩展功能。
  • 安装 Oh My Zsh 前提条件:必须已安装 zsh

Zsh 是什么

  • Zsh 是一款强大的虚拟终端,既是一个系统的虚拟终端,也可以作为一个脚本语言的交互解析器。
# 打开终端,在终端上输入: 
zsh --version

# 这个命令来查看我们的电脑上是否安装了 Zsh 
# 端查询版本为: zsh 5.8 (x86_64-apple-darwin20.0)
  • 终端查询版本为: zsh 5.7.1 (x86_64-apple-darwin18.2.0)
# 查看系统当前 shell
cat /etc/shells 

安装ZSH

1.查看当前系统有哪些shell

cat /etc/shells

如果没有zsh就进行安装

2.安装zsh

yum install -y zsh  //CentOS系统

apt-get install -y zsh //ubuntu系统

#如果没有安装curl或者wget或者git  建议安装一下
yum install -y curl wget git

查看是否安装成功
zsh --version
方法1:
使用脚本安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

或者使用wget获取脚本
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

#安装完成之后可以修改主题:
# vi ~/.zshrc 
ZSH_THEME="agnoster"
#主题预览地址:https://github.com/robbyrussell/oh-my-zsh/wiki/Themes

#方法2:
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s /bin/zsh

vi .zshrc
ZSH_THEME="agnoster" # (this is one of the fancy ones)
# see https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster

安装 Oh My Zsh

  • 可以通过 curl 或 wget 两种方式来安装,用一条命令即可安装。

curl 安装

GitHub:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Gitee ( 国内镜像 )

sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

wget 安装

GitHub:

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Gitee ( 国内镜像 )

sh -c "$(wget -O- https://gitee.com/pocmon/mirrors/raw/master/tools/install.sh)"

安装过程中输出如下:

[root@master]~# sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"
Cloning Oh My Zsh...
remote: Enumerating objects: 1295, done.
remote: Counting objects: 100% (1295/1295), done.
remote: Compressing objects: 100% (1249/1249), done.
Receiving objects:  86% (1114/1295), 876.00 KiB 
...
Resolving deltas: 100% (26/26), done.

From https://github.com/ohmyzsh/ohmyzsh
 * [new branch]      master     -> origin/master
Branch master set up to track remote branch master from origin.
Already on 'master'
/root

Looking for an existing zsh config...
Using the Oh My Zsh template file and adding it to ~/.zshrc.

         __                                     __   
  ____  / /_     ____ ___  __  __   ____  _____/ /_  
 / __ \\/ __ \\   / __ `__ \\/ / / /  /_  / / ___/ __ \\ 
/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / 
\\____/_/ /_/  /_/ /_/ /_/\\__, /    /___/____/_/ /_/  
                        /____/                       ....is now installed!


Before you scream Oh My Zsh! look over the `.zshrc` file to select plugins, themes, and options.

• Follow us on Twitter: https://twitter.com/ohmyzsh
• Join our Discord community: https://discord.gg/ohmyzsh
• Get stickers, t-shirts, coffee mugs and more: https://shop.planetargon.com/collections/oh-my-zsh

设置主题

设置固定主题
  • 安装完毕后,我们就可以使用了,先来简单配置一下,Oh My Zsh 提供了很多主题风格,我们可以根据自己的喜好,设置主题风格
cat ~/.zshrc

# 找到 ZSH_THEME
# robbyrussell 是默认的主题
ZSH_THEME="robbyrussell"

# ZSH_THEME="样式名称" 
  • 保存这个文件文件,重新打开终端。

设置随机主题
  • 我们还可以随机设置主题:
  • 步骤同上
ZSH_THEME="random"
  • 每次打开终端主题是随机的。
  • 终端输出:
[oh-my-zsh] Random theme '/Users/xxxx/.oh-my-zsh/themes/zhann.zsh-theme' loaded...
  • 其中 zhann.zsh-theme 是主题的名称, 有喜欢的童鞋可以记录保留.

查看主题名称

  • Oh My Zsh 默认自带了一些默认主题,存放在 ~/.oh-my-zsh/themes 目录中。我们可以查看这些主题
  • 终端输入:
cd ~/.oh-my-zsh/themes && ls

查看更多主题样式github.com/robbyrussell/oh-my-zsh/wiki/Themes


卸载 Oh My Zsh

  • 终端输入 :
uninstall_oh_my_zsh
Are you sure you want to remove Oh My Zsh? [y/N]  Y
  • 终端提示信息:
Removing ~/.oh-my-zsh
Looking for original zsh config...
Found ~/.zshrc.pre-oh-my-zsh -- Restoring to ~/.zshrc
Found ~/.zshrc -- Renaming to ~/.zshrc.omz-uninstalled-20170820200007
Your original zsh config was restored. Please restart your session.
Thanks for trying out Oh My Zsh. It's been uninstalled.

kubectl自动补全

建议使用oh-my-zsh,增加对kubectl命令自动补全支持。

修改~/.zshrc文件,增加如下两行:

plugins=(kubectl)

source <(kubectl completion zsh)

保存后重启终端即可生效。

参考链接:

Install and Set Up kubectl

https://juejin.cn/post/6844903678898356237

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-macos/

https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-linux/

以上是关于Kubectl命令再也不用记了,自动补全提示真好的主要内容,如果未能解决你的问题,请参考以下文章

1分钟配置Kubectl命令自动补全功能

kubectl命令自动补全

kubectl 命令自动补全

kubectl命令自动补全功能

k8s kubectl tab 自动补全,Linux 命令自动补全

k8s kubectl tab 自动补全,Linux 命令自动补全