使Kubernetes变得更好的11种工具
这时候更广泛的Kubernetes社区挺身而出,提供了针对这种容器编排框架的诸多附件、扩展件和第三方产品。以下是我们发现的11款主要的Kubernetes配套工具。一些可以补充任何Kubernetes集群,另一些可以满足Kubernetes无法满足的特定需求。
Gravity:易于移植的Kubernetes集群
如果你要将应用程序部署到Kubernetes中,许多应用程序都有Helm图表来引导和自动化该过程。但是如果你想直接拿来Kubernetes集群并将其部署在某个地方该怎么办呢?
Gravity可以为Kubernetes集群、容器注册中心以及运行中应用程序创建快照,名为“应用程序bundle”。bundle只是一个.tar文件而已,可以在Kubernetes运行的任何地方复制集群。
Gravity还确保目标基础架构可以支持与源基础架构同样的行为要求,并确保目标上的Kubernetes运行时环境状况良好。企业版Gravity添加了安全功能,包括基于角色的访问控制以及跨多个集群部署同步安全配置的功能。
Kaniko:在Kubernetes集群中构建容器
大多数容器映像是在容器堆栈外面的系统上构建。不过有时候,你想要在容器堆栈里面执行构建过程,比如在运行中容器里面或在Kubernetes集群上的某个位置。
Kaniko在容器环境中执行容器构建,但不依赖Docker之类的容器守护进程完成其工作。 Kaniko拿来基本映像后提取文件系统,然后在所提取文件系统上面的用户空间中执行所有构建命令,并在每个命令后获取文件系统的快照。
请注意,Kaniko目前无法构建Windows容器。
Kedge:简洁的Kubernetes部署定义
Kubernetes最饱受诟病的地方是其清单或应用程序定义有多重叠复杂而冗长。它们编写和维护起来很痛苦,于是难怪人们求助于第三方工具以减少痛苦。
Kedge提供了一种更简单更简洁的语法。你可以为Kedge提供Kubernetes定义文件的简单版本,Kedge可以将该简单定义扩展为完整的Kubernetes定义。与下面介绍的Koki Short不同,Kedge并不为声明文件使用模块化语法。它只是将应用程序定义简化为常见快捷方式。
请注意,Kedge的上一个版本是2018年4月发布的。
Koki Short:易于管理的Kubernetes清单
与上面的Kedge一样,Koki Short这个项目旨在改善应用程序定义或清单在Kubernetes中的工作方式。与Kedge定义一样,Short定义使用一种简短的语法来描述Kubernetes容器,可以转换成完整的语法并再次转换回去。与Kedge定义不同,Short定义还是模块化的,这意味着来自一个Short声明的详细信息可以在其他声明中重复使用,那样就可以简明地定义拥有通用元素的许多pod。
Kubecost:运行中Kubernetes的成本度量指标
大多数Kubernetes管理工具专注于易用性、监视和了解pod行为等方面。但如何监视与运行中Kubernetes有关的成本(用美元和美分来度量)呢?
Kubecost使用实时Kubernetes度量指标以及从几大云提供商上运行的集群获得的实际成本信息,提供显示每个集群部署每月成本的仪表板视图。内存、CPU、GPU和存储的成本全部按Kubernetes组件(容器、pod、服务和部署等)加以细分。
Kubecost还可以跟踪“集群外”资源(比如Amazon S3存储桶)的成本,不过这目前仅限于AWS。成本方面的数据甚至可以发回Prometheus以共享,那样你可以使用该数据以编程方式更改集群行为。
KubeDB:在Kubernetes中运行生产数据库
数据库在Kubernetes中一直很难优雅地运行,而原生的Kubernetes功能集无法直接解决数据库的许多特定问题。
KubeDB让管理员可以创建Kubernetes operator以管理数据库。运行备份、克隆、监视、快照和声明式创建数据库都是其功能的一部分。还支持集群,但仅针对某些数据库——比如它适用于PostgreSQL,但还不适用于MySQL。
Kube-monkey:面向Kubernetes的混沌猴子
对系统进行压力测试的一种有效方法是随机破坏系统,这就是Netflix的Chaos Monkey(混沌猴子)背后的理论。Chaos Monkey是一种混沌工程工具,可随机终止生产环境中运行的虚拟机和容器,以“鼓励”开发人员构建更具弹性的系统。Kube-monkey实施了同样的基本理念,对Kubernetes集群进行压力测试。其工作原理是,随机终止你专门指定的一个集群中的pod,还可以进行微调以便在特定的时间窗口内运行。
Kubernetes Ingress Controller for AWS
Kubernetes通过一项名为Ingress的服务为集群提供外部负载均衡和网络服务。AWS提供负载均衡功能,但并不自动将这些服务耦合到Kubernetes的工具。Kubernetes Ingress Controller for AWS填补了这个空白。
Kubernetes Ingress Controller for AWS自动管理集群中每个Ingress对象的AWS资源,为新的Ingress资源创建负载均衡系统,并为已删除的Ingress资源删除负载均衡系统,利用AWS CloudFormation来确保集群的一致状态。它还自动管理集群中使用的其他元素,比如SSL证书和EC2自动扩展组。
Skaffold:Kubernetes的迭代开发
Skaffold是谷歌自己的Kubernetes工具之一,可以对Kubernetes应用程序执行持续部署。你对源代码进行更改时,Skaffold可自动检测到更改,触发构建和部署过程,并在出现任何错误时发出警告。Skaffold完全在客户端运行。它可以在现有的CI/CD管道中使用,与几个外部构建工具(主要是谷歌自己的Bazel)整合起来。
Teresa:Kubernetes上的简单PaaS
Teresa是一个应用程序部署系统,可在Kubernetes上作为简单的PaaS来运行。组织成团队的用户可以部署和管理属于他们的应用程序。这使得负责特定应用程序的人处理该应用程序更容易一点,没必要直接与Kubernetes打交道。
Tilt:将容器更新版发送到Kubernetes集群