Kubernetes已经成为大规模部署经过编辑的应用程序的标准方法(许多人会说这是标准方法)。但是,如果Kubernetes可以帮助我们控制无序和复杂的经编辑的部署,那么有什么方法可以帮助我们控制Kubernetes呢?毕竟,它也可能是复杂、混乱和难以管理的。

 

随着Kubernetes的成长和演变,它的一些过度行为很可能会从内部得到控制。但是有些人并没有等到Kubernetes变得更容易使用,而是对生产中Kubernetes的许多常见问题推出了自己的解决方案。

 

在这里,我们重点介绍10个以各种方式简化Kubernetes的项目,从简化命令行交互,到简化应用程序部署语法,再到与AWS集成,再到为多个集群提供一个窗口。

 

目 录

 

  • Bitnami Cabin:适用于iOS和Android的Kubernetes面板

  • Kedge:简明的Kubernetes部署定义

  • Koki Short:可管理的Kubernetes密钥清单

  • Kops:Kubernetes集群的命令行操作

  • Kubebox:Kubernetes的终端控制台

  • Kube-monkey:Kubernetes的Chaos Monkey

  • Kube-ps1:智能Kubernetes命令提示符

  • Kube-prompt:交互式Kubernetes客户端

  • Kube-shell:用于Kubernetes CLI的shell

  • Kubespy:实时监控Kubernetes资源

  Bitnami Cabin:适用于iOS和Android的Kubernetes面板

 

任何现代web应用程序或服务都应该具有某种移动界面。Cabin为Kubernetes管理员提供了一个版本的Kubernetes面板,可以通过iOS或Android智能手机访问。整个Kubernetes面板中提供的许多功能都可以从Cabin启动,包括Helm图表,扩展部署,读取pod日志以及访问Kubernetes托管的基于Web的应用程序。

 

Kedge:简明的Kubernetes部署定义

 

关于Kubernetes最常见的抱怨是它的清单(或应用程序定义)是多么复杂和冗长。编写它们是一件痛苦的事情,维护它们也是一件痛苦的事情,所以人们求助于第三方工具来缓解也就不足为奇了。Kedge提供了更简单、更简洁的语法。向Kedge提供了Kubernetes定义文件的简单版本,Kedge将该简单定义扩展为完整的Kubernetes对应文件。与Koki Short(见下文)不同,Kedge的声明文件不使用模块化语法,它只是将应用程序定义简化为通用的快捷方式。

 

Koki Short:可管理的Kubernetes密钥清单

 

Koki Short类似上述的Kedge是一个改进应用程序定义或清单在Kubernetes中工作方式的项目。像Kedge定义一样,Short定义使用缩写的语法来描述Kubernetes pod,它可以被翻译成完整的语法,然后再返回。与Kedge定义不同,Short定义也是模块化的,这意味着一个Short声明中的细节可以在其他声明中重用,这样就可以简单地定义具有公共元素的许多pod。

 

Kops:Kubernetes集群的命令行操作

 

Kops由Kubernetes团队开发,允许您从命令行管理Kubernetes集群。它支持在AWS和GCE上运行的集群,VMware vSphere和其他环境也在开发中。除了自动设置和拆卸过程之外,Kops还可以帮助实现其他类型的自动化。例如,它可以生成Terraform配置,从而允许使用Terraform重新部署集群。

  Kubebox:Kubernetes的终端控制台

  Kubebox是Kubernetes的高级终端控制台,它为Kubernetes及其API提供的不仅仅是一个美化的命令行。它提供内存和CPU利用率的交互式显示、pod列表、运行日志和配置编辑器。最重要的是,它可以作为Linux、Windows和MaciOS的独立应用程序使用。     Kube-monkey:Kubernetes的Chaos Monkey

 

对一个系统进行压力测试的一种万无一失的方法是随机打碎东西。这就是Netflix的Chaos Monkey背后的理论,这是一种混沌工程工具,可以随机终止生产中运行的虚拟机和本地编辑,以“鼓励”开发人员构建更具弹性的系统。Kube-monkey是对压力测试Kubernetes集群的相同基本思想的实现。它的工作方式是在你指定的集群中随机破坏pod,并且可以在特定的时间窗内进行微调。

 

Kube-ps1:智能Kubernetes命令提示符

  Kube-ps1不是面向Kubernetes的第一代索尼PlayStation仿真器(尽管这很棒)。它是Bash的一个简单添加,在提示符中显示当前的Kubernetes上下文和名称空间。Kube-shell包括这个功能以及许多其他功能,但是如果您只想要更智能的提示符,Kube-ps1所需开销很小。

 

Kube-prompt:交互式Kubernetes客户端

 

Kubernetes CLI的另一个最小但有用的修改是Kube-prompt,它允许您与Kubernetes客户机输入相当于交互式命令会话的内容。Kube-prompt使您不必输入kubectl作为每个命令的前缀,并为每个命令提供上下文信息自动完成。

 

Kube-shell: Kubernetes CLI的Shell

 

Kubernetes命令行功能强大,但与任何命令行应用程序一样,选择它的选项可能非常繁琐。Kube-shell将标准的Kubernetes命令行包装在一个集成的shell中,该shell提供常见命令的自动完成和自动建议,包括Kubernetes服务器提供的建议(例如服务名称)。它还提供了更健壮的命令历史记录函数、vi风格的编辑模式,以及用户、名称空间、集群和其他特定于安装的详细信息的运行上下文信息。  

Kubespy:实时监控Kubernetes资源

 

Pulumi的Kubespy是一个诊断工具,它允许您实时跟踪Kubernetes资源的变化,为您提供一种动态的文本视图面板。例如,您可以在启动pod时查看pod状态的更改:将pod定义写入Etcd,计划在节点上运行pod,在创建pod的节点上运行Kubelet,最后将pod标记为running。Kubespy可以作为独立的二进制文件运行,也可以作为Kubectl的插件运行。

 

AWS的Kubernetes入口控制器

 

Kubernetes通过名为Ingress的服务向集群提供外部负载平衡和网络服务。Amazon Web Services提供负载平衡功能,但不会自动将这些服务与Kubernetes的功能进行耦合。AWS的Kubernetes入口控制器弥补了这一差距。入口控制器自动管理集群中每个入口对象的AWS资源,为新的入口资源创建负载平衡器,为已删除的资源删除负载平衡器,并利用AWS云形成来确保集群的一致状态。它还自动管理集群中使用的其他元素,如SSL证书和EC2自动伸缩群。    

kube - os -view:用于多个Kubernetes集群的面板  

Kubernetes有一个用于通用监视的有用面板,但是Kubernetes社区正在尝试使用其他方法向Kubernetes管理员提供有用的数据。Kube-os-view就是这样一个实验:它提供了多个Kubernetes集群的概览视图,以图形化的方式呈现,因此您可以一眼看到集群中pod的CPU和内存使用情况以及状态。注意,它不允许您调用任何命令,这完全是为了可视化。但是它提供的可视化效果是惊人的和有效的,这是可与操作中心的壁监视器完美结合。

 

Skaffold: Kubernetes的迭×××发

  Skaffold是谷歌为Kubernetes开发的工具之一,是一种为Kubernetes应用程序执行连续部署的方法。当您对源代码进行更改时,Skaffold会自动检测它们,触发构建和部署流程,并在出现错误时警告您。Skaffold完全在客户端运行。它可以在现有的CI/CD渠道中使用,并与一些外部构建工具集成,主要是谷歌自己的Bazel。  

Stern和Kubetail: Kubernetes的日志跟踪

 

Stern允许您从Kubernetes中的pod和本地编辑中生成颜色编码的输出(根据tail命令)。这是一种将多个资源的所有输出管道传输到一个可以一眼读取的流中的快速方法。同时,您有一种一目了然的方法(颜色编码)来区分流。

 

Kubetail类似地将来自多个pod的日志聚合到单个流中,并对不同pod和本地编辑进行颜色编码。但是Kubetail是一个Bash脚本,因此它只需要一个shell。

 

Teresa:Kubernetes的简单PaaS

 

Teresa是一个应用程序部署系统,在Kubernetes上作为简单的PaaS运行。组织成团队的用户可以部署和管理属于他们的应用程序。这使那些受给定应用程序信任的人更容易使用它,而不必直接处理Kubernetes。