Linux中國

使用 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)。

Figure 1: Minikube virtual machine in virtual box

使用 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 安裝完成後,安裝 kubectlhttps://kubernetes.io/docs/tasks/tools/)。它是一個命令行集群,用於對 Kubernetes 集群和 Minikube 執行命令。

Figure 2: Lens

執行 kubectl get nodes 命令獲取所有 節點 node 的詳情,在本例中是獲取 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)。

Figure 3: Lens catalogue

點擊 「minikube」 後,你就進入了 Minikube 的世界,你會愛上它的。

點擊 節點 node 獲取有關 kubectl get nodes 命令輸出的 節點 node 詳情。

現在,你可以使用 Lens 了。

Figure 4: Lens cluster

我們現在部署 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 命令。

Figure 5: Lens nodes

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 來獲取信息的幾個命令。

Figure 6: Lens pods

描述 命令
列出節點 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 資源進行編輯和刪除操作。

Figure 7: Lens deployments

我們來看下是如何操作的。在 工作負載 Workloads 部分選擇 容器莢 Pod (圖 6),我們能通過 Lens 來編輯、刪除、查看日誌、訪問 容器莢 Pod 的終端,這是不是很酷?

Figure 8: Lens Replicasets

你可以驗證 工作負載 Workloads 區域中所有 部署 deployments (圖 7), 工作負載 Workloads 區域中所有 副本 Replicasets (圖 8), 配置 Config 區域中所有 密鑰 Secrets (圖 9),以及 網路 Network 區域中所有 服務 Services 是否都正常(圖 10),

Figure 9: Lens Secrets

你可以看到,跳轉到所有的資源以及在一個地方高效地查看所有資源就是如此輕鬆。我們可以用 Lens 修改 YAML 文件,在運行時應用它來查看變更。

Figure 10: Lens Services

對於配置在不同的雲服務商部署的多個集群,我們仍可以用 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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國