Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

筆記。 翻譯。:原始資料的作者是來自 Zalando 的 Henning Jacobs。 他創建了一個用於與 Kubernetes 合作的新 Web 介面,該介面被定位為「kubectl for the web」。 為什麼出現一個新的開源專案以及現有解決方案不滿足哪些標準 - 閱讀他的文章。

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

在這篇文章中,我回顧了各種開源 Kubernetes Web 介面,列出了我對通用 UI 的要求,並解釋了我開發的原因 Kubernetes 網絡視圖 — 旨在更輕鬆地同時支援多個叢集並對其進行故障排除的介面。

用例

在 Zalando,我們為大量 Kubernetes 使用者 (900+) 和叢集 (100+) 提供服務。 有一些常見的用例可以從專用的 Web 工具中受益:

  1. 與同事溝通以獲得支援;
  2. 響應事件並調查其原因。

支持

根據我的經驗,支援溝通通常如下:

— 救命,我們的服務 XYZ 不可用!
— 表演時你會看到什麼 kubectl describe ingress ...?

或 CRD 類似的東西:

— 我的識別服務有一些問題...
— 該指令會產生什麼? kubectl describe platformcredentialsset ...?

這種通訊通常歸結為輸入命令的各種變體 kubectl 以便找出問題所在。 結果,對話雙方被迫不斷在終端機和網路聊天之間切換,而且他們觀察到的情況也不同。

因此,我希望 Kubernetes Web 前端允許以下操作:

  • 使用者可以 交換連結 並觀察同樣的事物;
  • 有助於 避免人為錯誤 支援:例如,在命令列上登入錯誤的群集、CLI 命令中的拼字錯誤等;
  • 會允許 產生自己的觀點 發送給同事,即新增標籤欄,一頁顯示多種類型的資源;
  • 理想情況下,這個網路工具應該允許您設置 指向 YAML 特定部分的“深層”鏈接 (例如,指出導致失敗的錯誤參數)。

事件響應和分析

回應基礎設施事件需要態勢感知、評估影響以及尋找群集模式的能力。 一些現實生活中的例子:

  • 關鍵生產服務出現問題,您需要 按名稱尋找所有叢集中的所有 Kubernetes 資源排除故障;
  • 縮放時節點開始下降,您需要 尋找所有叢集中狀態為「Pending」的所有 Pod評估問題的範圍;
  • 個別使用者報告了跨所有叢集部署的 DaemonSet 的問題,需要找出解決方案 問題是徹底的嗎?.

在這種情況下我的標準解決方案是這樣的 for i in $clusters; do kubectl ...; done。 顯然,可以開發一種提供類似功能的工具。

現有的 Kubernetes Web 介面

Kubernetes Web 介面的開源世界並不是很大*,因此我嘗試使用以下方式收集更多信息 Twitter:

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

*我對 Kubernetes 的 Web 介面數量有限的解釋:雲端服務和 Kubernetes 供應商通常提供自己的前端,因此「好的」免費 Kubernetes UI 的市場相對較小。

透過一則推文我了解到 K8Dash, 庫伯納特 и 八分圓。 讓我們看看它們和其他現有的開源解決方案,讓我們試著了解它們是什麼。

K8Dash

“K8Dash 是管理 Kubernetes 叢集的最簡單方法。”

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

K8Dash 看起來不錯,感覺很快,但對於上面列出的用例有許多缺點:

  • 僅在一個集群的邊界內工作。
  • 可以進行排序和過濾,但沒有永久連結。
  • 不支援自訂資源定義 (CRD)。

庫伯納特

「Kubernator 是 Kubernetes 的替代 UI。 與高級 Kubernetes 儀表板不同,它提供對叢集中所有物件的低階控制和出色的可見性,並能夠建立新物件、編輯它們並解決衝突。 作為一個完全客戶端應用程式(如 kubectl),除了 Kubernetes API 伺服器本身之外,它不需要任何後端,並且還尊重叢集存取規則。”

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

這是一個相當準確的描述 庫伯納特。 不幸的是,它缺少一些功能:

  • 僅服務於一個集群。
  • 沒有清單檢視模式(即,您無法顯示所有處於「待處理」狀態的 Pod)。

Kubernetes 儀表板

「Kubernetes Dashboard 是 Kubernetes 叢集的通用 Web 介面。 它允許用戶管理叢集中運行的應用程式並對其進行故障排除,以及管理叢集本身。”

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

不幸的是, Kubernetes 儀表板 對我的支持和事件回應活動沒有真正的幫助,因為它:

  • 沒有永久鏈接,例如當我過濾資源或更改排序順序時;
  • 沒有簡單的方法可以按狀態過濾 - 例如,查看狀態為「待處理」的所有 Pod;
  • 僅支援一個集群;
  • 不支援 CRD(該功能正在開發中);
  • 沒有自訂列(例如按類型標記的列 kubectl -L).

Kubernetes 操作視圖 (kube-ops-view)

“K8s 集群空間的系統儀表板觀察器。”

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

У Kubernetes 營運視圖 完全不同的方法:該工具僅使用 WebGL 顯示叢集節點和 Pod,沒有任何文字物件詳細資訊。 它非常適合快速概覽叢集的運作狀況(Pod 是否下降?)*,但它不適合上述支援和事件回應用例。

* 筆記。 翻譯。:從這個意義上說,您可能也對我們的插件感興趣 grafana-狀態圖,我們在中更詳細地討論過 這篇文章.

Kubernetes 資源報告 (kube-resource-report)

“收集 pod 和 Kubernetes 叢集資源請求,將其與資源消耗進行比較,並產生靜態 HTML。”

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

Kubernetes 資源報告 產生有關叢集中團隊/應用程式的資源使用情況和成本分配的靜態 HTML 報告。 該報告對於支援和事件回應有些用處,因為它允許您快速找到部署應用程式的叢集。

筆記。 翻譯。:服務和工具也可用於查看有關雲端提供者之間的資源分配及其成本的信息 庫貝成本,我們回顧一下 最近發表.

八分圓

“為開發人員提供的可擴展 Web 平台,旨在更好地了解 Kubernetes 叢集的複雜性。”

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

八分圓VMware創建的,是我最近才了解的新產品。 在它的幫助下,可以很方便地在本機上探索叢集(甚至可以視覺化),但它只能在有限的程度上解決支援和事件回應問題。 八分圓的缺點:

  • 沒有聚類搜尋。
  • 僅適用於本機電腦(不部署到叢集)。
  • 無法對物件進行排序/過濾(僅支援標籤選擇器)。
  • 您無法指定自訂列。
  • 您不能按名稱空間列出物件。

我還遇到了 Octant 與 Zalando 集群的穩定性問題:在某些 CRD 上 他正在墜落.

Kubernetes Web 檢視簡介

「網路版 kubectl」。

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)

在分析了 Kubernetes 的可用介面選項後,我決定建立一個新的介面選項: Kubernetes 網絡視圖。 畢竟,事實上,我只需要所有的力量 kubectl 在網路上,即:

  • 使用者喜歡使用 kubectl 的所有(唯讀)操作的可用性;
  • 所有 URL 必須是永久性的,並以其原始形式代表頁面,以便同事可以共享它們並在其他工具中使用它們;
  • 支援所有 Kubernetes 對象,這將允許您解決任何類型的問題;
  • 資源清單應該可以下載以供進一步工作(在電子表格、CLI 工具中,例如 grep)和儲存(例如,用於事後分析);
  • 支援按標籤選擇資源(類似於 kubectl get .. -l);
  • 創建各種類型資源的組合清單的能力(類似於 kubectl get all) 獲得同事之間的共同操作情況(例如,在事件回應期間);
  • 能夠將自訂智慧深層連結新增至其他工具,例如儀表板、記錄器、應用程式登錄檔等。 促進故障排除/解決錯誤並回應事件;
  • 前端應盡可能簡單(純 HTML),以避免隨機問題,例如 JavaScript 凍結;
  • 支援多個集群,以簡化遠端諮詢期間的互動(例如,只記住一個 URL);
  • 如果可能,應簡化情況分析(例如,提供所有群集/命名空間的下載資源的連結);
  • 例如,用於產生靈活連結和突出顯示文字訊息的附加功能,以便您可以將同事指向資源描述中的特定部分(YAML 中的一行);
  • 能夠根據特定客戶的要求進行定制,例如,允許您為 CRD 創建特殊的顯示模板、您自己的表格視圖以及更改 CSS 樣式;
  • 用於在命令列上進一步探索的工具(例如,顯示完整命令 kubectl,準備複製);

超越 Kubernetes Web View 解決的任務 (非目標) 剩下:

  • Kubernetes 物件的抽象;
  • 應用程式管理(例如,部署管理、Helm 圖表等);
  • 寫入操作(必須透過安全的 CI/CD 和/或 GitOps 工具完成);
  • 漂亮的介面(JavaScript、主題等);
  • 可視化(參見 kube-ops-視圖);
  • 成本分析(參見 kube 資源報告).

Kubernetes Web View 如何協助提供支援和事件回應?

支持

  • 所有連結都是永久的,這使得與同事交換資訊變得更加容易。
  • 您可以建立 你的想法例如,顯示兩個特定叢集中所有具有特定標籤的Deployment和Pod(連結中可以指定多個叢集名稱和資源類型,以逗號分隔)。
  • 您可以參考 YAML 檔案中的特定行 對象,顯示對象規範中的潛在問題。

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)
在 Kubernetes Web 視圖中按叢集搜尋

事件回應

  • 全球搜尋 (全域搜尋) 允許您搜尋所有叢集中的物件。
  • 清單視圖 可以顯示所有叢集中某個狀態/列的所有物件(例如,我們需要找到所有狀態為「Pending」的 Pod)。
  • 可以下載物件列表 採用製表符分隔值 (TSV) 格式以供日後分析。
  • 可自訂的外部鏈接 讓您切換到相關儀表板和其他工具。

Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述)
Kubernetes Web 檢視:所有叢集中狀態為「Pending」的 Pod 列表

如果您想嘗試 Kubernetes Web View,我建議您查看 文檔 或者看看 現場演示.

當然,介面還可以更好,但目前 Kubernetes Web View 是一個「進階使用者」的工具,在必要時不會迴避手動操作 URL 路徑。 如果您有任何意見/補充/建議,請聯繫 在 Twitter 上與我聯繫!

本文簡要介紹了 Kubernetes Web View 創建的背景。 更多將會隨之而來! (筆記。 翻譯。: 他們應該預計在 作者的博客.)

PS來自譯者

另請閱讀我們的博客:

來源: www.habr.com

添加評論