皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

使用 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 命令:

  1. minikube start --driver=virtualbox
  2. * minikube v1.12.3 on Microsoft Windows 10 Home Single Language 10.0.19044 Build 19044
  3. * Using the virtualbox driver based on existing profile
  4. * minikube 1.26.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.26.0
  5. * To disable this notice, run: minikube config set WantUpdateNotification false
  6. * Starting control plane node minikube in cluster minikube
  7. * virtualbox minikube VM is missing, will recreate.
  8. * Creating virtualbox VM (CPUs=2, Memory=3000MB, Disk=20000MB) ...
  9. ! This VM is having trouble accessing https://k8s.gcr.io
  10. * To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
  11. * Preparing Kubernetes v1.18.3 on Docker 19.03.12 ...
  12. * Verifying Kubernetes components...
  13. * Enabled addons: default-storageclass, storage-provisioner
  14. * Done! kubectl is now configured to use minikube

进入你的 VirtualBox,并验证刚安装的 Minikube 虚拟机功能正常(图 1)。

使用 Lens Desktop 监控和调试 Kubernetes

Figure 1: Minikube virtual machine in virtual box

使用 minikube status 命令,查看状态是否与下面的输出一致:

  1. C:\>minikube status
  2. minikube
  3. type: Control Plane
  4. host: Running
  5. kubelet: Running
  6. apiserver: Running
  7. kubeconfig: Configured

然后,使用 kubectl cluster-info 命令查看 KubeDNS 详情:

  1. kubectl cluster-info
  2. Kubernetes master is running at https://192.168.99.103:8443
  3. 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 执行命令。

使用 Lens Desktop 监控和调试 Kubernetes

Figure 2: Lens

执行 kubectl get nodes 命令获取所有 节点node 的详情,在本例中是获取 Minikube 的详情:

  1. C:\>kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. minikube Ready master 7m57s v1.18.3

使用 kubectl get all 命令获取默认命名空间下的所有详情:

  1. C:\>kubectl get all
  2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7m58s

我们现在已经有一个 Minikube 集群,并准备好了 Kubectl。下一步是安装和配置 Lens,并用示例应用程序来验证。

Lens 的安装和配置

打开 https://k8slens.dev/ ,下载与你的操作系统匹配的安装包。

然后,参照屏幕上的教程来安装 Lens,安装完成后打开 Lens。你会发现在目录中有一个 minikube(图 3)。

使用 Lens Desktop 监控和调试 Kubernetes

Figure 3: Lens catalogue

点击 “minikube” 后,你就进入了 Minikube 的世界,你会爱上它的。

点击 节点node 获取有关 kubectl get nodes 命令输出的 节点node 详情。

现在,你可以使用 Lens 了。

使用 Lens Desktop 监控和调试 Kubernetes

Figure 4: Lens cluster

我们现在部署 https://github.com/GoogleCloudPlatform/microservices-demo,这是一个云原生微服务演示应用程序。它有 11 层的微服务应用,是一个基于网络的电子商务应用。

下载这个应用程序,把它解压到与 Minikube 相同的目录。

进入 release 目录,执行以下命令。

  1. kubectl apply -f kubernetes-manifests.yaml
  2. deployment.apps/emailservice created
  3. service/emailservice created
  4. deployment.apps/checkoutservice created
  5. service/checkoutservice created
  6. deployment.apps/recommendationservice created
  7. service/recommendationservice created
  8. deployment.apps/frontend created
  9. service/frontend created
  10. service/frontend-external created
  11. deployment.apps/paymentservice created
  12. service/paymentservice created
  13. deployment.apps/productcatalogservice created
  14. service/productcatalogservice created
  15. deployment.apps/cartservice created
  16. service/cartservice created
  17. deployment.apps/loadgenerator created
  18. deployment.apps/currencyservice created
  19. service/currencyservice created
  20. deployment.apps/shippingservice created
  21. service/shippingservice created
  22. deployment.apps/redis-cart created
  23. service/redis-cart created
  24. deployment.apps/adservice created
  25. service/adservice created

安装过程现在应该已经开始了,不过它需要一些时间来反映出我们使用了 kubectl 命令。

使用 Lens Desktop 监控和调试 Kubernetes

Figure 5: Lens nodes

  1. kubectl get pods
  2. NAME READY STATUS RESTARTS AGE
  3. adservice-775d8b9bf5-cp7jr 0/1 Pending 0 8h
  4. cartservice-79749895f5-jrq4d 1/1 Running 0 8h
  5. checkoutservice-5645bf9c65-882m4 1/1 Running 0 8h
  6. currencyservice-545c79d477-8rhg7 1/1 Running 0 8h
  7. emailservice-7cc5c74b4f-hk74s 1/1 Running 0 8h
  8. frontend-9cdf787f5-klfkh 1/1 Running 1 8h
  9. loadgenerator-7b6874cb4c-645v9 1/1 Running 0 8h
  10. paymentservice-5f74bc7b87-l4248 1/1 Running 0 8h
  11. productcatalogservice-6846f59899-v4q4w 1/1 Running 0 8h
  12. recommendationservice-d9c6c8b55-m2x9k 1/1 Running 0 8h
  13. redis-cart-57bd646894-v7kfr 0/1 Pending 0 8h
  14. shippingservice-8685dd9855-pmgjm 1/1 Running 0 8h

表 1 列出了你可以通过 kubectl 来获取信息的几个命令。

使用 Lens Desktop 监控和调试 Kubernetes

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 资源进行编辑和删除操作。

使用 Lens Desktop 监控和调试 Kubernetes

Figure 7: Lens deployments

我们来看下是如何操作的。在 工作负载Workloads 部分选择 容器荚Pod(图 6),我们能通过 Lens 来编辑、删除、查看日志、访问 容器荚Pod 的终端,这是不是很酷?

使用 Lens Desktop 监控和调试 Kubernetes

Figure 8: Lens Replicasets

你可以验证 工作负载Workloads 区域中所有 部署deployments(图 7),工作负载Workloads 区域中所有 副本Replicasets (图 8),配置Config 区域中所有 密钥Secrets (图 9),以及 网络Network 区域中所有 服务Services 是否都正常(图 10),

使用 Lens Desktop 监控和调试 Kubernetes

Figure 9: Lens Secrets

你可以看到,跳转到所有的资源以及在一个地方高效地查看所有资源就是如此轻松。我们可以用 Lens 修改 YAML 文件,在运行时应用它来查看变更。

使用 Lens Desktop 监控和调试 Kubernetes

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中国 荣誉推出

转自 容器与云|使用 Lens Desktop 监控和调试 Kubernetes (linux.cn)