Kui: 一个用于 Kubernetes 的“混合”CLI/GUI 应用程序

众所周知,当涉及到管理服务器或 Kubernetes 集群之类的事情时,我们大多数人更喜欢使用我们心爱的终端而不是 GUI 工具。对于许多人来说,这就像驾驶一辆带有手动变速箱的汽车:简单、舒适、灵活且更可预测。Kui 是一个混合界面工具,旨在增强经典的终端体验。

该程序被作者称为“带有 GUI 扭曲的 CLI”,作为用于管理 Kubernetes 集群的 GUI 增强型 CLI 界面进行销售。该项目进展相当迅速,尽管开发仅由一个人(Nick Mitchell)执行。目前,它在 GitHub 上有超过 2,100 颗星。Kui 存储库最近已从 IBM 存储库迁移到 K8s 社区的 kubernetes-sigs 全局存储库(所谓的特殊兴趣小组,SIG)。

安装和浏览界面

Kui 是一个跨平台应用程序,其版本可用于 macOS、Linux 和 Windows。您也可以从源代码构建它。它在引擎盖下有 Electron 框架,并作为单个预构建的二进制文件发布。阅读此处以了解有关安装 Kui 的更多信息。

乍一看,Kui 和大多数终端一样。有一个选项可以在顶部的选项卡之间切换,还有一个按钮可以将当前选项卡拆分为垂直和水平子窗口。右下角有一个下拉菜单,用于选择感觉和外观主题、帮助按钮和通知区域。

Kui 界面的特别之处在于,每个输入的命令都不是典型的终端行,而是一个带有用于输入命令的字段的面板

当您将鼠标悬停在面板上时,会出现一个菜单,允许您复制命令、它产生的结果或指向它的链接(我们将在后面讨论该功能)。

Kui 可以在终端中处理不同的文件格式。例如,图像可以在默认查看器中打开。您还可以使用内置编辑器打开和编辑文本文件。此编辑器提供了操作文本文件所需的最小功能集。例如,有行编号,您只需单击所需的文本块即可定位光标。在右上角,有一组典型的按钮,用于保存更改、取消上次操作和清除文档内容。

该选项卡可以拆分为垂直和水平子窗口(取决于子窗口的数量)。但是,默认情况下,您无法更改子窗口的大小和布局。它们的大小与主窗口的大小成比例地变化。每个子窗口的右上角都有用于反转背景、清除内容和关闭子窗口的按钮。

htop、cd、ls 命令, 打开包含图片的目录, 使用选项卡

Kui 和 Kubernetes

现在让我们谈谈在 Kubernetes 中使用这个“终端”。Kui 既可以作为独立应用程序运行,也可以作为插件运行(例如,通过在终端中键入)。对 Kubernetes 集群的访问是使用该文件组织的。此外,上下文切换在应用程序本身中可用。kubectl kuikubectl kui get namespacekubeconfig

我们需要一个 K8s 集群来熟悉 Kui。为此,我将使用 minikube 和通过 Helm 图表部署的 WordPress 应用程序。您还可以同时将多个 Kubernetes 集群连接到 Kui。在这种情况下,底部菜单允许您在它们之间切换。当前目录和 Kubernetes 上下文显示在窗口的左下角(您可以轻松地在命名空间之间切换)。

使用 Kubernetes 时,KUI 最显着的特性是应用程序将关键的 Kubernetes 资源显示为表和选项卡。例如,您可以使用命令列出特定集群中的命名空间(也可以使用较短的别名),然后通过 GUI 使用集群资源。每个命名空间旁边都有一个彩色方块,用于显示其状态:如果删除命名空间,其方块的颜色将从绿色变为蓝色。kubectl get namespacesk

Kui 和命名空间

Kui 接口基于向下钻取方法;也就是说,它从全局视图开始,然后将焦点缩小到逐渐变小的元素:

  • 选择目标命名空间(例如,)后,在同一窗口中会自动打开一个选项卡。此选项卡有一个包含命令的面板。wp-kuikubectl get namespace wp-kui -o yaml
  • 此面板下方有一个带有选项卡的菜单:
    • 摘要 — 命名空间的名称、状态和运行时间;
    • Resources — 主要的命名空间资源:Pod、Service、Deployment、ReplicaSet、StatefulSet,以及它们的数量。这与你得到的输出基本相同kubectl -n namespace get all;
    • 注释(并非在所有名称中);
    • 标签;
    • 上次应用(此选项卡在系统命名空间中不存在);
    • YAML — 命名空间的清单。可以编辑此清单。

“资源”选项卡

YAML 选项卡

使用选项卡和处理其内容的一般过程大致如下:


类似的向下钻取方法也适用于其他 Kubernetes 实体。例如,您可以转到 Resources 选项卡并选择感兴趣的资源(例如,Pod)。在这种情况下,带有该命令的面板将显示在子窗口中,以及该命名空间中的一组 Pod。该菜单以文本和图形形式包含 Pod 名称及其状态(由不同颜色的方块组成的网格,后跟 Pod 状态)。kubectl get pod -n namespace

Pod 状态的图形表示可以方便地以紧凑的方式显示有关具有大量 Pod 或资源的命名空间的统计信息。例如,你可以很容易地看到一个 Pod 的状态为 。如果你点击它:CrashLoopBackOff

  • 将出现一个包含该命令的面板以及一个菜单窗口,其中包括以下选项卡:kubectl get pod nameOfPod -o yaml -n namespace
    • 摘要 — 关键参数,例如状态、副本中正在运行的 Pod/Pod 数量、状态、重启、年龄、IP、节点等;
    • 标签;
    • 日志 ― Pod 主容器的日志(诊断问题最有用的信息);
    • 终端 — 执行到容器 CLI 的选项;
    • 带有清单的 YAML 选项卡;
  • 此外,底部菜单上还有按钮:
    • 显示事件 ― 显示与资源相关的事件;
    • Show Owner Reference — 对于 Pod,这是它拥有的 ReplicaSet;对于 ReplicaSet,这是一个 Deployment 实体;
    • Show Node — 有关当前运行 Pod 的主机的信息。

该界面的设计使有关 K8s 实体的信息显示在新的菜单子窗口(在上一个窗口下方)中。您可以使用命令面板的弹出子菜单关闭不再需要的窗口/面板。

在 Kui 中管理 Pod(文本和图形显示)

笔记本

另一个很酷的 Kui 功能是将您的所有操作保存在笔记本中。打开这样的笔记本将打开一个选项卡,其中包含您在保存之前执行的所有命令面板。这些命令的输出菜单窗口可以最大化。同时,Kui 不会跟踪命令输出窗口中的选项卡。

例如,可以使用笔记本创建教程。Kui 发行版在安装后会立即提供其中的几个 Kubernetes 教程。例如,Kui 帮助以笔记本格式显示。

此类指南是交互式的,因为您可以直接从笔记本运行命令。此外,您可以将窗口拆分为具有自定义背景颜色的多个水平和垂直子窗口。请注意,Kui 将命令面板中以 # 开头的行视为注释。您还可以插入使用命令输入面板左侧的链接按钮复制的 kui-link 链接。Kui 支持使用命令从 Markdown 文件加载注释,以便更轻松地编写文本注释。commentary -f /path/to/file

此外,Kui 笔记本还可用于创建用于监视或管理群集的仪表板。Kui 发行版中包含一个示例仪表板。您可以将其用作创建针对您的集群量身定制的自定义仪表板的基础:

Kui 仪表板示例

定制 Kui

默认情况下,Kui 支持更改主题和调整字体大小。幸运的是,您可以创建自定义 Kui 版本。在其中,您可以自定义视觉(字体大小、图标、主题)和功能元素(使用插件)。GitHub 上有一个 wiki 涵盖了 Kui 自定义。

虽然 Kui 正在积极向 Kubernetes 集成发展,但这并不是该工具的唯一用例。它在引擎盖下有一个成熟的基于 CLI 的平台。执行某些命令可能会导致图形输出。例如,该命令将命名空间显示为带有多色方块的图形表,其中每种颜色表示特定状态。kubectl get ns

本文仅讨论默认安装的插件。但是,Kui 还有其他几个现成的插件:、 和 。kubectls3iter8git

最终印象

在撰写本文的过程中,我在具有多个环境和资源的生产集群上测试了 Kui。在具有 ~80 个命名空间的集群中,该命令的运行速度比其终端命令稍慢,但在舒适的限制范围内。主要缺点是默认设置数量有限。kubectl get ns

在我看来,Kui 是第一次深入了解 Kubernetes 世界的好地方。结构良好的界面和逻辑排列的菜单选项卡使人们易于理解群集资源层次结构。复制控制台命令的 UI 操作可加速 Kubernetes 命令语法的学习。一些有用的附加功能也值得一提,例如将资源的状态显示为彩色方块(其中方块颜色取决于具体状态)。这种方法可以更轻松地评估群集的状态,并加快故障排除诊断速度。

创建笔记本和仪表板的能力看起来特别吸引人:将它们用于不同目的具有明显的巨大潜力。

Kui 当然不是第一个使 Kubernetes 更易于使用的 CLI 工具(例如,我想到了 k9s)。然而,Kui 与其他类似工具的不同之处在于它不仅限于经典的终端功能。该工具在控制台界面中填充了有用的图形元素,增强了典型的终端体验。同时,它坚持其控制台根源,而不会变成像 Lens 这样的 GUI 应用程序。这是好的一面还是坏的一面,由你来决定。

结论

Kui 通过 GUI 功能丰富了良好的旧终端体验,让您从不同的角度了解它。

在我写这篇文章的时候,我收到了几次可用更新的通知。该项目的积极发展增加了人们的信念,即它的弱点将被消除,而混合界面背后的概念将继续得到改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422688.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大尺寸产品外径难实时测量?请看大直径测径仪系列!

在生产大口径螺旋焊管、无缝管材、直缝焊管等产品时,是否遇到过这样的问题,人工检测速度慢,精度低,易漏检,在线检测仪器又难以达到测量范围,或者价格过于昂贵。别急,我们的测径仪系列能为你解决…

java实现将集合数据导入excel表格之竖向

这里使用的是apache.poi,当然如果使用easyExcel也可以实现 括号是EasyExcel官网(EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel) 找到填充,都会有相对应的demo实列 下面是我写的apache.poi实现代码 public static vo…

Visual Studio 2022 成功配置QT5.12.10

目录 下载并安装Visual Studio 2022 Qt5.12.10下载 Qt5.12.10安装 Qt VS Tools for Visual Studio 2022下载 Visual Studio 2022配置 测试 下载并安装Visual Studio 2022 下载社区版并安装,这个比较快。 Qt5.12.10下载 官网下载很慢,还不如百度网…

退出微软账号,edge/必应退出账号

微软账号退出:搜的教程都是说改成本地帐号,但是我的已经是本地帐号,操作没用。 但是找到了退出edge/必应浏览器账号的方法,见下图。 参考链接:奶酪真好次个人动态-奶酪真好次动态记录-哔哩哔哩视频 (bilibili.com)

【LeetCode】每日一题 2024_1_21 分割数组的最大值(二分)

文章目录 LeetCode?启动!!!题目:分割数组的最大值题目描述代码与解题思路 LeetCode?启动!!! 今天是 hard,难受,还好有题解大哥的清晰讲解 题目&a…

接口自动化测试框架开发(pytest+allure+aiohttp+ 用例自动生成)

近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越…

统计灰度图像的灰度值分布并绘制

1、numpy方法 函数: numpy.histogram(a, bins10, rangeNone, normedNone, weightsNone, densityNone) 参数说明: a:输入数据数组;bins:指定统计的区间个数,可以是一个整数,也可以是一个数组,默认值为10…

【Linux】vim的使用

个人主页 : zxctsclrjjjcph 文章封面来自:艺术家–贤海林 如有转载请先通知 目录 1. 前言2. vim的基本概念3. vim的基本操作4. vim正常模式命令集4.1 命令模式4.1.1 光标定位 4.2 插入模式4.3 底行模式 这个是在网上找的一张关于vim键盘的图 1. 前言 …

Summerize for Bioinformatics with ChatGPT

目录 Basic Introduction Historical Events Bioinformatics vs. Computational Biology Levels of Bioinfo & CompBio Molecular Biology Primer Homework 1 A brief Introduction to DNA & RNA A brief Introduction to Protein Sequencing Technologies S…

3d效果图的应用场景和3d渲染的发展前景

3D效果图一直都是视觉行业非常重要的一部分,它在不同领域都有广泛应用,通过效果图,设计师能够准确展示设计方案,方便沟通。本文将深入分析3D效果图在不同场景中的应用和未来发展趋势。 一、3D效果图的应用场景 1、建筑领域 在建筑…

Qt —— 自定义飞机仪表控件(附源码)

示例效果 部署环境 本人亲测版本Vs2017+Qt5.12.4,其他版本应该也可使用。 源码1 qfi_ADI::qfi_ADI( QWidget *parent ) :QGraphicsView ( parent ),m_scene ( nullptr )

HCIP之BGP联邦实验

华子目录 实验拓扑及要求规划网段和IP地址实验步骤配置IP地址先让IGP通建BGP邻居修改ospf下环回接口网络类型修改联邦之间的最大跳数每台运行BGP的路由器批量宣告路由修改本地下一跳测试 实验拓扑及要求 规划网段和IP地址 实验步骤 配置IP地址 r1配置,依次类推 […