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

news2024/12/23 10:08:02

众所周知,当涉及到管理服务器或 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.coloradmin.cn/o/1403445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet系列:生命周期(init、 service、destroy)详解

Servlet的生命周期是由Web容器(如Tomcat)管理的,包括以下三个阶段: 加载和实例化:当Web应用程序启动时,Web容器会加载和实例化Servlet。加载和实例化过程可以在应用程序启动时自动完成,也可以通…

python爬虫零基础学习之简单流程示例

文章目录 爬虫基础爬虫流程常用库爬虫示例Python技术资源分享1、Python所有方向的学习路线2、学习软件3、入门学习视频4、实战案例5、清华编程大佬出品《漫画看学Python》6、Python副业兼职与全职路线 爬虫基础 网络爬虫(Web Crawler),也称为…

HNU-数据挖掘-实验1-实验平台及环境安装

数据挖掘课程实验实验1 实验平台及环境安装 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验1 实验平台及环境安装实验背景实验目标实验步骤1.安装虚拟机和Linux平台&#xff0c;熟悉Ubuntu环境。2.在Linux平台上搭建Python平台&#xff0c;并安装…

java基础学习: 什么是泛型的类型擦除

文章目录 一、什么是泛型2、泛型编译前和编译后对比3、泛型的优点&#xff08;1&#xff09;提高了代码的复用性和可读性&#xff08;2&#xff09;提高了代码的安全性 二、泛型的定义1、泛型类2、泛型接口3、泛型方法 三、泛型通配符1、&#xff1f;和T有什么区别2、通配符的分…

JOSEF约瑟 零序电流继电器 JL-8D/2X122A4(S) 0-30AAC 220VDC

系列型号 JL-8D/3X1定时限电流继电器&#xff1b;JL-8D/3X111A2定时限电流继电器&#xff1b; JL-8D/3X121A2定时限电流继电器&#xff1b;JL-8D/3X211A2定时限电流继电器&#xff1b; JL-8D/3X221A2定时限电流继电器&#xff1b;JL-8D/3X2定时限电流继电器&#xff1b; JL-8D/…

【开放原子校园行】开发者投身开源项目的能够获得什么?

目录 前言开源软件不仅是免费&#xff0c;更是一种创新和共享的精神开发者投身开源项目的收获番外篇结束语 前言 作为开发者&#xff0c;编程不仅是工作和饭碗&#xff0c;也是兴趣爱好的体现。虽然说有一部分是为了生活才选择了编程开发&#xff0c;但是大部分开发者是因为兴…

文件操作与IO(3)

文件内容的读写--数据流 这里我们将要讲到文件操作中的重要概念--流. 之前也在C语言讲解中提到了文件流的概念---读写文件内容 分为这几步:(1)打开文件;(2)读/写文件;(3)关闭文件. 数据流主要分为字节流和字符流. 字节流:以字节为单位进行读写(代表:InputStream,OutputStrea…

数据结构之使用顺序表写出通讯录

前言 昨天我们踏入了数据结构的深山&#xff0c;并且和顺序表battle了一番&#xff0c;虽说最后赢了&#xff0c;但同时也留下了一个问题&#xff1a;如何从顺序表的增删查改加强到通讯录的的增删查改&#xff0c;别急&#xff0c;今天就带你一探究竟。 一.回顾与思考 我们昨…

二维码地址门牌管理系统:预约安全、智能生活

文章目录 前言一、访客预约功能二、安全性保障三、智慧小区生活 前言 二维码地址门牌管理系统的出现不仅提升了小区的安全性&#xff0c;还为访客提供了更便捷的预约服务&#xff0c;让亲朋好友轻松进入小区。 一、访客预约功能 该系统提供了访客预约功能&#xff0c;业主可为…

【GitHub项目推荐--12306 抢票助手 python】【转载】

这个项目名很干脆&#xff0c;不知道以为是 12306 网站的源码&#xff0c;其实不是这是全 GitHub最德高望重的抢票小助手&#xff0c;功能一直在更新&#xff0c;且现已支持 Python 3.6 以上版本。 开源地址&#xff1a;https://github.com/testerSunshine/12306

安装向量数据库milvus可视化工具attu

使用docker安装的命令和简单就一个命令&#xff1a; docker run -p 8000:3000 -e MILVUS_URL{milvus server IP}:19530 zilliz/attu:v2.3.5sunyuhuasunyuhua-HKF-WXX:~/dockercom/milvus$ docker run -p 8000:3000 -e MILVUS_URL127.0.0.1:19530 zilliz/attu:latest yarn run…

代码随想录 Leetcode1047. 删除字符串中的所有相邻重复项

题目&#xff1a; 代码(首刷自解 2024年1月21日&#xff09;&#xff1a; class Solution { public:string removeDuplicates(string s) {if (s.size() < 2) return s;stack<char> t;for (int i 0; i < s.size(); i) {if (t.empty()) t.push(s[i]);else {if (s[i…

IoC 容器总结

目录 理解 IoC 实现方式 DI 实现原理 Autowired VS Resource 区别 IoC 和 DI 有什么区别 理解 IoC IoC——控制反转&#xff0c;是 Spring 框架的核心概念之一&#xff0c;是一种设计原则和编程模式&#xff0c;用于实现松耦合和可测试的应用程序 控制反转&#xff1a;对…

《二叉树》——1

目录 前言&#xff1a; 二叉树的链式结构 二叉树的遍历 前序遍历&#xff1a; 中序遍历&#xff1a; 后序遍历&#xff1a; 总结&#xff1a; 前言&#xff1a; 从本文开始&#xff0c;将进一步深入学习编程语言思想&#xff0c;从二叉树开始我们将接触许许多多的递归算…

力扣hot100 合并两个有序链表 递归 双指针

Problem: 21. 合并两个有序链表 文章目录 &#x1f496; 递归思路 &#x1f496; 双指针 &#x1f496; 递归 思路 &#x1f468;‍&#x1f3eb; 参考地址 n , m n,m n,m 分别为 list1 和 list2 的元素个数 ⏰ 时间复杂度: O ( n m ) O(nm) O(nm) &#x1f30e; 空间复杂…

力扣62. 不同路径

动态规划 思路&#xff1a; 定义 dp[r][c] 为到达坐标 (r, c) 的路径数&#xff1a; 它只能有同一行左边相邻方格向右到达或者同一列上方相邻方格向下到达&#xff1b;状态转移方程&#xff1a; dp[r][c] dp[r][c - 1] dp[r - 1][c]初始状态 dp[0][0] 1第一行的路径数是 1第…

恒创科技:云服务器配置中的vCPU与物理CPU有啥区别?

​  说到云服务器&#xff0c;您可能经常会遇到vCPU这个词&#xff0c;而且它和物理CPU经常被拿来谈论。尽管它们听起来相似&#xff0c;但两者之间存在显著差异。在本文中&#xff0c;我们将详细讨论云vCPU和物理CPU之间的差异。 物理与虚拟 CPU 和 vCPU 之间最显著的区别在…

【Linux】-对于信号章节补充的知识点,以及多线程知识的汇总

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (II, Python 简单实例)

Title: 非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (II, Python 简单实例) 姊妹博文 非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (I - 原理与算法) 0.前言 本篇博文作为对前述 “非线性最小二乘问题的数值方法 —— 狗腿法…