随着越来越多的工作负载迁移到容器化环境,管理大量容器以及它们与其他系统之间的连接变得具有挑战性。随着容器化环境的规模和复杂性增加,超出了人类的管理能力,Kubernetes等容器编排平台变得越来越重要。然而,这样的平台也有自己的管理挑战,需要指标、可观察性和用户友好的界面来展示其巨大的复杂性。

进入镜头

镜头自称为“Kubernetes IDE”,是一个有用、有吸引力的开源用户界面 (UI),用于与 Kubernetes 集群一起工作。开箱即用,Lens 可以使用您的 kubeconfig 文件连接到 Kubernetes 集群,并将显示有关集群及其包含的对象的信息。 Lens 还可以连接或安装 Prometheus 堆栈,并使用它来提供有关集群的指标,包括节点信息和运行状况。

显示集群上工作负载概览的镜头 UI

图片来源:

镜头,显示集群工作负载的概览。 (克里斯·柯林斯,CC BY-SA 4.0)

与 Kubernetes 的仪表板和 OpenShift 一样,Lens 提供集群中对象状态的实时更新以及Prometheus收集的指标。

开始使用

安装镜头很简单。AppImage软件包可用于 Linux,并且有可用于 macOS 和 Windows 客户端的二进制文件。本教程介绍如何下载和使用 Lens AppImage 在 Linux 上安装和使用 Lens。

根据AppImage 的常见问题解答,AppImage 是“用于 Linux 的可下载文件,其中包含应用程序和应用程序运行所需的一切”。打包为 AppImage 的应用程序就是这样——可以下载和运行的单个可执行文件。

镜头的 AppImage 可以从 GitHub 上的镜头版本页面下载。下载后,用chmod标记文件可执行文件,然后直接执行或将其复制到$PATH中的某个位置:

# 下载 3.4.0 AppImage for Lens,将其标记为可执行并将其复制到您的 $PATH

#(为简洁起见省略输出)

$ 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 和部署、守护程序集、cron 作业等。您还可以查看有关配置映射和机密、网络信息、存储、命名空间和事件的信息。每个都可以让您深入了解有关给定对象的信息,您甚至可以直接在 Lens 中编辑对象。

镜头显示集群上运行的 pod 的详细信息,包括特定 pod 的信息。

图片来源:

Lens 中集群工作负载的概述。 (克里斯·柯林斯,CC BY-SA 4.0)

. (克里斯·柯林斯,CC BY-SA 4.0)

收集有关集群的指标

更多关于 Kubernetes

  • 什么是 Kubernetes?

  • 电子书:Kubernetes 的存储模式

  • 试驾 OpenShift 上手

  • 电子书:Kubernetes 入门

  • 企业级Kubernetes介绍

  • 如何用通俗的语言解释 Kubernetes

  • 电子书:在您的 Raspberry Pi 家庭实验室上运行 Kubernetes

  • Kubernetes 备忘单

  • 电子书:面向 SRE 和系统管理员的 Kubernetes 指南

  • Kubernetes 最新文章

Lens 非常有用的功能之一是它能够连接到安装在集群中的 Prometheus 堆栈,以收集有关集群及其节点的当前和历史数据的指标。这非常适合直接在 Lens UI 中获取有关集群的一目了然信息,而无需转到外部仪表板。但是,所提供的信息并不全面——它有利于概览,但您可能仍希望使用带有更复杂仪表板的可视化工具(如 Grafana)来收集更专业的信息。

除了能够连接到集群中配置的现有 Prometheus 堆栈外,Lens 还可以代表您安装应用程序。这对于在其家庭实验室中运行 Kubernetes 集群的爱好者来说非常有用,以便能够一键部署和连接到 Prometheus。

用镜头安装普罗米修斯

如果您一直在关注本系列,尤其是使用 Raspberry Pi 构建 Kubernetes 集群,您将在您的家庭实验室中配置一个 Kubernetes 集群用于教育和修补。 vanilla 集群缺少的一件事是指标,这是将 Prometheus 添加到集群并安装kube-state-metrics服务以收集有关集群的信息的绝佳机会。

要安装它,只需右键单击 Lens UI 左上角的集群图标(当然是在连接到集群之后),然后选择设置。在设置页面的 Features 下,您会找到一个 Metrics 部分和一个安装 Prometheus 的按钮。单击 Install 将 Prometheus 堆栈部署到您的集群,Lens 将自动检测其存在并开始显示指标。 (这需要一分钟——新的 Prometheus 必须首先收集一些指标。)

我也很欣赏 Lens 直接链接到用于部署此堆栈的清单,因此如果需要,您可以在执行此操作之前验证将创建的内容。

镜头 UI,显示有关集群的硬件利用率指标

图片来源:

镜头 UI 显示有关集群的硬件利用率指标。 (克里斯·柯林斯,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 部署。

回到集群信息,点击Workloads,选择Deployments。集群中所有 Kubernetes 部署对象的列表将显示在右侧的窗格中。您应该能够通过 Conditions 列下的愤怒红色条目轻松挑选出 kube-state-metrics 部署,该条目指示崩溃循环 pod 问题。

选择 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:

  • 关键:beta.kubernetes.io/arch

运营商:在

价值观:

amd64

完全删除此密钥,这将允许在您的 Raspbery Pi 节点上安排部署中的 pod。单击保存。这将触发部署以推出具有 ARM64 架构的新 kube-state-metrics pod,它们应该准备就绪并开始直接向 Prometheus 报告指标。

镜头让你看得清清楚楚

Kubernetes 很复杂,任何可以更轻松地可视化和使用 Kubernetes 集群的工具都可以降低新手的入门门槛,并使有经验的 Kubernetes 管理员的生活变得更加轻松。 Lens 以吸引人、直观且易于使用的 UI 来管理一个或多个集群,从 10,000 英尺的视角到单个 Kubernetes 对象的本质,将其从公园中剔除。 Lens 还有助于显示有关集群的指标,并使安装和使用 Prometheus 堆栈来显示指标几乎是一个按钮。

Lens 给我留下了深刻的印象,并在我自己的家庭实验室中使用它来管理多个 Kubernetes 集群,我希望你也觉得它有用。您是否有喜欢的工具来管理或可视化 Kubernetes 集群中发生的事情?在评论中分享它们,这样我们都可以尝试一下!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐