天天看點

從零到K8S大師:KUBERNETES的5個必備工具

從零到K8S大師:KUBERNETES的5個必備工具

掌握這 3 個初學者工具和 2 個進階使用者工具,領先競争對手。

譯自 From Zero to K8s Hero: 5 Must-Have Tools for Kubernetes,作者 Giuseppe Santoro。

本文将介紹 5 個必備工具,幫助你開啟 Kubernetes 之旅。

清單中的前三個工具對于初學者來說絕對不可或缺。後兩個工具可以讓你從初學者脫穎而出,看起來像進階使用者。

我将分享我對哪些工具可以讓你在同僚中脫穎而出,以及哪些工具不值得學習的觀點。

是什麼讓我有資格給出這樣的建議?

在過去的幾年裡,我花費了無數個小時嘗試所有我能接觸到的 Kubernetes 工具,無論是工作時間還是業餘時間用于我的副項目。

我不得不承認,我是一個工具狂熱者。我喜歡玩弄所有閃閃發光的工具,而 Kubernetes 生态系統中有很多這樣的工具。

鑒于每天都有像蘑菇一樣冒出來的新工具,我一直認為我需要一些建議,告訴我哪些工具值得學習,哪些工具不值得我花時間。

是以,我嘗試了盡可能多的工具,經過多年的經驗,我現在已經準備好指導其他人。

在本文中,我想要提供我在幾年前剛開始使用 Kubernetes 時所缺少的指導。

是以請不要再浪費時間,讓我們深入探讨這篇文章。

1. 浏覽你的 Kubernetes 叢集:K9s

我最喜歡的 Kubernetes 工具是 K9s,這是一個基于終端的 UI,可以讓你與 Kubernetes 叢集互動。

如果你像我一樣,從小就使用“面包和... Linux”,你會欣賞使用 CLI 工具的美麗,這些工具既是開源的,又高度可定制,可以自定義皮膚、插件、指令别名和自定義鍵綁定。

使用 K9s 作為浏覽叢集的主要工具有哪些好處:

  • 支援所有标準 Kubernetes 對象: 檢視和互動 pod、容器、服務、RBAC、卷、事件等。
  • CRD 支援: 支援與自定義資源定義 (CRD) 互動。
  • 随處運作: 在任何作業系統上運作,可以使用大多數包管理器安裝。
  • 皮膚: 更改 UI 的外觀和感覺,以及根據你正在使用的叢集和上下文更改 UI 的行為。在進階功能中,你還可以建立一個隻讀上下文,防止在生産叢集中進行任何非故意的修改。
  • 插件: 我個人在一段時間前使用過這個功能,當時我想解析 Kubernetes pod 中的一些 JSON 日志并以表格形式顯示它們。我用 Python 建立了一個 Kubectl 插件,我稱之為 rich-json-logs,然後将其插入 K9s。幾乎是直接的。
  • 指令别名: 指令别名不如插件強大,但可以節省一些按鍵。
  • 自定義鍵綁定: 隻需一兩個按鍵,你就可以檢視特定類型的 Kubernetes 資源、調用插件、指令别名或許多其他功能。

有哪些替代方案:

  • Lens: 一個付費的替代方案,提供慷慨的免費個人計劃。這個桌面應用程式除了 K9s 之外沒有提供更多功能,除非你擁有非常昂貴的 Pro 或企業許可證。
  • OpenLens: Lens 的開源版本。由于 Lens 背後的公司 Mirantis 已經放棄了開源,這個項目将不再獲得任何更新。

2. 自動化一切:Kubectl

如果你曾經使用過 Kubernetes,你一定已經遇到過 Kubectl,Kubernetes 指令行工具。

為什麼我隻把它放在我的清單中的第二位?

這個工具可以完成你使用 Kubernetes 所需的一切,但它沒有像 K9s 那樣提供良好的使用者體驗。

在使用 Kubernetes 時,尤其是當你是一個 DevOps 并且處于事故處理過程中時,你必須快速行動!

鑒于我記不住 Kubectl 指令的文法,并且每個指令都需要大量輸入,K9s 對于我的需求來說是一個更好的工具。

為什麼我仍然建議使用 Kubectl?

每當需要編寫一些與 Kubernetes 互動的自動化腳本時,Kubectl 都是我的首選工具。

最好的部分是,你不需要在這兩者之間做出選擇。

你可以使用 K9s 來提高速度和使用者體驗,使用 Kubectl 來提高可擴充性,并将它們結合起來使用。

看看下面的指令。不使用任何其他工具,我将擷取所有帶有标簽 app=cassandra 的 pod 的版本标簽。

kubectl get pods --selector=app=cassandra -o jsonpath='{.items[*].metadata.labels.version}'
           

我從 Kubernetes 快速參考 中獲得了最後一個指令,如果你想 準備你的認證 Kubernetes 管理者考試 ,這是一個很棒的資源,因為你可以在考試中使用它。

有哪些替代方案:

K9s:我們在上一節中已經讨論過這個問題。

Kubernetes 用戶端庫:如果你需要在代碼中自動與你的 Kubernetes 叢集互動,并且想要避免在 bash 中使用 Kubectl,你可以在你選擇的語言中使用 Kubernetes SDK。

3. 包管理器:Krew

我的清單中的第三個工具是 Krew,它是 Kubectl 的官方包管理器。

我最近才了解到這個工具,但它是我武器庫中的一項絕佳補充。

像任何包管理器一樣,除了它能很好地完成工作并得到所有作業系統的支援之外,沒有太多可說的。

該工具最好的部分是其文檔,其中包含 官方插件 的清單,Krew 支援這些插件。

如果你浏覽該清單,你可能會發現你不知道存在的插件。

4. 從多個 Kubernetes 資源聚合日志:Stern

Stern 是此工具清單中第一個面向更進階使用者的工具。

如果你檢視過 Kubernetes 中的 pod 日志,你可能遇到過這樣的用例:你想将來自 pod 中不同 pod 或容器的日志組合到同一個輸出中。

[Stern] 允許你 tail Kubernetes 上的多個 pod 以及 pod 中的多個容器。每個結果都用顔色編碼,以便更快地進行調試。

5. 檢視内部:node-shell

node-shell 允許你啟動一個 shell 來通路 Kubernetes 節點的底層作業系統。

這個工具在為 Kubernetes 開發可觀察性工具時非常寶貴。

正如我在我的深入文章 Kubernetes:node-shell 中解釋的那樣,不止一次,我不得不檢視 Kubernetes 節點,以便跟蹤直接寫入節點主機以饋送到 Elasticsearch 的 pod/容器日志。

沒有 node-shell,我無法做到這一點。

node-shell,就像此清單中的許多其他工具一樣,可以通過 Krew 安裝并內建到 K9s 中。

結論

本文中的工具清單絕對不完整。

我本可以提到:

  • Helm
  • Customise
  • K3d
  • Kind

等等。

它們中的大多數都比較進階,值得單獨寫一篇文章。

我可能會在将來介紹其中的一些。

繼續閱讀