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