開篇
? 引言:
- 磨刀不誤砍柴工
- 工欲善其事必先利其器
像我這種,kubectl
用的不是非常溜,經常會碰到以下情況:
- 忘記命令,先敲
--help
,再敲命令,效率低 - 忘記加
-n
指定 namespace - 太長的命令經常記錯或敲錯,比如
kubectl exec -it...
- 無法快速將日誌、yaml 複製出來
- 對於 CRD 類資源,記不住 CRD type,查不到相關資訊
- 無法掌握叢集的健康及監控狀態
- …
如果你的工作機(前置機、跳板機、操作機、堡壘機…)只是 Linux Shell,而沒有桌面環境。那麼我強烈推薦你使用這個 K8S 實用工具:終端 UI K9S。
? K9S 簡介
K9S:K9s 是一個基於終端的 UI,用於與 Kubernetes 叢集進行互動。這個專案的目的是使導航、觀察和管理已部署的應用程式變得更容易。K9s 持續監視 Kubernetes 的變化,並提供後續命令與觀察到的資源進行互動。
?️ K9S 功能
- 資訊觸手可及!
- 跟蹤 Kubernetes 叢集中執行的資源的實時活動。
- 標準資源或 CRD?
- 處理 Kubernetes 標準資源和自定義資源定義(即:CRD)。
- 叢集指標
- 跟蹤與 pod、容器和節點(node)等資源相關的實時指標。
- 受到高階使用者歡迎!
- 提供標準的叢集管理命令,如日誌、伸縮、埠轉發、重啟等
- 定義您自己的命令快捷鍵,透過命令別名和熱鍵快速導航。
- k9s 支援外掛擴充套件,以建立您自己的叢集命令。
- 強大的過濾模式,允許使用者深入和檢視與工作負載相關的資源。
- 錯誤鑽取
- 直接鑽取群集資源的錯誤。
- 皮膚和可定製性
- 透過 K9s 皮膚定義您自己的外觀和感覺。
- 自定義/排列要在每個資源基礎上顯示的列。
- 窄或寬?
- 提供檢視最小或完整資源定義的切換
- 多資源檢視
- 透過 Pulses 和 XRay 檢視提供叢集資源的概述。
- 我們拿到你的 RBAC 了!
- 支援檢視 RBAC 規則,如叢集/角色及其關聯繫結。
- 反向查詢斷言使用者/組或 ServiceAccount 在叢集上可以做什麼。
- 內建基準測試(Benchmarking)
- 您可以直接從K9s對HTTP服務/pod進行基準測試,以檢視應用程式的執行情況,並相應地調整資源請求/限制。
- 資源圖遍歷
- K9s 提供了 Kubernetes 資源及其關聯資源的簡單遍歷。
?️ 安裝
直接從 release 頁面下載對應版本解壓到 /usr/local/bin
即可。
⌨️ 命令
安裝後直接執行 k9s
,就會進入 UI 介面,如下圖:
?️ 快捷鍵
操作 | 命令 | 備註 |
---|---|---|
顯示活躍的鍵盤助記符和幫助 | ? |
|
顯示叢集上所有可用的別名和資源 | ctrl-a or :alias |
|
退出 K9s | :q , ctrl-c |
|
使用單數/複數或短名稱檢視Kubernetes 資源 | : po⏎ |
接受單數,複數,短名或別名如 pod 或 pods |
檢視給定名稱空間中的Kubernetes 資源 | : alias namespace⏎ |
|
過濾出給定過濾器的資源檢視 | / filter⏎ |
支援 Regex2,如` fred |
反向正規表示式過濾器 | / ! filter⏎ |
保留所有不匹配的東西。日誌未實現。 |
按標籤過濾資源檢視 | / -l label-selector⏎ |
|
模糊查詢給定的資源 | / -f filter⏎ |
|
退出檢視/命令/過濾模式 | <esc> |
|
鍵對映來描述(describe),檢視(view),編輯(edit),檢視日誌(logs),... | d ,v , e , l ,… |
|
檢視並切換到另一個Kubernetes上下文 | : ctx⏎ |
|
檢視並切換到另一個Kubernetes上下文 | : ctx context-name⏎ |
|
檢視並切換到另一個 Kubernetes 名稱空間 | : ns⏎ |
|
檢視所有已儲存的資源 | : screendump or sd⏎ |
|
要刪除資源(按TAB 鍵並輸入Enter ) |
ctrl-d |
|
殺死一個資源(沒有確認對話方塊!) | ctrl-k |
|
切換寬列 | ctrl-w |
等同於 kubectl ... -o wide |
切換錯誤狀態 | ctrl-z |
檢視有錯誤的資源 |
執行 pulses(脈衝)檢視 | : pulses or pu⏎ |
|
執行 XRay(X 光)檢視 | : xray RESOURCE [NAMESPACE]⏎ |
資源可以是以下之一:po, svc, dp, rs, sts, ds, NAMESPACE 引數可選 |
執行 Popeye(評估跑分) 檢視 | : popeye or pop⏎ |
參閱 https://popeyecli.io |
深度使用
快捷鍵
花個 10 - 30 分鐘熟悉快捷鍵,然後 —— 超級爽,各種快速進入、查詢、切換、看 yaml、看日誌、滾動日誌、進 shell、編輯、複製 …
強烈推薦花時間熟悉,你會感覺效率飛昇。???
過濾
它的過濾功能非常強大,使得你可以非常快速的定位資源,比如我想要看 traefik 的所有 CRD,操作如下:
ctrl-a
/traefik
更多過濾功能,可以自己試一試,進一步研究。
Pulses - 監控 Dashboard
:pulse
就進入這個模式,這個就是一個監控 Dashboard,如下圖:
可以非常直觀看到叢集現在的健康情況 —— 明顯現在我的 Events 有異常,直接按 5⏎
, 再按 ctrl-z
檢視異常事件:
XRay
XRay 會提供以某個 Kubernetes 資源為維度的關聯關係,像 X 光一樣,透射到資源的內部。如下圖:
以 traefik deployment 為例,位於 kube-system ns,啟動了一個 traefik-97b44b794-7qvzk
pod,pod 只有一個 traefik
container,並透過 ServiceAccount traefik
掛載了 secret traefik-token-r7vd2
。
Popeye
Popeye(大力水手)就是為叢集、以及叢集內的每隔資源打分,分數從 0 - 100,最後根據得分評出你的叢集的情況:得分是 A 還是 C,並給出具體原因。
如下:
DaemonSet 得 0 分原因是都沒指定 requests 和 limits:
Service 得 20 分原因就多了,甚至還貼心考慮到了開銷貴不貴的問題:
? 直觀的 RBAC
RBAC 的 yaml 看起來很不方便的,如果對許可權比較要求比較多,那 K9S 絕對好用直觀,如下,traefik role 有哪些許可權一目瞭然:who、what、how。
✍ 總結
K9S 是一個基於終端的 K8S UI,在沒有桌面、只有 終端的情況下使用它,可以大幅提升你的效率以及你對 K8S 的認知。
它有很多強大的功能,其中:快捷鍵、過濾、Pulses、XRay、Popeye、RBAC 這些功能一定要試一試,體驗飛昇!
一起使用吧~ ???
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.