筆記。 翻譯。:原始資料的作者是來自 Zalando 的 Henning Jacobs。 他創建了一個用於與 Kubernetes 合作的新 Web 介面,該介面被定位為「kubectl for the web」。 為什麼出現一個新的開源專案以及現有解決方案不滿足哪些標準 - 閱讀他的文章。
在這篇文章中,我回顧了各種開源 Kubernetes Web 介面,列出了我對通用 UI 的要求,並解釋了我開發的原因
用例
在 Zalando,我們為大量 Kubernetes 使用者 (900+) 和叢集 (100+) 提供服務。 有一些常見的用例可以從專用的 Web 工具中受益:
- 與同事溝通以獲得支援;
- 響應事件並調查其原因。
支持
根據我的經驗,支援溝通通常如下:
— 救命,我們的服務 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 介面的開源世界並不是很大*,因此我嘗試使用以下方式收集更多信息
*我對 Kubernetes 的 Web 介面數量有限的解釋:雲端服務和 Kubernetes 供應商通常提供自己的前端,因此「好的」免費 Kubernetes UI 的市場相對較小。
透過一則推文我了解到
K8Dash
“K8Dash 是管理 Kubernetes 叢集的最簡單方法。”
- 僅在一個集群的邊界內工作。
- 可以進行排序和過濾,但沒有永久連結。
- 不支援自訂資源定義 (CRD)。
庫伯納特
「Kubernator 是 Kubernetes 的替代 UI。 與高級 Kubernetes 儀表板不同,它提供對叢集中所有物件的低階控制和出色的可見性,並能夠建立新物件、編輯它們並解決衝突。 作為一個完全客戶端應用程式(如 kubectl),除了 Kubernetes API 伺服器本身之外,它不需要任何後端,並且還尊重叢集存取規則。”
這是一個相當準確的描述
- 僅服務於一個集群。
- 沒有清單檢視模式(即,您無法顯示所有處於「待處理」狀態的 Pod)。
Kubernetes 儀表板
「Kubernetes Dashboard 是 Kubernetes 叢集的通用 Web 介面。 它允許用戶管理叢集中運行的應用程式並對其進行故障排除,以及管理叢集本身。”
不幸的是,
- 沒有永久鏈接,例如當我過濾資源或更改排序順序時;
- 沒有簡單的方法可以按狀態過濾 - 例如,查看狀態為「待處理」的所有 Pod;
- 僅支援一個集群;
- 不支援 CRD(該功能正在開發中);
- 沒有自訂列(例如按類型標記的列
kubectl -L
).
Kubernetes 操作視圖 (kube-ops-view)
“K8s 集群空間的系統儀表板觀察器。”
У
* 筆記。 翻譯。:從這個意義上說,您可能也對我們的插件感興趣
Kubernetes 資源報告 (kube-resource-report)
“收集 pod 和 Kubernetes 叢集資源請求,將其與資源消耗進行比較,並產生靜態 HTML。”
筆記。 翻譯。:服務和工具也可用於查看有關雲端提供者之間的資源分配及其成本的信息
八分圓
“為開發人員提供的可擴展 Web 平台,旨在更好地了解 Kubernetes 叢集的複雜性。”
- 沒有聚類搜尋。
- 僅適用於本機電腦(不部署到叢集)。
- 無法對物件進行排序/過濾(僅支援標籤選擇器)。
- 您無法指定自訂列。
- 您不能按名稱空間列出物件。
我還遇到了 Octant 與 Zalando 集群的穩定性問題:在某些 CRD 上
Kubernetes Web 檢視簡介
「網路版 kubectl」。
在分析了 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 視圖中按叢集搜尋
事件回應
- 全球搜尋 (全域搜尋) 允許您搜尋所有叢集中的物件。
- 清單視圖 可以顯示所有叢集中某個狀態/列的所有物件(例如,我們需要找到所有狀態為「Pending」的 Pod)。
- 可以下載物件列表 採用製表符分隔值 (TSV) 格式以供日後分析。
-
可自訂的外部鏈接 讓您切換到相關儀表板和其他工具。
Kubernetes Web 檢視:所有叢集中狀態為「Pending」的 Pod 列表
如果您想嘗試 Kubernetes Web View,我建議您查看
當然,介面還可以更好,但目前 Kubernetes Web View 是一個「進階使用者」的工具,在必要時不會迴避手動操作 URL 路徑。 如果您有任何意見/補充/建議,請聯繫
本文簡要介紹了 Kubernetes Web View 創建的背景。 更多將會隨之而來! (筆記。 翻譯。: 他們應該預計在
PS來自譯者
另請閱讀我們的博客:
- «
kubebox 和 Kubernetes 的其他 shell “; - «
為 Kubernetes 上運行的應用程式開發人員提供的工具 “; - «
kubelive 控制台實用程式已出現,可與 Kubernetes 進行互動工作 “; - «
使用 Kubernetes 時有用的實用程序 “。
來源: www.habr.com