手把手教你打造高效的 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

相關文章
相關標籤/搜索