调教Kubernetes部署的19款工具

栏目: 编程工具 · 发布时间: 5年前

内容简介:【51CTO.com快译】如今,Kubernetes已成为了业界一种调整与部署容器化应用的标准方式。不过对于非资深的开发人员而言,Kubernetes实在是太复杂、太混乱、也太难管理了。如果说Kubernetes能够帮助我们调教(调整)庞大而复杂的容器部署,那么谁有来帮助我们调教Kubernetes呢?随着Kubernetes的发展与改进,许多人都在尝试着运用自己的解决方案,让Kubernetes变得更加易用,同时也能够解决Kubernetes在生产环境中出现的各种常见问题。

【51CTO.com快译】如今,Kubernetes已成为了业界一种调整与部署容器化应用的标准方式。不过对于非资深的开发人员而言,Kubernetes实在是太复杂、太混乱、也太难管理了。如果说Kubernetes能够帮助我们调教(调整)庞大而复杂的容器部署,那么谁有来帮助我们调教Kubernetes呢?

随着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集群的流式容器更新

由Windmill Engineering开发的Tilt,能够通过实时监控Dockerfiles的变更,然后将这些变更逐步部署到某个Kubernetes集群中所对应的容器上。从本质上讲,它允许开发人员通过只更新Dockerfile的方式,实时地更新某个在线的集群。由于Tilt仅在集群内部执行构建,因此它只会推送源代码的变更部分。

原文标题:19 tools to tame Kubernetes deployments,作者:Serdar Yegulalp

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Go语言实战

Go语言实战

威廉·肯尼迪 (William Kennedy)、布赖恩·克特森 (Brian Ketelsen)、埃里克·圣马丁 (Erik St.Martin) / 李兆海 / 人民邮电出版社 / 2017-3-1 / CNY 59.00

Go语言结合了底层系统语言的能力以及现代语言的高级特性,旨在降低构建简单、可靠、高效软件的门槛。本书向读者提供一个专注、全面且符合语言习惯的视角。Go语言实战同时关注语言的规范和实现,涉及的内容包括语法、类型系统、并发、管道、测试,以及其他一些主题。一起来看看 《Go语言实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具