Kubernetes Web View Web界面的公告(以及Kubernetes其他Web UI的简要概述)

注意事项 佩雷夫 :原始材料的作者是Zalando的Henning Jacobs。 他创建了一个与Kubernetes一起使用的新Web界面,该界面被定位为“ Web的Kubectl”。 为什么会出现新的开源项目,以及现有解决方案不符合哪些标准,请阅读其文章。



在本出版物中,我研究了各种开源Kubernetes Web界面,提出了对通用UI的要求,并解释了为什么我开发了Kubernetes Web View ,该界面旨在简化一次支持多个集群并对其进行故障排除的接口。

用例


在Zalando,我们为大量Kubernetes(900+)和集群(100+)用户提供服务。 在几个典型的用例中,专用Web工具的帮助将非常有用:

  1. 与同事进行沟通以提供支持;
  2. 应对事件并调查原因。

技术支持


根据我的经验,在支持框架内的交流通常是这样的:

-帮助,我们的XYZ服务不可用!
-执行kubectl describe ingress ...时,您看到什么?

或类似CRD的内容:

-我的身份识别服务有问题...
kubectl describe platformcredentialsset ...命令kubectl describe platformcredentialsset ...吗?

这种通信通常归结为引入kubectl各种变体以解决问题。 结果,对话双方被迫在终端和网络聊天之间不断切换,而且观察到了不同的情况。

因此,我希望Kubernetes Web前端允许以下操作:

  • 用户可以交换链接并观察同一件事;
  • 这将有助于避免人为的支持错误 :例如,在命令行上输入错误的集群,CLI命令中的错别字等。
  • 将允许您生成自己的视图以发送给同事,即添加标签列,在一页上显示多种类型的资源;
  • 理想情况下,此基于Web的工具应允许您将深层链接放置到YAML的特定部分 (例如,指向导致失败的无效参数)。

事件响应与分析


对基础设施中的事件做出响应需要对态势的了解,评估影响的能力以及寻找集群中的模式的能力。 一些现实生活中的例子:

  • 关键生产服务有问题,您需要按名称在所有集群中找到所有Kubernetes资源以解决问题;
  • 扩展时节点开始下降,您需要在所有群集中找到所有状态为“待处理”的Pod,以评估问题的严重性;
  • 单个用户报告在所有集群中部署的DaemonSet都有问题,有必要找出问题是否完全

在这种情况下,我的标准解决方案类似于for i in $clusters; do kubectl ...; done for i in $clusters; do kubectl ...; done for i in $clusters; do kubectl ...; done 。 显然,您可以开发一个提供类似功能的工具。

现有的Kubernetes Web界面


Kubernetes Web界面的开源世界不是太大*,所以我尝试使用Twitter收集其他信息:



*我对Kubernetes的Web界面数量有限的解释:云服务和供应商Kubernetes通常提供自己的前端,因此“好的”免费Kubernetes UI的市场相对较小。

发了关于K8DashKubernatorOctant的推文 。 让我们看一下它们以及其他现有的开源解决方案,尝试了解它们是什么。

K8Dash


“ K8Dash是管理Kubernetes集群的最简单方法。”



K8Dash看起来不错并且感觉很快,但是对于上面列出的用 ,它有几个缺点:

  • 它仅在一个群集的边界内工作。
  • 可以进行排序和过滤,但没有固定链接。
  • 不支持自定义资源定义(CRD)。

库伯纳特


“ Kubernator是Kubernetes的替代UI。 与高级Kubernetes仪表板不同,它提供了低级控制和对集群中所有对象的出色概述,并能够创建新对象,对其进行编辑并解决冲突。 作为一个完全客户端的应用程序(如kubectl),除了Kubernetes API服务器本身之外,它不需要任何后端,并且还考虑了访问集群的规则。”



这是Kubernator的相当准确的描述。 las,他缺少一些功能:

  • 仅服务一个群集。
  • 没有列表视图模式(也就是说,您无法显示所有处于“待处理”状态的窗格)。

Kubernetes仪表板


“ Kubernetes仪表板是Kubernetes集群的通用Web界面。 它使用户可以管理集群中运行的应用程序并对其进行故障排除,以及管理集群本身。”



不幸的是, Kubernetes Dashboard对我的事件支持和响应活动没有太大帮助,因为它:

  • 例如,当我过滤资源或更改排序顺序时,没有永久链接。
  • 没有简单的方法可以按状态进行过滤-例如,查看所有状态为“待处理”的广告连播;
  • 仅支持一个集群;
  • 不支持CRD(此功能正在开发中);
  • 没有自定义列(例如kubectl -L )。

Kubernetes操作视图(kube-ops-view)


“ K8s集群空间观察器系统面板。”



Kubernetes Operational View具有完全不同的方法:该工具仅使用WebGL显示群集节点和Pod,而没有对象的任何文本详细信息。 在线查看群集状态(“吊舱跌落了吗?”)*非常有用,但不适用于上述支持和事件响应的情况。

* 注意 佩雷夫 :从这个意义上讲,您可能也对我们的grafana-statusmap插件感兴趣,我们将在本文中对其进行详细介绍

Kubernetes资源报告(kube-resource-report)


“收集有关来自Pod和Kubernetes集群的资源请求的信息,将它们与资源消耗进行比较,并生成静态HTML。”



Kubernetes资源报告生成关于集群中团队/应用程序的资源使用和成本分配的静态HTML报告。 该报告对于支持和响应事件很有用,因为它使您可以快速找到在其中部署了应用程序的群集。

注意事项 佩雷夫 :在查看有关云提供商的资源分配及其成本的信息时,我们最近发布Kubecost服务和工具也可能会有用。

Octant


“一个可扩展的Web开发平台,旨在更好地了解Kubernetes集群的复杂性。”



在VMware中创建的Octant是我最近才了解的新产品。 使用它,可以方便地在本地计算机上检查群集(甚至可以看到可视化的图像),但是,它仅在有限的程度上涉及支持和事件响应方面的问题。 八分圆的缺点:

  • 没有集群搜索。
  • 它仅适用于本地计算机(不适用于群集)。
  • 无法排序/过滤对象(仅支持标签选择器)。
  • 您不能指定自定义列。
  • 您不能按名称空间列出对象。

我还遇到了Octant的Zalando群集的稳定性问题:它在某些CRD上崩溃了。

Kubernetes Web View简介


“用于网络的Kubectl。”



在分析了Kubernetes的可用接口选项之后,我决定创建一个新的接口: Kubernetes Web View 。 实际上,实际上,我只需要kubectl在网络上的所有功能,即:

  • 用户喜欢使用kubectl的所有(只读)操作的可访问性;
  • 所有URL应该是永久性的,并以原始形式显示页面,以便同事可以共享它们并在其他工具中使用;
  • 支持所有Kubernetes对象,这将解决任何类型的问题;
  • 资源列表应该可以下载以进行进一步的工作(在电子表格,CLI工具(例如grep )中)和存储(例如,对于事后分析);
  • 支持通过标签选择资源(类似于kubectl get .. -l );
  • 创建各种类型资源的组合列表的能力(类似于kubectl get all ),以在同事之间获得共同的运行状况(例如,在响应事件的过程中);
  • 能够向其他工具(例如仪表板,记录器,应用程序注册表等)添加可定制的“智能”深度链接。 促进故障排除/事件响应;
  • 前端应尽可能简单(纯HTML),以避免出现意外问题,例如冻结的JavaScript;
  • 支持多个集群,以促进远程咨询期间的交互(例如,仅记住一个URL);
  • 如果可能的话,应该简化情况分析(例如,链接到所有群集/名称空间的下载资源的链接);
  • 例如,创建灵活链接和突出显示文本信息的其他机会,以便同事可以指向资源描述中的特定部分(YAML中的行);
  • 适应特定客户端需求的能力,例如,允许您为CRD,表格视图,更改CSS样式创建特殊的显示模板;
  • 用于在命令行上进行进一步研究的工具(例如,显示成熟的kubectl命令已准备好进行复制);

在Kubernetes Web View解决的非目标之外,还有:

  • 抽象Kubernetes对象;
  • 应用程序管理(例如,部署管理,Helm图表等);
  • 写入操作(必须通过安全的CI / CD和/或GitOps工具完成);
  • 漂亮的界面(JavaScript,主题等);
  • 可视化效果(请参阅kube-ops-view );
  • 成本分析(请参阅kube-resource-report )。

Kubernetes Web View如何帮助支持和响应事件?

技术支持


  • 所有链接都是永久的 ,这有助于与同事交换信息。
  • 您可以创建自己的视图 ,例如,在两个特定群集中显示带有特定标签的所有Deployments和Pod(可以在链接中指定多个群集名称和资源类型,并用逗号分隔)。
  • 您可以引用对象的YAML文件中的特定行,以指示对象规范中的潜在问题。



Kubernetes Web视图中的集群搜索

事件响应


  • 全局搜索使您可以搜索所有群集中的对象。
  • 列表视图可以在所有群集中显示具有特定状态/列的所有对象(例如,我们需要找到所有具有“待处理”状态的窗格)。
  • 可以以制表符分隔格式(TSV)格式下载对象列表,以供以后分析。
  • 可定制的外部链接使您可以切换到相应的仪表板和其他工具。



Kubernetes Web View:所有集群中具有待处理状态的Pod列表

如果要尝试使用Kubernetes Web View,建议您熟悉文档或查看实时演示版本

当然,界面可能会更好,但是就目前而言,Kubernetes Web View是面向“高级用户”的工具,他们无需避开必要时手动操作URL路径。 如果您有意见/补充/希望,请通过Twitter联系!

本文简要介绍了创建Kubernetes Web View的前提。 其他人将跟随! 注意翻译 :应该在作者的博客中找到 。)

译者的PS


另请参阅我们的博客:

Source: https://habr.com/ru/post/zh-CN468041/


All Articles