随着越来越多的工作负载迁移到容器化环境,管理这些大量的容器以及它们与其他系统之间的连接变得越来越具有挑战性。随着容器化环境的规模和复杂性超过人类的管理能力,Kubernetes 等容器编排平台变得越来越重要。然而,这些平台也带来了自身的管理挑战,需要指标、可观察性和用户友好的界面来呈现其大量的复杂性。
进入 Lens
Lens 自称为“Kubernetes IDE”,是一款实用、有吸引力的开源用户界面 (UI),用于处理 Kubernetes 集群。 Lens 开箱即用,可以使用您的 kubeconfig 文件连接到 Kubernetes 集群,并将显示有关集群及其包含对象的信息。 Lens 还可以连接到或安装 Prometheus 堆栈,并使用它来提供有关集群的指标,包括节点信息和运行状况。

Lens,显示集群工作负载的概览。(Chris Collins,CC BY-SA 4.0)
与 Kubernetes 的仪表板和 OpenShift 类似,Lens 提供集群中对象状态和 Prometheus 收集的指标的实时更新。
开始使用
安装 Lens 非常简单。AppImage 软件包可用于 Linux,并且有适用于 macOS 和 Windows 客户端的二进制文件。本教程解释了如何下载和使用 Lens AppImage 在 Linux 上安装和使用 Lens。
根据 AppImage 的 FAQ,AppImage 是“一个适用于 Linux 的可下载文件,其中包含应用程序以及应用程序运行所需的一切”。打包为 AppImage 的应用程序就是这样一个单一的可执行文件,可以下载并运行。
Lens 的 AppImage 可以从 GitHub 上的 Lens Releases 页面下载。下载后,使用 chmod
将文件标记为可执行文件,然后直接执行它或将其复制到 $PATH
中的某个位置
# Download the 3.4.0 AppImage for Lens, mark it executable and copy it to your $PATH
# (output omitted for brevity)
$ wget https://github.com/lensapp/lens/releases/download/v3.4.0/Lens-3.4.0.AppImage
$ chmod +x Lens-3.4.0.AppImage
$ sudo mv Lens-3.4.0.AppImage /usr/sbin/lens
然后您可以通过在命令行中键入 lens
来启动 Lens。
将 Lens 连接到 Kubernetes 集群
启动 Lens 后,通过单击左上角的 + 图标并选择 kubeconfig 将其连接到 Kubernetes 集群。接下来,将出现一个下拉框,其中包含来自您的 ~/.kube/config
文件的任何 Kubernetes 上下文,或者您可以选择自定义上下文。由于任何上下文的集群和集群的身份验证信息都包含在 kubeconfig 文件中,因此 Lens 将每个上下文都视为不同的集群,不幸的是。
与 OpenShift 为您切换到的任何项目(命名空间)自动在 kubeconfig 文件中创建上下文信息的方式相比,这特别没有帮助。作为一名在数百个集群上工作的站点可靠性工程师 (SRE),我在设置 Lens 时有几十个甚至几十个“集群”可供选择。在实践中,我发现最好为任何集群选择 default
上下文。一旦 Lens 连接后,您可以管理所有命名空间和工作负载,并且无需全部添加它们。
连接后,Lens 将显示有关您的集群的大量信息。您可以看到正在运行的工作负载:Pod 和部署、守护程序集、CronJob 等。您还可以查看有关 ConfigMap 和 Secret、网络信息、存储、命名空间和事件的信息。每个都允许您深入了解有关给定对象的信息,您甚至可以直接在 Lens 中编辑对象。

收集有关您的集群的指标
Lens 最有用的功能之一是它能够连接到安装在集群中的 Prometheus 堆栈,以收集有关集群及其节点的当前和历史数据的指标。这非常适合在 Lens UI 中直接获取有关集群的概览信息,而无需转到外部仪表板。但是,呈现的信息并不全面——它对于概览很有用,但您可能仍然希望使用 Grafana 等可视化工具以及更复杂的仪表板来收集更专业的信息。
除了能够连接到集群中已配置的现有 Prometheus 堆栈之外,Lens 还可以代表您安装应用程序。这对于在他们的家庭实验室中运行 Kubernetes 集群的爱好者来说非常有用,他们只需单击一下即可部署和连接到 Prometheus。
使用 Lens 安装 Prometheus
如果您一直在关注本系列,尤其是使用 Raspberry Pi 构建 Kubernetes 集群,您将在您的家庭实验室中配置一个 Kubernetes 集群用于教育和试验。 vanilla 集群缺少的一件事是指标,这是一个很好的机会将 Prometheus 添加到集群并安装 kube-state-metrics 服务以收集有关集群的信息。
要安装它,只需右键单击 Lens UI 左上角的集群图标(当然是在连接到集群之后),然后选择 设置。在“设置”页面上的 功能 下,您将找到 指标 部分和一个用于安装 Prometheus 的按钮。单击 安装 以将 Prometheus 堆栈部署到您的集群,Lens 将自动检测其存在并开始显示指标。(这需要一分钟——新的 Prometheus 必须首先收集一些指标。)
我也很欣赏 Lens 直接链接到用于部署此堆栈的清单,因此如果您愿意,您可以在执行操作之前验证将要创建的内容。

Lens UI 显示有关集群的硬件利用率指标。(Chris Collins,CC BY-SA 4.0)
修复 kube-state-metrics
不幸的是,虽然 Prometheus 在基于 Raspberry Pi 的集群上安装得很好,但 kube-state-metrics 服务将失败。目前,kube-state-metrics 项目没有构建 AArch64/ARM64 镜像,因此从该镜像创建的 Pod 将持续崩溃,并在日志中显示 exec format error
消息。
幸运的是,此问题正在被跟踪,并且 kube-state-metrics 项目正在努力构建基础设施以生成官方 ARM 镜像。但是,在此之前,您可以使用社区开发的镜像并使用 Lens 直接修补 kube-state-metrics 部署。
返回到集群信息,单击 工作负载,然后选择 部署。集群中所有 Kubernetes 部署对象的列表将出现在右侧窗格中。您应该能够通过 条件 列下表示崩溃循环 Pod 问题的愤怒的红色条目轻松挑出 kube-state-metrics 部署。
选择 kube-state-metrics 部署,对象的详细信息将从右侧的覆盖窗口中滑出。此窗口的右上角有一个铅笔图标。单击该图标以打开一个编辑器窗口,其中包含 kube-state-metrics 部署的 YAML 表示形式。向下滚动,并编辑 .spec.template.spec.containers.image 值。默认情况下,此值指向官方镜像:quay.io/coreos/kube-state-metrics:v1.9.5。将此值替换为 docker.io/carlosedp/kube-state-metrics:v1.9.5。
在同一部署中,有 nodeAffinity 规则,其中一项规则强制部署仅在具有 amd64 架构的主机上运行 Pod。这不适用于 AArch64/ARM64 Raspberry Pi,并且对于上面的更新镜像来说,它没有用。在 .spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms 中找到键 beta.kubernetes.io/arch
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
完全删除此键,这将允许部署中的 Pod 安排在您的 Raspberry Pi 节点上。单击保存。这将触发部署以推出具有 ARM64 架构的新 kube-state-metrics Pod,它们应该准备就绪并开始将指标直接报告给 Prometheus。
Lens 让您看得更清楚
Kubernetes 非常复杂,任何使可视化和处理 Kubernetes 集群变得更容易的工具都可以降低新手的入门门槛,并使经验丰富的 Kubernetes 管理员的生活轻松得多。 Lens 以有吸引力、直观且易于使用的 UI 击败了其他工具,用于管理一个或多个集群,从 10,000 英尺的高度到 Kubernetes 各个对象的细节。 Lens 还有助于显示有关集群的指标,并使安装和使用 Prometheus 堆栈来显示指标几乎是按钮式的。
Lens 给我的印象非常深刻,我使用它来管理我自己的家庭实验室中的多个 Kubernetes 集群,我希望您也觉得它有用。您是否有喜欢的工具来管理或可视化 Kubernetes 集群中发生的事情?在评论中分享它们,以便我们都可以尝试一下!
评论已关闭。