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-completion
或 yum 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
卸载 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)
保存后重启终端即可生效。
参考链接:
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命令再也不用记了,自动补全提示真好的主要内容,如果未能解决你的问题,请参考以下文章