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 到新的1.12.x版本,在Mac下可以執行:
brew upgrade kubernetes-cli
- 安裝對應的渲染工具
bat
brew install bat
建立kubectl的inspect plugin
在 /usr/local/bin
下建立一個 kubectl-inspect
的檔案,並輸入一下內容
#!/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了
參考
- ofollow,noindex" target="_blank">https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
- https://medium.com/@marko.luksa/kubectl-inspect-pod-mypod-78df42ff9c22