Kubernetes的kubebox和其他控制台外壳



一年前,我们已经为Kubernetes 撰写过“控制台助手”的文章,甚至在更早的时候也对其他有用的工具进行了概述 。 但是,随着K8及其社区的发展,相关的生态系统也发生了变化。 因此,我们再次有话要告诉控制台的支持者。 走吧

kubebox


  • GitHub (超过400星)
  • 语言:JavaScript(Node.js)
  • 执照:麻省理工学院

该项目是撰写评论的原因。 一方面,他是“极客为极客做的”软件类别的杰出代表,但另一方面,他已经成长为不仅可以取悦眼睛,而且还带来了实际好处的点...

因此,kubebox的目的是与Kubernetes完全兼容,作为以伪图形形式呈现的便捷控制台界面的一部分:

图片

工作意味着诸如以下功能:在命名空间中通过Pod导航,查看日志甚至是关键资源(CPU,内存,网络)的消耗图,容器中命令的远程执行。 可以从环境变量KUBECONFIG$HOME/.kube配置获取用于连接集群的设置。

开发人员的进一步计划包括支持编辑配置和执行CRUD操作,以及对界面进行重大的重新设计以支持新型原语(服务,部署等),并通过输出附加信息(特别是kubectl describe pod )在其上进行便捷导航。

一个重要功能是在线版本的可用性(要连接到Kubernetes API服务器,您将需要允许的cors-allowed-origins )。 此外,kubebox可以作为单独的可执行文件,作为集群内客户端(通过kubectl)启动,也可以从Kubernetes或OpenShift集群中部署的服务启动( Xterm.js用于模拟终端)。

近两年来,来自法国的Red Hat员工一直在开发kubebox(确切地说,不到10%的承诺是由他的同事做出的)。 该项目仅在上个月(在Reddit和许多其他资源上)得到了足够广泛的宣传,因此可以预期,这将为其发展带来新的动力。

kube-shell和kube-prompt


壳壳


  • GitHub (950+星)
  • 语言:Python
  • 许可证:Apache 2.0


(注意,这〜2 Mb GIF!)

kube提示


  • GitHub (700多个星)
  • 语言:转到
  • 执照:麻省理工学院



一年前,我们已经写过关于这些项目的文章,那时,它们是与Kubernetes一起使用的成熟控制台外壳中无条件的收藏。 两者都定位为kubectl的改进(更易于使用)接口。 在kube-shell中,他们使用用于Python的提示工具包库,并在kube-prompt中使用并在Go( go-prompt )上开发了类似的库。

如果将它们与kubebox进行比较,则该界面不是基于伪图形,而是基于用于输入命令的常规控制台(请参见上面的屏幕截图) ,但是它会伴随着非常有趣的“特殊效果”:使用命令的工具提示,便捷的自动添加和等

尽管支持的功能范围很广(包括已经提到的已开发的提示和自动完成系统,搜索命令的历史记录以及类似于vi的编辑模式),但kube-shell中提交历史记录表明该项目的速度明显下降。 今年只记录了七次提交,其中两个是README修改。 尽管有一些有用的功能,例如, 期待已久 的对 KUBECONFIG变量的支持 。 一种或另一种方式是,开发人员对用户相关查询的持续缺乏反应(请参阅问题 )不会激发适当的前景。

随着kube-prompt的发展,情况似乎略有好转。 尽管该项目在GitHub上获得的星标较少(如果一年前比其Python竞争对手稍微领先,但现在已经明显落后),提交或多或少地定期出现,最新版本( 1.0.5 )的日期为10月18日。 但是,在过去的一年中,变化不大,我们注意到对Kubernetes 1.11版的支持以及对名称空间进行自动补全的可能性。 最主要的是,作者本人承认不可能花足够的时间来开发kube-prompt,并且正在寻找帮助者。

总结这两个项目的结果,我们可以说kube-shell在支持功能方面保持了领导地位,并继续流行,但是对于这两个shell的前景,一切还不清楚。 但是,如果您对它们现在的工作方式感到满意,则没有理由不使用它们,因为 没有出现类似设计的其他替代方案。

请点击


  • GitHub (750+星)
  • 语言:Rust
  • 许可证:Apache 2.0

Click是一个相当年轻的项目:3月底以beta形式展示了它,并且以它自己的方式非常有趣。 它的概念归结为在REPL循环中使用kubectl,它通过保持恒定的环境使生活更轻松。 后者是单击以“记住”当前上下文,名称空间,其下的名称等,提示用户对给定资源执行所需的命令,而不必重新指定整个“路径”。



该项目的想法起源于Databricks公司,在那里他们积极使用Kubernetes,并且厌倦了观察使用kubectl的相同场景,这需要不断引入以前的数据。 同时,kubectl实用程序本身(就像一般的控制台一样)在工程师中非常受欢迎。 因此,出现了这个插件,并不是声称要替换kubectl,而是只是帮助使用它。 Click的示例用例是:

pods //
2 //
describe //
events //
logs -c foo > /tmp/podfoo.log //
delete // ( )


如果您有兴趣,还可以观看一个小屏幕录像,演示Click的文字注释工作。

处理日志


作为奖励-不是外壳,而是用于在Kubernetes中处理日志的控制台工具。 一年前,我们仅提及k8stail ,但是过去的时间表明问题是相关的,还有其他解决方案值得关注。

船尾


  • GitHub (〜1300星)
  • 语言:转到
  • 许可证:Apache 2.0

斯特恩(Stern)是Kubernetes类别中无可争议的最爱。 为了清楚起见,在显示日志时,将使用不同的颜色代码:



另一个重要功能是使用正则表达式方便地过滤炉膛,而无需知道特定的ID(例如,选择名称为web-\w+ )。 同样(即正则表达式),您可以过滤请求的广告连播的特定容器。 船尾的其他功能包括:

  • 支持用于输出日志的自定义Go模板(默认情况下有几个预定义);
  • 支持标签选择器;
  • 将日志输出限制为指定的时间值- --since和/或指定的行数;
  • 支持bash和zsh的自动完成,以及动态替换名称空间和上下文的值。

Kubetail


  • GitHub (〜950星)
  • 语言:贝壳
  • 许可证:Apache 2.0

类似的解决方案,用常规的Bash编写,并在去年更加积极地开发了。 像船尾一样,它支持突出显示炉床的名称(或可自定义的整行):



它还允许您通过全名和正则表达式过滤pod和容器,并使用选择器,将输出限制为时间和行数,并支持Bash,zsh和fish的自动完成。 其他功能:

  • 禁用模式- --follow实时更新日志中的数据(如tail -f );
  • --dry-run以显示合适的容器和容器的列表,而无需执行任何其他操作;
  • jq选择器支持解析JSON中的输出。

凯尔


  • GitHub (〜500星)
  • 语言:转到
  • 执照:麻省理工学院

过去一年中,代码库中活动最少的另一个实现。 但是,它具有不同于竞争对手的有趣功能,即:

  • 通过其服务,ReplicationController,ReplicaSet,Deployment,Node和/或Ingress的名称(例如,属于指定Ingress所引导服务的服务的壁炉)的名称限制壁炉的要求;
  • 不仅可以通过选择器进行选择,还可以排除选择器;
  • 确定日志记录级别( --log-level )。



但是也有缺点:kail不会用颜色突出显示窗格,不支持过滤器的正则表达式。

聚苯乙烯


感谢您的关注,当然,我们很高兴在评论中听到您的发现!

另请参阅我们的博客:

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


All Articles