K8S 實用工具之二 - 終端 UI K9S

東風微鳴發表於2023-03-04

開篇

? 引言

  • 磨刀不誤砍柴工
  • 工欲善其事必先利其器

像我這種,kubectl 用的不是非常溜,經常會碰到以下情況:

  • 忘記命令,先敲 --help,再敲命令,效率低
  • 忘記加 -n 指定 namespace
  • 太長的命令經常記錯或敲錯,比如 kubectl exec -it...
  • 無法快速將日誌、yaml 複製出來
  • 對於 CRD 類資源,記不住 CRD type,查不到相關資訊
  • 無法掌握叢集的健康及監控狀態

如果你的工作機(前置機、跳板機、操作機、堡壘機…)只是 Linux Shell,而沒有桌面環境。那麼我強烈推薦你使用這個 K8S 實用工具:終端 UI K9S

? K9S 簡介

K9S:K9s 是一個基於終端的 UI,用於與 Kubernetes 叢集進行互動。這個專案的目的是使導航、觀察和管理已部署的應用程式變得更容易。K9s 持續監視 Kubernetes 的變化,並提供後續命令與觀察到的資源進行互動。

k9s

?️ K9S 功能

  • 資訊觸手可及!
    • 跟蹤 Kubernetes 叢集中執行的資源的實時活動。
  • 標準資源或 CRD?
    • 處理 Kubernetes 標準資源和自定義資源定義(即:CRD)。
  • 叢集指標
    • 跟蹤與 pod、容器和節點(node)等資源相關的實時指標。
  • 受到高階使用者歡迎!
    • 提供標準的叢集管理命令,如日誌、伸縮、埠轉發、重啟等
    • 定義您自己的命令快捷鍵,透過命令別名和熱鍵快速導航。
    • k9s 支援外掛擴充套件,以建立您自己的叢集命令。
    • 強大的過濾模式,允許使用者深入和檢視與工作負載相關的資源。
  • 錯誤鑽取
    • 直接鑽取群集資源的錯誤。
  • 皮膚和可定製性
    • 透過 K9s 皮膚定義您自己的外觀和感覺。
    • 自定義/排列要在每個資源基礎上顯示的列。
  • 窄或寬?
    • 提供檢視最小或完整資源定義的切換
  • 多資源檢視
    • 透過 PulsesXRay 檢視提供叢集資源的概述。
  • 我們拿到你的 RBAC 了!
    • 支援檢視 RBAC 規則,如叢集/角色及其關聯繫結。
    • 反向查詢斷言使用者/組或 ServiceAccount 在叢集上可以做什麼。
  • 內建基準測試(Benchmarking)
    • 您可以直接從K9s對HTTP服務/pod進行基準測試,以檢視應用程式的執行情況,並相應地調整資源請求/限制。
  • 資源圖遍歷
    • K9s 提供了 Kubernetes 資源及其關聯資源的簡單遍歷。

?️ 安裝

直接從 release 頁面下載對應版本解壓到 /usr/local/bin 即可。

⌨️ 命令

安裝後直接執行 k9s,就會進入 UI 介面,如下圖:

k9s 首頁

?️ 快捷鍵

操作 命令 備註
顯示活躍的鍵盤助記符和幫助 ?
顯示叢集上所有可用的別名和資源 ctrl-a or :alias
退出 K9s :q, ctrl-c
使用單數/複數或短名稱檢視Kubernetes 資源 :po⏎ 接受單數,複數,短名或別名如 podpods
檢視給定名稱空間中的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

traefik crd

更多過濾功能,可以自己試一試,進一步研究。

Pulses - 監控 Dashboard

:pulse 就進入這個模式,這個就是一個監控 Dashboard,如下圖:

Pulses

可以非常直觀看到叢集現在的健康情況 —— 明顯現在我的 Events 有異常,直接按 5⏎, 再按 ctrl-z檢視異常事件:

Events

XRay

XRay 會提供以某個 Kubernetes 資源為維度的關聯關係,像 X 光一樣,透射到資源的內部。如下圖:

XRay

以 traefik deployment 為例,位於 kube-system ns,啟動了一個 traefik-97b44b794-7qvzk pod,pod 只有一個 traefik container,並透過 ServiceAccount traefik 掛載了 secret traefik-token-r7vd2

Popeye

Popeye(大力水手)就是為叢集、以及叢集內的每隔資源打分,分數從 0 - 100,最後根據得分評出你的叢集的情況:得分是 A 還是 C,並給出具體原因。

如下:

popeye

DaemonSet 得 0 分原因是都沒指定 requests 和 limits:

DaemonSet 0 分原因

Service 得 20 分原因就多了,甚至還貼心考慮到了開銷貴不貴的問題:

Service 20分 原因

? 直觀的 RBAC

RBAC 的 yaml 看起來很不方便的,如果對許可權比較要求比較多,那 K9S 絕對好用直觀,如下,traefik role 有哪些許可權一目瞭然:who、what、how。

RBAC 檢視

✍ 總結

K9S 是一個基於終端的 K8S UI,在沒有桌面、只有 終端的情況下使用它,可以大幅提升你的效率以及你對 K8S 的認知。

它有很多強大的功能,其中:快捷鍵、過濾、Pulses、XRay、Popeye、RBAC 這些功能一定要試一試,體驗飛昇!

一起使用吧~ ???

三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.

相關文章