Kubernetes 作为云原生时代的操作系统, 熟悉和使用它是每名用户的必备技能. 本文将介绍一些提高操作 Kubernetes 效率的技巧以及如何打造一个高效的 Kubernetes 命令行终端的方法.
Kubectl 自动补全
Kubectl 这个命令行工具非常重要, 与之相关的命令也很多. 我们也记不住那么多的命令, 而且也会经常写错, 所以命令行自动补全是很有必要的. Kubectl 工具本身就支持自动补全, 只需简单设置一下即可.
Bash 用户
大多数用户的 Shell 使用的是 Bash,Linux 系统可以通过下面的命令来设置:
- $ echo "source <(kubectl completion bash)">> ~/.bashrc
- $ source ~/.bashrc
如果发现不能自动补全, 可以尝试安装 bash-completion 然后刷新即可!
ZSH 用户
如果你使用的 Shell 是 ZSH, 可以通过下面的命令来设置:
- $ echo "source <(kubectl completion zsh)">> ~/.zshrc
- $ source ~/.zshrc
交互式 Kubernetes 客户端
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/v1.0.3/kube-prompt_v1.0.3_linux_amd64.zip
- $ unzip kube-prompt_v1.0.3_linux_amd64.zip
- # macOS (darwin)
- $ wget https://github.com/c-bata/kube-prompt/releases/download/v1.0.3/kube-prompt_v1.0.3_darwin_amd64.zip
- $ unzip kube-prompt_v1.0.3_darwin_amd64.zip
- # 给 kube-prompt 加上执行权限并移动常用的可搜索路径.
- $ chmod +x kube-prompt
- $ sudo mv ./kube-prompt /usr/local/bin/kube-prompt
Kube-prompt 使用效果图
Kube-shell
Kube-shell 可以为 Kubectl 提供自动的命令提示和补全, Kube-shell 与 Kube-prompt 的使用方法类似.
项目地址: https://github.com/cloudnativelabs/kube-shell
Kube-shell 特性
命令提示, 给出命令的使用说明.
自动补全, 列出可选命令并可以通过 TAB 键自动补全, 支持模糊搜索.
支持语法高亮.
使用 TAB 键可以列出可选的对象.
支持 VIM 模式.
安装 Kube-shell
Kube-shell 安装非常的简单, 使用 PIP 就可以一键安装了.
$ pip install kube-shell
注: kube-shell 必须用 root 用户运行. 如果是普通用户运行会报 /bin/sh: 1: kubectl: not found 错误. 即使使用了 sudo kube-shell 同样也是不行的.
Kube-shell 使用效果图
注:Kube-prompt 和 Kube-shell 我都使用过, 更推荐 Kube-prompt.Go 的原生性更好一些, 并且 Kube-prompt 也不需要 root 权限.
Kubectl Aliases
Kubectl Aliases 是一个通过编程方式生成的 Kubectl 别名脚本. 如果你需要频繁地使用 Kubectl 和 Kubernetes API 进行交互, 使用别名将会为你节省大量的时间.
项目地址: https://github.com/ahmetb/kubectl-aliases
安装 Kubectl Aliases
Kubectl Aliases 就只是一个 SHELL 脚本, 你只需直接下载 .kubectl_aliases 文件并将其保存在 $HOME 目录中, 然后在 SHELL 配置文件中调用即可.
下载脚本
- $ cd $HOME
- $ wget https://raw.githubusercontent.com/ahmetb/kubectl-alias/master/.kubectl_aliases
配置 SHELL
Bash 用户
- $ vim ~/.bashrc
- [ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases
ZSH 用户
- $ vim ~/.zshrc
- [ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases
如果你想在运行之前打印完整的 Kubectl 命令, 可以加上以下行.
function kubectl() { echo "+ kubectl $@"; command kubectl $@; }
Kubectl 别名生成规则
Kubectl 别名使用示例
简单别名示例
$ kd → kubectl describe
高级别名示例
$ kgdepallw → kubectl get deployment -all-namespaces -watch
Kubeval
如果你手动写 Kubernetes manifest 文件, 检查 manifest 文件的语法是否有误是很困难的, 特别是当你有多个不同版本的 Kubernetes 集群时, 确认配置文件语法是否正确更是难上加难.
Kubeval 是一个用于校验 Kubernetes YAML 或 JSON 配置文件的工具, 支持多个 Kubernetes 版本, 可以帮助我们解决不少的麻烦.
项目地址: https://github.com/garethr/kubeval
Kubeval 安装
Kubeval 同样是一款使用 Go 语言开发, 天生良好的跨平台性. 安装起来非常简单, 只需下载各平台对应的二进制版本就可以开箱即用.
- # Linux
- $ wget https://github.com/garethr/kubeval/releases/download/0.7.1/kubeval-linux-amd64.tar.gz
- $ tar xf kubeval-linux-amd64.tar.gz
- # macOS (darwin)
- $ wget https://github.com/garethr/kubeval/releases/download/0.7.1/kubeval-darwin-amd64.tar.gz
- $ tar xf kubeval-darwin-amd64.tar.gz
- # 给 kubeval 加上执行权限并移动常用的可搜索路径.
- $ chmod +x kubeval
- $ sudo mv kubeval /usr/local/bin
Kubeval 使用示例
Kubernetes manifest 文件正常的情况
- $ kubeval nginx-deployment.yaml
- The document nginx-deployment.yaml contains a valid Deployment
Kubernetes manifest 文件不正常的情况
- $ kubeval nginx.yaml
- The document nginx.yaml contains an invalid Deployment
- ---> spec.replicas: Invalid type. Expected: integer, given: string
其它一些实用工具
下面这几个工具也挺不错的, 使用起来都很简单. 就不展开讲了, 如果有兴趣可以去看下官方文档具体的使用方法.
Kube-ps1
该工具主要作用为命令行终端增加一个提示符.
项目地址: https://github.com/jonmosco/kube-ps1
Kube-ps1 使用效果图
Kubectx
该工具主要作用是快速在多个 Kubernetes 集群中切换.
项目地址: https://github.com/ahmetb/kubectx
Kubectx 使用效果图
Kubens
该工具可以帮助您快速的在 Kubernetes 的多个命名空间之间切换.
项目地址: https://github.com/ahmetb/kubectx
Kubens 使用效果图
参考文档
- http://www.google.com/
- http://t.cn/RD6vxGf
- http://t.cn/RD6vbc1
来源: http://www.tuicool.com/articles/FfuqamR