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中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...