内容简介:【51CTO.com快译】如今,Kubernetes已成为了业界一种调整与部署容器化应用的标准方式。不过对于非资深的开发人员而言,Kubernetes实在是太复杂、太混乱、也太难管理了。如果说Kubernetes能够帮助我们调教(调整)庞大而复杂的容器部署,那么谁有来帮助我们调教Kubernetes呢?随着Kubernetes的发展与改进,许多人都在尝试着运用自己的解决方案,让Kubernetes变得更加易用,同时也能够解决Kubernetes在生产环境中出现的各种常见问题。
【51CTO.com快译】如今,Kubernetes已成为了业界一种调整与部署容器化应用的标准方式。不过对于非资深的开发人员而言,Kubernetes实在是太复杂、太混乱、也太难管理了。如果说Kubernetes能够帮助我们调教(调整)庞大而复杂的容器部署,那么谁有来帮助我们调教Kubernetes呢?
随着Kubernetes的发展与改进,许多人都在尝试着运用自己的解决方案,让Kubernetes变得更加易用,同时也能够解决Kubernetes在生产环境中出现的各种常见问题。
下面我们将要重点介绍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】
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- linux 部署golang 项目(直接部署和基于nginx部署)
- 部署策略对比:蓝绿部署、金丝雀发布及其他
- 使用Docker容器化部署实践之Django应用部署(一)
- 【前端打包部署】谈一谈我在SPA项目打包=>部署的处理
- 「实战篇」开源项目docker化运维部署-后端java部署(七)
- Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。