開篇
? 引言:
- 磨刀不誤砍柴工
- 工欲善其事必先利其器
像我這種,kubectl
用的不是非常溜,經常會碰到以下情況:
- 忘記命令,先敲
--help
,再敲命令,效率低 - 忘記加
-n
指定 namespace - 太長的命令經常記錯或敲錯,比如
kubectl exec -it...
- 無法快速將日誌、yaml 複製出來
- 對於 CRD 類資源,記不住 CRD type,查不到相關資訊
- 無法掌握叢集的健康及監控狀態
- Windows 機器命令列不好用
- ……
如果你的工作機(前置機、跳板機、操作機、堡壘機…)是 Windows 桌面環境。那麼我強烈推薦你使用這個 K8S 實用工具:圖形化 UI Lens。
? Lens 簡介
Kubernetes IDE(整合開發環境),可用於:
- 開發
- 除錯
- DevOps
- 運維
- 監控
Lens 是你唯一需要的 IDE ,它可以用來控制你的 Kubernetes 叢集。它建立在開源和免費的基礎上。
一個為那些每天使用 Kubernetes 工作的人設計的 IDE,漂亮且強大。
? Lens 優勢
- ? 移除複雜性:不需要學習 kubectl 命令就可以探索和導航 Kubernetes 叢集。對於剛起步的開發者來說是非常棒的。
- ?️ 實時可觀察性:實時檢視實時統計、事件、日誌流。沒有轉圈圈的載入,重新整理或等待螢幕更新。
- ? 定位和除錯:在儀表板上檢視錯誤和警告,然後單擊檢視詳細資訊。再次單擊以檢視日誌或獲取命令列。
- ?️ 在你的個人電腦上執行:MacOS, Windows 和 Linux 上的獨立應用程式。1 分鐘安裝。不需要在叢集中安裝任何東西。
- ? 開源免費:Lens 基於開源平臺,擁有活躍的社群,並得到 Kubernetes 和雲原生生態系統先鋒的支援。
- ⎈ 可和任何 Kubernetes 一起工作:使用 EKS, AKS, GKE, Minikube, Rancher, k0s, k3s, OpenShift…?他們所有都可以正常執行。只需為您想要使用的叢集匯入 kubeconfigs。
個人使用體驗
無障礙使用
Lens 有一個統一的目錄(Catalog)。將所有叢集、服務、工作負載、工具、自動化和相關資源集中在一起,以便輕鬆訪問。
而且在 Catalog 上,可以很方便進行瀏覽和組織。使用搜尋、過濾、分類和標籤來訪問你需要工作的資源比以往任何時候都更容易。
效率高
Lens 的特色是左邊有一列,叫做:Hotbar。就是主導航,允許使用者在桌面應用程式中構建適合自己的「工作流」和「自動化」。使用者可以透過分配不同的標籤、顏色和圖示來自定義 Hotbar 中的專案,以方便回憶。比如這樣:
它還有類似 VSCode 的命令皮膚。命令皮膚允許使用者執行特定的鍵盤快捷鍵,從而使最常見的任務變得更容易。在使用 Lens 時提高可訪問性和效率。Windows 的快捷鍵是:Ctrl + Shift + p
。如下圖:
監控整合
Lens 內建的視覺化。Lens 與 Prometheus 整合,可以透過總容量、實際使用、請求和限制視覺化和檢視資源使用指標(包括 CPU、記憶體、網路和磁碟)的趨勢。為每個 k8s 資源自動生成詳細的視覺化。如下圖:
所有 K8S 資源觸手可達
智慧終端功能。Lens 智慧終端自帶 kubectl 和 helm,自動同步 kubectl 的版本,以匹配當前選擇的 K8S 叢集 API 版本。Lens 會自動分配 kubeconfig 上下文來匹配當前選擇的 K8s 叢集。
K8S 資源模板
自帶全量 K8S 資源模板,而且是有豐富資訊的模板,直接在模板上照貓畫虎就可完成各類資源的建立,媽媽再也不用擔心我忘記 K8S Resources 的 Spec 了!
快速部署
Helm Chart。Lens 自帶 Helm Chart 管理,允許發現和快速部署數以千計的公開可用的 Helm Chart 和管理您自己的儲存庫。探索已安裝的 Helm Chart ,只需一次點選即可修訂和升級。
如下圖:
外掛!
支援外掛。輕鬆地從社群和雲本地生態系統供應商新增 Lens 擴充套件或構建自己的。Lens Extensions 用於新增自定義功能和服務,以加速與 Kubernetes 和其他雲原生技術整合的所有技術的開發流程。
這裡推薦幾個實用的外掛:
lens-certificate-info
檢視證書資訊。檢視含有證書資訊的 Secret,效果如下:
lens-debug-tools
配合 K8S 1.16 的新功能,可以在想要除錯的 Pod 裡插入帶有豐富工具集的 Sidecar(為了追求 Size,一般映象都是非常精簡,導致常用命令缺失,除錯困難),方便除錯。
還可以配置除錯用的映象,還貼心的給了 3 個推薦:
Name | Description | Link |
---|---|---|
busybox | Default value | https://hub.docker.com/_/busybox |
markeijsermans/debug | https://hub.docker.com/r/markeijsermans/debug | |
praqma/network-multitool | https://hub.docker.com/r/praqma/network-multitool |
安裝完成後 Pod 頁面會多一個按鈕:
有 2 種模式:
一種是「Run as debug pod」,就是在同一臺 Node 上啟動一個新 pod,可以用來分析除錯與 Node 有關的問題。自動執行的命令如下:
kubectl run loki-promtail-5d5h8-debug -n loki-stack -it --image=busybox --restart=Never --attach --overrides='{ \"spec\": { \"nodeName\": \"izuf656om146vu1n6pd6lpz\" } }' --labels=createdBy=lens-debug-extension --rm
另一種是「Run as emepheral container」,需要啟用 K8S 1.16 的新功能才能使用。直接是在要除錯的 Pod 裡啟動一個 Debug Sidecar,就可以分析除錯與 Node、Pod有關的問題。自動執行的命令如下:
kubectl debug -i -t -n loki-stack loki-promtail-5d5h8 --image=busybox --target promtail --attach
@nevalla/kube-resource-map
資源拓撲圖。這個真的是心頭好。來看看 Monitoring 的拓撲圖:
從Helm,到 StatefulSet,到 Pod,到 SVC,再到 ConfigMap、Secret,一應俱全。
✍ 總結
Lens 是一個Kubernetes IDE,在桌面環境下使用它,來開發、除錯、DevOps、運維和監控。
它有很多強大的功能,其中:Catalog、Hotbar、命令皮膚、監控、智慧終端、資源模板、Helm Chart 管理和外掛 這些功能一定要試一試,體驗飛昇!
一起使用吧~ ???
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.