kubectl 的插件管理工具krew

k8s的命令行工具kubectl 對於玩k8s 的人來說是必備工具。kubectl插件機制在Kubernetes 1.14宣布穩定,進入GA狀態。kubectl的插件機制就是希望允許開發者以獨立的二進位形式發布自定義的kubectl子命令。kubectl插件可以使用任意語言開發,如可以是一個bash、python的腳本,也可以是其他語言開發編譯的二進位可執行文件,只要最終將腳本或二進位可執行文件以kubectl-的前綴放到PATH中即可。使用kubectl plugin list可以在PATH中查看有哪些插件。

krew是kubectl插件的管理器,使用krew可以輕鬆的查找、安裝和管理kubectl插件。krew自己也作為一個kubectl插件存在。官網的安裝文檔非常的清晰,也很友善。大家可以移步://krew.sigs.k8s.io/docs/user-guide/setup/install/  。我是直接下載的文件安裝的,安裝前確認目標機器上已經安裝了git,krew在更新本地插件索引時會用到git。

查看所有插件

image

插件安裝

kubectl krew install xxxx

常用插件

1. ns 插件

ns是一個可以在kubernetes集群裡面切換命名空間的插件。你是否厭煩了每次敲kubectl命令時都要加上-n <namespaces>的參數,又不想在config裡面維護大量context。那麼ns插件就是來解救你的,它會在切換命名空間時修改當前config裡面的context到當前命名空間,這樣你就不用再加-n參數了。

安裝:

kubectl krew install ns
2. images 插件

images插件允許你查看當前命名空間(甚至整個集群)Workload中使用的鏡像資訊。當前支援幾個功能如下:

列出所有命名空間workload的鏡像資訊

指定欄位展示鏡像的關聯k8s資訊

指定單獨的命名空間展示鏡像

安裝:kubectl krew install images

3. view-secret 插件

大部分情況下,我們secret裡面的資訊會事先經過base64編碼後存儲。當我們需要從secret裡面讀取內容在做decode

kubectl get secret <secret> -o=jsonpath='{.data.password}’ |base64 -d
但是我們的目標能少打命令絕不多敲一個字母。那麼這個時候view-secret就可以幫助到我們。

安裝:

kubectl krew install view-secret
4. view-allocations 插件

對於想快速知道當前你的kubernetes集群資源分布情況,view-allocations這個插件它一定能夠幫助。view-allocations當前能夠根據resource,node和pod三個維度展示集群當前的資源分配狀況。值得一提的是如果你的kubernetes集群有GPU節點,採用view-allocations也可以快速查到你的GPU顯示卡分配狀態