Linux中國

k9s:你沒看錯,這是一個加速 k8s 集群管理的工具

通常情況下,我寫的關於 Kubernetes 管理的文章中用的都是做集群管理的 kubectl 命令。然而最近,有人給我介紹了 k9s 項目,可以讓我快速查看並解決 Kubernetes 中的日常問題。這極大地改善了我的工作流程,我會在這篇教程中告訴你如何上手它。

它可以安裝在 Mac、Windows 和 Linux 中,每種操作系統的說明可以在這裡找到。請先完成安裝,以便能夠跟上本教程。

我會使用 Linux 和 Minikube,這是一種在個人電腦上運行 Kubernetes 的輕量級方式。按照此教程或使用該文檔來安裝它。

設置 k9s 配置文件

安裝好 k9s 應用後,從幫助命令開始總是很好的起點。

$ k9s help

正如你在幫助信息所看到的,我們可以用 k9s 來配置很多功能。我們唯一需要進行的步驟就是編寫配置文件。而 info 命令會告訴我們該應用程序要在哪裡找它的配置文件。

$ k9s info
 ____  __.________
|    |/ _/   __   ______
|      < ____    /  ___/
|    |     /    /___ 
|____|__  /____//____  >
        /            /

Configuration:   /Users/jess/.k9s/config.yml
Logs:            /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-jess.log
Screen Dumps:    /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-screens-jess

如果要添加配置文件,該配置目錄不存在的話就創建它,然後添加一個配置文件。

$ mkdir -p ~/.k9s/
$ touch ~/.k9s/config.yml

在這篇介紹中,我們將使用 k9s 版本庫中推薦的默認 config.yml。維護者請注意,這種格式可能會有變化,可以在這裡查看最新版本。

k9s:
  refreshRate: 2
  headless: false
  readOnly: false
  noIcons: false
  logger:
    tail: 200
    buffer: 500
    sinceSeconds: 300
    fullScreenLogs: false
    textWrap: false
    showTime: false
  currentContext: minikube
  currentCluster: minikube
  clusters:
    minikube:
      namespace:
        active: ""
        favorites:
        - all
        - kube-system
        - default
      view:
        active: dp
  thresholds:
    cpu:
      critical: 90
      warn: 70
    memory:
      critical: 90
      warn: 70

我們設置了 k9s 尋找本地的 minikube 配置,所以我要確認 minikube 已經上線可以使用了。

$ minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

運行 k9s 來探索一個 Kubernetes 集群

有了配置文件,並指向我們的本地集群,我們現在可以運行 k9s 命令了。

$ k9s

啟動後,會彈出 k9s 的基於文本的用戶界面。在沒有指定命名空間標誌的情況下,它會向你顯示默認命名空間中的 Pod。

![K9s screenshot](/data/attachment/album/202005/25/104848zllsmdm3ql647l4r.png "K9s screenshot")

如果你運行在一個有很多 Pod 的環境中,默認視圖可能會讓人不知所措。或者,我們可以將注意力集中在給定的命名空間上。退出該應用程序,運行 k9s -n <namespace>,其中 <namespace> 是已存在的命名空間。在下圖中,我運行了 k9s -n minecraft,它顯示了我損壞的 Pod:

![K9s screenshot](/data/attachment/album/202005/25/104849bl11m9jlhhm4lw4h.png "K9s screenshot")

所以,一旦你有了 k9s 後,有很多事情你可以更快地完成。

通過快捷鍵來導航 k9s,我們可以隨時使用方向鍵和回車鍵來選擇列出的項目。還有不少其他的通用快捷鍵可以導航到不同的視圖。

  • 0:顯示在所有命名空間中的所有 Pod ![K9s screenshot](/data/attachment/album/202005/25/104855hnzmdbpuzq75z5l2.png "K9s screenshot")
  • d:描述所選的 Pod ![K9s screenshot](/data/attachment/album/202005/25/104859k6cc2z2gb9wddcgd.png "K9s screenshot")
  • l:顯示所選的 Pod 的日誌 ![Using k9s to show Kubernetes pod logs](/data/attachment/album/202005/25/104909zpcjjepmjm4oe499.png "Using k9s to show Kubernetes pod logs")

你可能會注意到 k9s 設置為使用 Vim 命令鍵,包括使用 JK 鍵上下移動等。Emacs 用戶們,敗退吧 🙂

快速查看不同的 Kubernetes 資源

需要去找一個不在 Pod 里的東西嗎?是的,我也需要。當我們輸入冒號(:)鍵時,可以使用很多快捷方式。從那裡,你可以使用下面的命令來導航。

  • :svc:跳轉到服務視圖 ![K9s screenshot](/data/attachment/album/202005/25/104911lzjkeeisqkkgoj42.png "K9s screenshot")
  • :deploy:跳轉到部署視圖 ![K9s screenshot](/data/attachment/album/202005/25/104914bqd6vddnjt1zzqqz.png "K9s screenshot")
  • :rb:跳轉到角色綁定視圖,用於 基於角色的訪問控制(RBAC)管理 ![K9s screenshot](/data/attachment/album/202005/25/104920po5nov990nzvz599.png "K9s screenshot")
  • :namespace:跳轉到命名空間視圖 ![K9s screenshot](/data/attachment/album/202005/25/104922yvooon0ro1bn0or0.png "K9s screenshot")
  • :cj:跳轉到 cronjob 視圖,查看集群中計划了哪些作業。 ![K9s screenshot](/data/attachment/album/202005/25/104924cnrggikg3x7nrbii.png "K9s screenshot")

這個應用最常用的工具是鍵盤;要在任何頁面往上或下翻頁,請使用方向鍵。如果你需要退出,記得使用 Vim 綁定鍵,鍵入 :q,然後按回車鍵離開。

用 k9s 排除 Kubernetes 的故障示例

當出現故障的時候,k9s 怎麼幫忙?舉個例子,我讓幾個 Pod 由於配置錯誤而死亡。下面你可以看到我那個可憐的 「hello」 部署死了。當我們將其高亮顯示出來,可以按 d 運行 describe 命令,看看是什麼原因導致了故障。

![K9s screenshot](/data/attachment/album/202005/25/104927sixjpcxs5osjx11t.png "K9s screenshot")

![K9s screenshot](/data/attachment/album/202005/25/104936lpk81mzhmu8qw1kc.png "K9s screenshot")

草草掠過那些事件並不能告訴我們故障原因。接下來,我按了 esc 鍵,然後通過高亮顯示 Pod 並輸入shift-l 來檢查日誌。

![K9s screenshot](/data/attachment/album/202005/25/104938uvie7qyvs9qsbvyv.png "K9s screenshot")

不幸的是,日誌也沒有提供任何有用的信息(可能是因為部署從未正確配置過),而且 Pod 也沒有出現。

然後我使用 esc 退了出來,我看看刪除 Pod 是否能解決這個問題。要做到這一點,我高亮顯示該 Pod,然後使用 ctrl-d。幸好 k9s 在刪除前會提示用戶。

![K9s screenshot](/data/attachment/album/202005/25/104941vi0jsc80ckd1los1.png "K9s screenshot")

雖然我確實刪除了這個 Pod,但部署資源仍然存在,所以新的 Pod 會重新出現。無論什麼原因(我們還不知道),它還會繼續重啟並死掉。

在這裡,我會重複查看日誌,描述資源,甚至使用 e 快捷方式來編輯運行中的 Pod 以排除故障行為。在這個特殊情況下,失敗的 Pod 是因為沒有配置在這個環境下運行。因此,讓我們刪除部署來停止崩潰接著重啟的循環。

我們可以通過鍵入 :deploy 並點擊回車進入部署。從那裡我們高亮顯示並按 ctrl-d 來刪除。

![K9s screenshot](/data/attachment/album/202005/25/104943aj9hnjzn0s111nr0.png "K9s screenshot")

![K9s screenshot](/data/attachment/album/202005/25/104946qg4jntnufntanb21.png "K9s screenshot")

這個有問題的部署被幹掉了! 只用了幾個按鍵就把這個失敗的部署給清理掉了。

k9s 是極其可定製的

這個應用有很多自定義選項、乃至於 UI 的配色方案。這裡有幾個可編輯的選項,你可能會感興趣。

  • 調整你放置 config.yml 文件的位置(這樣你就可以把它存儲在版本控制中)。
  • alias.yml 文件中添加自定義別名
  • hotkey.yml 文件中創建自定義熱鍵
  • 探索現有的插件或編寫自己的插件。

整個應用是在 YAML 文件中配置的,所以定製化對於任何 Kubernetes 管理員來說都會覺得很熟悉。

用 k9s 簡化你的生活

我傾向於以一種非常手動的方式來管理我團隊的系統,更多的是為了鍛煉腦力,而不是別的。當我第一次聽說 k9s 的時候,我想,「這只是懶惰的 Kubernetes 而已。」於是我否定了它,然後回到了到處進行人工干預的狀態。實際上,當我在處理積壓工作時就開始每天使用它,而讓我震驚的是它比單獨使用 kubectl 快得多。現在,我已經皈依了。

了解你的工具並掌握做事情的「硬道理」很重要。還有一點很重要的是要記住,就管理而言,重要的是要更聰明地工作,而不是更努力。使用 k9s,就是我踐行這個目標的方法。我想,我們可以把它叫做懶惰的 Kubernetes 管理,也沒關係。

via: https://opensource.com/article/20/5/kubernetes-administration

作者:Jessica Cherry 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國