调教Kubernetes部署的19款工具

随着Kubernetes的发展与改进,许多人都在尝试着运用自己的解决方案,让Kubernetes变得更加易用,同时也能够解决Kubernetes在生产环境中出现的各种常见问题。

调教Kubernetes部署的19款工具

下面我们将要重点介绍19款项目工具,它们分别从简化命令行的交互、应用部署的语法、与AWS的集成、以及在多个集群中新增Windows等方面,来简化Kubernetes。

Bitnami Cabin:适合于iOS和Android的Kubernetes仪表盘

如今的Web应用或服务,都无不为用户提供着各种形式的移动接口。因此,Cabin为Kubernetes管理员提供了一个可以通过使用iOS或Android手机,去访问Kubernetes仪表盘的版本。在Cabin上,您可以用到Kubernetes仪表盘的几乎所有功能,其中包括Helm图表、扩容部署、读取各种pod日志、以及访问由Kubernetes托管的、基于Web的应用程序等。

Goldpinger:可视化的Kubernetes集群

人类是视觉动物,因此图形和图表能让我们更容易掌握全局。而鉴于Kubernetes集群的规模和复杂性,我们更需要有可视化的帮助。

由Bloomberg(彭博)的科技部门带来的Goldpinger,是一款能够运行在Kubernetes的集群中,并以互动视图的形式显示节点间关系的简单工具。在图中,健康的节点被显示为绿色、不健康的则为红色。而节点在被点击时会出现详情信息。您可以通过使用Swagger来定制API,进而添加各种报表、指标、以及对其他集成元素进行滚动操作。

Kedge:简明的Kubernetes部署定义

有过开发经验的读者一定知道,针对Kubernetes最常见的抱怨莫过于其本身的复杂性、冗长的清单(manifests)、以及应用的各种定义。而对它们的写操作、以及维护,则更是让人苦不堪言。作为第三方工具,Kedge提供了更简单、更简洁的语法。您只需要提供Kubernetes定义文件的简单版本给Kedge,它就能将这些简单定义,扩展成为相应的Kubernetes全量定义。不像下文将要提到的Koki Short,Kedge并不会为了其定义文件而使用模块化的语法,它只是将各种应用定义归结成了各种常见的快捷方式。

Koki Short:可管理的Kubernetes清单

类似于上面提到的Kedge,Koki Short项目旨在改进Kubernetes中应用定义的方式和清单。同样类似于Kedge的定义,Short能够将那些使用缩略语法来描述的各种Kubernetes pod,翻译成对应的全量语法。不过,与Kedge定义的不同之处在于:Short的定义是模块化的。这就意味着某个Short定义可以被重用到他处,因此带有共同元素的多个pod可以得到简单定义。

Kops:Kubernetes集群的命令行ops

由Kubernetes团队开发的Kops能够让您通过命令行来管理Kubernetes集群。同时,它能够支持运行在AWS和GCE(译者注:Google Compute Engine)上,以及在VMware的vSphere和其他环境中的集群。除了能够自动化地安装与拆分各种进程之外,Kops还有助于实现其他类型的自动化。例如:它可以生成Terraform配置,以允许某个集群通过使用Terraform,来被重新部署。

Kubebox:Kubernetes的终端控制台

针对Kubernetes的高级终端控制台—Kubebox,不仅能够提供Kubernetes的shell及其API,还能提供CPU与内存的利用率、Pod列表、运行日志和各种配置编辑器。而且最重要的是,它可以作为一种支持Linux、Windows和MacOS的独立应用提供服务。

KubeDB:运行在Kubernetes中的数据库

由于各种原生的Kubernetes功能集,并没有真正解决与数据库相关的大量具体问题,因此数据库一般很难能够在Kubernetes中“优雅”地运行。

而KubeDB却能够允许管理员创建各种用来管理数据库的Kubernetes operator。它们可以执行备份、克隆、监控、快照、以及创建各种数据库。不过,它只能在部分数据库上(如PostgreSQL,而非MySQL)支持集群。。

Kube-monkey:Kubernetes的Chaos Monkey

对系统进行压力测试的一种最保险的方法是对它随机“施压”。这就是Netflix的Chaos Monkey背后的理论(请详见https://github.com/Netflix/chaosmonkey)。该混乱引擎工具,能够随机终止生产环境中的各种虚拟机和容器,以“鼓励”开发人员构建出各种更灵活的系统。根据对于Kubernetes集群的压力测试基本理念,Kube-monkey能够通过在指定的集群中随机终止pod,从而在特定的时间窗口内进行各种调优操作。

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

Kube-ps1并非Sony PlayStation为Kubernetes开发的第一代模拟器。它可以通过Bash的命令行显示当前Kubernetes的上下文和命名空间。Kube-shell虽然包含许多功能,但它也给系统带来了一定的开销。

Kube-prompt:交互式Kubernetes客户端

另一款对于Kubernetes CLI实施的最小却又十分有用的修改是Kube-prompt。它允许您设定需要与Kubernetes客户端进行交互式命令的会话数量。它省去了您在每一个命令不得不前添加的kubectl前缀,而且它能够根据每个命令的上下文信息进行参数自动补足。

链接:

Kube-shell:Kubernetes CLI的shell

Kube-shell将标准的Kubernetes命令行集成到了一个shell之中,进而提供各种具有自动完成和自动提示的公共命令。同时,它也能为您提供强大的命令历史记录功能,vi风格的编辑模式,与用户、命名空间、集群相关的上下文信息,以及其他特定的安装细节。

Kubespy:对Kubernetes资源的实时监控

Pulumi的Kubespy是一种诊断工具,它允许您跟踪Kubernetes资源的实时变化。同时,它也能够为您提供一种文本视图的仪表盘界面。例如,您可以在pod启动时,观察其状态的变化。即:pod定义被写入Etcd -> pod被调度到一个节点上 -> 该节点的Kubelet创建pod -> pod终于被标记为运行的状态。Kubespy既可以作为一个独立的二进制文件被运行,有可以作为Kubectl的插件。

AWS的Kubernetes Ingress Controller

Kubernetes通过一个名为Ingress的服务(请参见https://kubernetes.io/docs/concepts/services-networking/ingress/),向集群提供外部的负载均衡和各种网络服务。虽然Amazon Web Services本身就能够提供负载均衡功能,但是它不会将这些服务与Kubernetes的设施进行自动相连。AWS的Kubernetes Ingress Controller正好填补了该缺口。Ingress Controller能自动管理群集中每个Ingress对象的AWS资源,为新的入口资源创建负载均衡器,删除已去除资源的负载均衡器,并利用AWS CloudFormation实现群集的一致性。另外,它还能自动管理集群中正在使用的,诸如SSL证书和EC2自动扩展组(Auto Scaling Groups)之类的其他元素。

Kube-ops-view:多个Kubernetes集群的仪表盘

Kubernetes为通用监控提供了一种实用的仪表盘,但是Kubernetes社区却致力于用其他方式,向Kubernetes管理员提供更加有用的数据。Kube-ops-view就是其中的一种方式。它能够一站式地以图形方式呈现多个Kubernetes集群的全貌,因此您可以一眼了解到集群中的CPU和内存使用率,以及各种pod的状态。虽然它不允许您去调用任何指令,但是其高效、完善的可视性很适合被投影到运营中心的大屏幕上。

Skaffold:为Kubernetes进行迭代开发

Skaffold是Google针对Kubernetes各种应用的持续部署,而打造的一款工具。当您在变更源代码的同时,Skaffold会自动检测它们,或是直接触发构建和部署的过程,或是根据各种错误接口向您发出警告。Skaffold完全可以运行在用户的客户端上。它既可以在现有的CI/CD管道中被使用,又可以与Bazel之类的外部构建工具相集成。

Stern和Kubetail:Kubernetes的日志跟踪

Stern能够根据tail命令,为您生成有关Kubernetes pod和容器的不同颜色输出。它方便了用户通过单一数据流,一站式地了解来自多个资源的输出。

类似Stern,Kubetail也能够将来自多个pod的日志聚合成单个数据流,并以不同的颜色来表示各种pod与容器。Kubetail使用的是Bash脚本,因此它需要有一个shell环境。

Teresa:Kubernetes上的简单PaaS

Teresa是一款能够在Kubernetes上,作为简单PaaS运行的应用程序部署系统。它的用户可以在平台上部署和管理属于自己的应用。这对于那些只想关注特定应用,而无想法与Kubernetes直接打交道的人来说,提供了极大的便利。

Tilt: Kubernetes集群的流式容器更新

相关推荐