手把手教你打造高效的 Kubernetes 命令行终端

 

Kubernetes 做为云原生时代的操做系统,熟悉和使用它是每名用户的必备技能。本文将介绍一些提升操做 Kubernetes 效率的技巧以及如何打造一个高效的 Kubernetes 命令行终端的方法。linux

Kubectl 自动补全

Kubectl 这个命令行工具很是重要,与之相关的命令也不少。咱们也记不住那么多的命令,并且也会常常写错,因此命令行自动补全是颇有必要的。Kubectl 工具自己就支持自动补全,只需简单设置一下便可。nginx

  • Bash 用户git

大多数用户的 Shell 使用的是 Bash,Linux 系统能够经过下面的命令来设置:github

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

若是发现不能自动补全,能够尝试安装 bash-completion 而后刷新便可!web

  • ZSH 用户shell

若是你使用的 Shell 是 ZSH,能够经过下面的命令来设置:编程

$ echo "source <(kubectl completion zsh)" >> ~/.zshrc $ source ~/.zshrc$ echo "source <(kubectl completion zsh)" >> ~/.zshrc $ source ~/.zshrc

交互式 Kubernetes 客户端

Kube-prompt

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

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

安装 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# 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$ 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$ cd $HOME$ wget https://raw.githubusercontent.com/ahmetb/kubectl-alias/master/.kubectl_aliases
  • 配置 SHELL

Bash 用户

$ vim ~/.bashrc [ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases$ vim ~/.bashrc [ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases

ZSH 用户

$ vim ~/.zshrc [ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases$ vim ~/.zshrc [ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases

若是你想在运行以前打印完整的 Kubectl 命令,能够加上如下行。

function kubectl() { echo "+ kubectl $@"; command kubectl $@; }function kubectl() { echo "+ kubectl $@"; command kubectl $@; }

Kubectl 别名生成规则

Kubectl 别名使用示例

  • 简单别名示例

$ kd → kubectl describe$ kd → kubectl describe
  • 高级别名示例

$ kgdepallw → kubectl get deployment –all-namespaces –watch$ 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# 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$ 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$ 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.comhttp://t.cn/RD6vxGfhttp://t.cn/RD6vbc1

相关文章
相关标签/搜索