天天看點

kubectl也可以擴充了

前言

kubernetes作為一個開放式式的分布式系統,其提供了多種擴充機制如CRD, service catalog等給使用者做系統功能增強以及外部系統對接等。當時以往版本都是以擴充服務端的功能,現在剛釋出的全新版本1.12.0已經可以支援kubectl指令行的擴充了。下面将通過一個簡單例子來示範如何做kubectl的擴充。

請注意:目前kubectl的擴充alpha狀态,從1.12,0開始提供。

kubectl擴充例子示範

例子的目的

通常我們會通過

kubect get pod/xxx -o yaml

的方式來展示對應的k8s資源對象的申明,但是這個輸出比較不太友好,輸出沒有對于關鍵字做高亮展示,可否提供一個指令對于輸出做渲染呢?

其實很簡單,通過簡單的kubectl指令擴充就可以做到,我們把這個擴充的kubectl子指令定義為inspect,這樣,我們期望的指令是:

kubectl inspect pod/xxxx           

然後期望結果類似如下的渲染展示:

kubectl也可以擴充了

前置條件

  • 更新kubectl 到新的1.12.x版本,在Mac下可以執行:
brew upgrade kubernetes-cli           
  • 安裝對應的渲染工具

    bat

brew install bat           

建立kubectl的inspect plugin

/usr/local/bin

下建立一個

kubectl-inspect

的檔案,并輸入以下内容

這裡需要注意的是,檔案名必須是kubectl-<子指令>的形式

#!/bin/bash
kubectl get "$@" -o yaml | bat -l yaml -p           

并将該檔案改為可執行

chmod +x kubectl-inspect           

測試

在指令行執行

kubectl inspect pod/xxx           

就可以看上面的效果了

小結

這個plugin的機制還是十分誘人的,讓維護人員都可以集中在kubectl指令裡操作了。kubernetes在向分布式的OS又向前邁了一小步,kubectl就像是linux的cmd了

參考

繼續閱讀