调教Kubernetes部署的19款工具 架构&设计

来源:互联网 / 作者:SKY / 2019-01-30 18:27 / 点击:
下面我们将要重点介绍19款项目工具,它们分别从简化命令行的交互、应用部署的语法、与AWS的集成、以及在多个集群中新增Windows等方面,来简化Kubernetes。

【Chinaz.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

阅读延展

1
3