使用 Lens Desktop 監控和調試 Kubernetes
Lens Desktop 是一個令人興奮的 Kubernetes 工作平台。它是基於 OpenLens 資源庫的一個定製化發行版本。通過本文來了解下 Lens Desktop 能做什麼以及它是如何工作的。
Lens Desktop 是免費的。你可以查看 https://app.k8slens.dev/subscribe 來了解更多內容。Lens Desktop 有如下優勢:
- 簡單高效 —— 你無需學習
kubectl
命令 - 可視化已有的 Kubernetes 資源
- 基於開源代碼構建
- 可觀測性 —— 實時的統計數據、事件和日誌流
- 錯誤和警告可以直接在 Lens 儀錶盤上看到
- 支持 EKS、AKS、GKE、Minikube、Rancher、k0s、k3s、OpenShift
- 強大的社區支持 —— 有 450000 用戶,在 GitHub 上共獲得 17000 星
Minikube 安裝
Minikube 是一個用於本地運行 Kubernetes 的工具。它運行一個單節點的 Kubernetes 集群,這樣就可以在 Kubernetes 上進行日常軟體開發的實踐工作。
我們將使用 Minikube 並驗證 Lens 的用法。首先讓我們在基於 Windows 的系統上安裝 Minikube。你也可以把它安裝在其他操作系統、虛擬機或筆記本電腦上。
- 2 核以上 CPU
- 2GB RAM
- 20GB 空閑硬碟空間
- 能連接網路
- 容器或虛擬機管理器,如 Docker、VirtualBox
在終端或命令提示符處,運行 minikube start
命令:
minikube start --driver=virtualbox
* minikube v1.12.3 on Microsoft Windows 10 Home Single Language 10.0.19044 Build 19044
* Using the virtualbox driver based on existing profile
* minikube 1.26.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.26.0
* To disable this notice, run: 『minikube config set WantUpdateNotification false』
* Starting control plane node minikube in cluster minikube
* virtualbox 「minikube」 VM is missing, will recreate.
* Creating virtualbox VM (CPUs=2, Memory=3000MB, Disk=20000MB) ...
! This VM is having trouble accessing https://k8s.gcr.io
* To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
* Preparing Kubernetes v1.18.3 on Docker 19.03.12 ...
* Verifying Kubernetes components...
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use 「minikube」
進入你的 VirtualBox,並驗證剛安裝的 Minikube 虛擬機功能正常(圖 1)。
使用 minikube status
命令,查看狀態是否與下面的輸出一致:
C:>minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
然後,使用 kubectl cluster-info
命令查看 KubeDNS 詳情:
kubectl cluster-info
Kubernetes master is running at https://192.168.99.103:8443
KubeDNS is running at https://192.168.99.103:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
你可以使用 kubectl cluster-info dump
命令來調試和診斷集群問題。
當 Minikube 安裝完成後,安裝 kubectl
(https://kubernetes.io/docs/tasks/tools/)。它是一個命令行集群,用於對 Kubernetes 集群和 Minikube 執行命令。
執行 kubectl get nodes
命令獲取所有 節點 的詳情,在本例中是獲取 Minikube 的詳情:
C:>kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 7m57s v1.18.3
使用 kubectl get all
命令獲取默認命名空間下的所有詳情:
C:>kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7m58s
我們現在已經有一個 Minikube 集群,並準備好了 Kubectl。下一步是安裝和配置 Lens,並用示例應用程序來驗證。
Lens 的安裝和配置
打開 https://k8slens.dev/ ,下載與你的操作系統匹配的安裝包。
然後,參照屏幕上的教程來安裝 Lens,安裝完成後打開 Lens。你會發現在目錄中有一個 minikube
(圖 3)。
點擊 「minikube」 後,你就進入了 Minikube 的世界,你會愛上它的。
點擊 節點 獲取有關 kubectl get nodes
命令輸出的 節點 詳情。
現在,你可以使用 Lens 了。
我們現在部署 https://github.com/GoogleCloudPlatform/microservices-demo,這是一個雲原生微服務演示應用程序。它有 11 層的微服務應用,是一個基於網路的電子商務應用。
下載這個應用程序,把它解壓到與 Minikube 相同的目錄。
進入 release
目錄,執行以下命令。
kubectl apply -f kubernetes-manifests.yaml
deployment.apps/emailservice created
service/emailservice created
deployment.apps/checkoutservice created
service/checkoutservice created
deployment.apps/recommendationservice created
service/recommendationservice created
deployment.apps/frontend created
service/frontend created
service/frontend-external created
deployment.apps/paymentservice created
service/paymentservice created
deployment.apps/productcatalogservice created
service/productcatalogservice created
deployment.apps/cartservice created
service/cartservice created
deployment.apps/loadgenerator created
deployment.apps/currencyservice created
service/currencyservice created
deployment.apps/shippingservice created
service/shippingservice created
deployment.apps/redis-cart created
service/redis-cart created
deployment.apps/adservice created
service/adservice created
安裝過程現在應該已經開始了,不過它需要一些時間來反映出我們使用了 kubectl
命令。
kubectl get pods
NAME READY STATUS RESTARTS AGE
adservice-775d8b9bf5-cp7jr 0/1 Pending 0 8h
cartservice-79749895f5-jrq4d 1/1 Running 0 8h
checkoutservice-5645bf9c65-882m4 1/1 Running 0 8h
currencyservice-545c79d477-8rhg7 1/1 Running 0 8h
emailservice-7cc5c74b4f-hk74s 1/1 Running 0 8h
frontend-9cdf787f5-klfkh 1/1 Running 1 8h
loadgenerator-7b6874cb4c-645v9 1/1 Running 0 8h
paymentservice-5f74bc7b87-l4248 1/1 Running 0 8h
productcatalogservice-6846f59899-v4q4w 1/1 Running 0 8h
recommendationservice-d9c6c8b55-m2x9k 1/1 Running 0 8h
redis-cart-57bd646894-v7kfr 0/1 Pending 0 8h
shippingservice-8685dd9855-pmgjm 1/1 Running 0 8h
表 1 列出了你可以通過 kubectl
來獲取信息的幾個命令。
描述 | 命令 |
---|---|
列出節點 | kubectl get node |
列出集群中的所有資源 | kubectl get all –all-namespaces |
列出部署 | kubectl get deployment |
顯示部署的完整狀態 | kubectl describe deployment <deployment_name> |
修改集群上的部署 | kubectl edit deployment <deployment_name> |
刪除部署 | kubectl delete deployment <deployment_name> |
列出容器莢 | kubectl get pod |
刪除容器莢 | kubectl delete pod <pod_name> |
顯示容器莢的完整狀態 | kubectl describe pod <pod_name> |
在 Shell 中運行一個單容器莢 | kubectl exec -it <pod_name> /bin/bash |
列出機密信息 | kubectl get secrets |
列出服務 | kubectl get services |
列出服務的完整狀態 | kubectl describe services |
修改集群中的服務 | kubectl edit services / kubectl edit deployment <deployment_name> |
列出命名空間 | kubectl get namespace <namespace_name> |
列印容器莢日誌 | kubectl logs <pod_name> |
列印容器莢中特定容器的日誌 | kubectl logs -c <container_name> <pod_name> |
Lens 不僅可以幫你獲取表 1 中列出的所有信息,它還可以獲取指定集群的信息。我們還能用 Lens 來對 Kubernetes 資源進行編輯和刪除操作。
我們來看下是如何操作的。在 工作負載 部分選擇 容器莢 (圖 6),我們能通過 Lens 來編輯、刪除、查看日誌、訪問 容器莢 的終端,這是不是很酷?
你可以驗證 工作負載 區域中所有 部署 (圖 7), 工作負載 區域中所有 副本 (圖 8), 配置 區域中所有 密鑰 (圖 9),以及 網路 區域中所有 服務 是否都正常(圖 10),
你可以看到,跳轉到所有的資源以及在一個地方高效地查看所有資源就是如此輕鬆。我們可以用 Lens 修改 YAML 文件,在運行時應用它來查看變更。
對於配置在不同的雲服務商部署的多個集群,我們仍可以用 Lens 來進行觀察和故障處理。
(題圖:MJ/069da8c5-9043-46b3-9b14-87a0ffc6bb35)
via: https://www.opensourceforu.com/2022/09/monitoring-and-debugging-kubernetes-with-lens-desktop/
作者:Mitesh Soni 選題:lkxed 譯者:lxbwolf 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive