git lens
随着越来越多的工作负载迁移到容器化环境,管理大量的容器以及它们与其他系统之间的连接变得越来越具有挑战性。 随着容器化环境的规模和复杂性超出人们的管理能力,诸如Kubernetes之类的容器编排平台变得越来越重要。 但是,这样的平台面临着自己的管理挑战,这些挑战要求指标,可观察性和用户友好的界面来呈现其巨大的复杂性。
输入镜头
Lens自称为“ Kubernetes IDE”,是用于Kubernetes集群的有用,有吸引力的开源用户界面(UI)。 开箱即用,Lens可以使用您的kubeconfig文件连接到Kubernetes集群,并将显示有关集群及其包含的对象的信息。 Lens还可以连接到(或安装)Prometheus堆栈,并使用它来提供有关群集的指标,包括节点信息和运行状况。
![Lens UI显示集群上的工作负载概述 Lens UI displaying an overview of workloads on the cluster](https://i-blog.csdnimg.cn/blog_migrate/18efcf6a1afb0398298c05b621f6e550.png)
群集上的工作负载概述。 (克里斯·柯林斯(Chris Collins), CC BY-SA 4.0 )
像Kubernetes的仪表板和OpenShift一样,Lens提供有关群集中对象状态和Prometheus收集的指标的实时更新。
开始吧
安装镜头很简单。 AppImage软件包可用于Linux,并且二进制文件可用于macOS和Windows客户端。 本教程说明了如何下载和使用Lens AppImage在Linux上安装和使用Lens。
根据AppImage的常见问题解答 ,AppImage是“适用于Linux的可下载文件,其中包含应用程序以及该应用程序需要运行的所有内容。” 打包为AppImage的应用程序就是这样-一个可以下载并运行的可执行文件。
可以从GitHub上的Lens Releases页面下载Lens的AppImage。 下载后,使用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会显示有关群集的大量信息。 您可以查看正在运行的工作负载:窗格和部署,守护程序集,cron作业等。您还可以查看有关配置映射和机密的信息,网络信息,存储,名称空间和事件。 每个选项都可以让您深入了解有关给定对象的信息,甚至可以直接在Lens中编辑对象。
![镜头显示集群中运行的Pod的详细信息,包括有关特定Pod的信息。 Lens displaying details of pods running on the cluster, including information on a specific pod.](https://i-blog.csdnimg.cn/blog_migrate/589b4716aecc58811d5d5ba77f496f2a.png)
在群集上运行的Pod的详细信息。 (克里斯·柯林斯(Chris Collins), CC BY-SA 4.0 )
收集有关集群的指标
Lens能够连接到群集中已配置的现有Prometheus堆栈,因此也可以代表您安装应用程序。 这对于在自己的家庭实验室中运行Kubernetes集群的发烧友来说非常有用,使他们只需单击即可部署并连接到Prometheus。
使用镜头安装Prometheus
如果您一直遵循本系列文章,特别是使用Raspberry Pi构建Kubernetes集群 ,那么您的homelab中将提供一个Kubernetes集群,用于教育和修补。 普通群集缺少的一件事是指标,这是将Prometheus添加到群集并安装kube-state-metrics服务以收集有关群集信息的绝佳机会。
要安装它,只需右键单击Lens UI左上角的群集图标(当然,在连接到群集之后),然后选择设置 。 在“设置”页面上的“ 功能 ”下,您将找到“ 度量”部分和一个用于安装Prometheus的按钮。 单击“ 安装”将Prometheus堆栈部署到您的群集,Lens将自动检测其存在并开始显示指标。 (这将花费一分钟,新的Prometheus必须首先收集一些指标。)
我也很感谢Lens直接链接到用于部署此堆栈的清单,因此,如果需要,您可以在执行操作之前验证将要创建的内容。
![Lens UI,显示有关集群的硬件利用率指标 Lens UI, displaying hardware utilization metrics about the cluster](https://i-blog.csdnimg.cn/blog_migrate/c6bfdf96f732746b007c8e518d206f20.png)
有关群集的硬件利用率指标。 (克里斯·柯林斯(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
完全删除该密钥,这样就可以在Raspbery Pi节点上计划部署中的Pod。 单击保存。 这将触发部署,以推出具有ARM64架构的新kube-state-metrics pod,它们应该准备就绪,并开始直接向Prometheus报告这些指标。
镜头让您看得清楚
Kubernetes非常复杂,任何使Kubernetes集群更易于可视化和使用的工具都可以降低新手进入的门槛,并为经验丰富的Kubernetes管理员简化生活。 Lens通过一个引人注目的,直观且易于使用的UI来管理一个或多个集群,从10,000英尺的视角一直到单个Kubernetes对象的实质,将其带离了公园。 Lens还可以帮助显示有关群集的指标,并使安装和使用Prometheus堆栈几乎可以通过按钮显示指标。
Lens给我留下了深刻的印象,并用它来管理我自己的家庭实验室中的多个Kubernetes集群,希望您也觉得它有用。 您是否拥有喜欢的工具来管理或可视化Kubernetes集群中发生的事情? 在评论中分享它们,所以我们都可以尝试一下!
git lens