
一年前,我们已经为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提示

一年前,我们已经
写过关于这些项目的文章,那时,它们是与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中的输出。
凯尔
过去一年中,代码库中活动最少的另一个实现。 但是,它具有不同于竞争对手的有趣功能,即:
- 通过其服务,ReplicationController,ReplicaSet,Deployment,Node和/或Ingress的名称(例如,属于指定Ingress所引导服务的服务的壁炉)的名称限制壁炉的要求;
- 不仅可以通过选择器进行选择,还可以排除选择器;
- 确定日志记录级别(
--log-level
)。

但是也有缺点:kail不会用颜色突出显示窗格,不支持过滤器的正则表达式。
聚苯乙烯
感谢您的关注,当然,我们很高兴在评论中听到您的发现!
另请参阅我们的博客: