推荐11种让Kubernete更简单易用的工具
很少有计算平台(即使是功能强大且规模巨大的计算平台)可以满足所有需求。虽然Kubernetes开箱即用很有用,但是还远未达成所有需求。您总是可以找到默认Kubernetes功能集不足的用例或需求(例如数据库支持)或简单地忽略(例如连续交付)。
这就是有那么广泛的Kubernetes社区出现的原因所在,它为容器编排框架提供了附加组件,扩展和赠品。这篇文章,作者找到的11个顶级Kubernetes最佳同伴。有些可以补充任何Kubernetes集群,而另一些可以解决现有Kubernetes无法解决的特定需求。
1. Gatekeeper: Kubernetes策略控制
开放策略代理项目(OPA)提供了一种跨本地云应用程序堆栈创建策略的方法,从入口到服务网格组件再到Kubernetes。Gatekeeper提供了一种Kubernetes本地方法,可以自动在集群上实施OPA策略,并审核任何违反策略的事件或资源。所有这些都由Kubernetes中的一个相对较新的机制(准入控制器Webhooks)来处理,该机制会触发对资源的更改。使用Gatekeeper,可以将OPA策略仅作为Kubernetes集群已定义状态的另一部分进行维护,而无需经常守护。
2. Gravity:便携式Kubernetes集群
如果要将应用程序部署到Kubernetes中,许多应用程序都有Helm图表来指导和自动化该过程。为Kubernetes集群而生的Gravity,其容器注册表以及正在运行的应用程序创建快照,这些快照称为“应用程序捆绑包”。该捆绑包只是一个.tar文件,可以在Kubernetes运行的任何地方复制集群。
Gravity还可以确保目标基础架构可以支持与源基础设施相同的行为要求,并且可以确保目标上的Kubernetes运行时不会出现任何故障。企业版Gravity添加了安全功能,包括基于角色的访问控制以及跨多个群集部署同步安全配置的功能。
最新的主要版本Gravity 7可以将Gravity映像部署到现有的 Kubernetes集群中,而无需使用该映像来拆分一个全新的集群。Gravity 7还可以部署到尚未运行Gravity定义的映像的群集中。另外,Gravity现在支持SELinux,并与Teleport SSH网关本地集成。
3. Kaniko:在Kubernetes集群中构建容器
大多数容器映像都建立在容器堆栈外部的系统上。但是有时,您可能想要在容器堆栈内执行构建过程 ,例如,在运行中的容器内或Kubernetes集群上的某个位置。
Kaniko在容器环境中执行容器构建,但无需依赖像Docker这样的容器守护进程来完成工作。相反,Kaniko从基础映像中提取文件系统,然后在提取的文件系统顶部的用户空间中执行所有构建命令,并在每个命令之后拍摄文件系统的快照。请注意,Kaniko当前无法构建Windows容器。
4. Kubecost:运行Kubernetes的成本指标
大多数Kubernetes管理工具都集中在易用性,监视,对pod行为的洞察力等方面。但是,如何监控与运行Kubernetes相关的成本(如美元和美分)呢?Kubecost使用实时Kubernetes指标,以及从主要云提供商上运行的集群获得的实际成本信息,来提供每个集群部署每月成本的仪表板视图。内存,CPU,GPU和存储的成本全部由Kubernetes组件(容器,吊舱,服务,部署等)划分。
尽管当前仅限于AWS,但Kubecost还可以跟踪“集群外”资源(例如Amazon S3存储桶)的成本。成本数据甚至可以共享回Prometheus,因此您可以使用数据以编程方式更改集群行为。如果您只需要保留15天的日志,则可以免费使用Kubecost。对于更高级的功能,监视50个节点的价格为每月199美元起。
5. KubeDB:在Kubernetes中运行生产数据库
在Kubernetes中一直很难优雅地运行数据库。您会找到适用于MySQL,PostgreSQL,MongoDB和Redis之类的Kubernetes运算符,但仍有很多空白。而且,原生的Kubernetes功能集无法直接解决数据库的许多特定问题。
KubeDB允许您创建自己的Kubernetes运算符来管理数据库。运行备份,克隆,监视,快照和以声明方式创建数据库都是其中的一部分。请注意,支持的功能因数据库而异。例如,群集可用于PostgreSQL,但不适用于MySQL。
6. Kube-monkey:Kubernetes的混乱猴子
对系统进行压力测试的一种肯定的方法是随机破坏东西。这就是Netflix的Chaos Monkey背后的理论, Chaos Monkey是一种混沌工程工具,可以随机终止生产中运行的虚拟机和容器,以“鼓励”开发人员构建更具弹性的系统。Kube-monkey是用于对Kubernetes集群进行压力测试的相同基本思想的实现。它可以通过随机杀死您专门指定的集群中的Pod来工作,并且可以进行微调以在特定的时间窗口内运行。
7. 适用于AWS的Kubernetes入口控制器
Kubernetes通过名为Ingress的服务为集群提供外部负载平衡和网络服务。Amazon Web Services提供了负载平衡功能,但不会自动将这些服务耦合到Kubernetes的设施。适用于AWS的Kubernetes Ingress Controller弥补了这一差距。
适用于AWS的Kubernetes Ingress Controller自动管理集群中每个入口对象的AWS资源,为新的入口资源创建负载均衡器,并为已删除的资源删除负载均衡器。它使用AWS CloudFormation来确保群集状态保持一致。它还支持CloudWatch Alarm配置,并自动管理群集中使用的其他元素,例如SSL证书和EC2 Auto Scaling组。
8. Kubespray:Kubernetes的自动部署
从裸机到主要的公共云,Kubespray可以自动在大多数环境中自动部署可生产的Kubernetes集群。它使用Ansible(可选的Vagrant)执行部署,并通过选择网络插件(例如Flannel,Calco,Weave等)以及在许多流行的Linux发行版中进行裸机安装来创建高可用性集群。。
9. Skaffold:Kubernetes的迭代开发
Skaffold 是Google自己的Kubernetes工具之一,它是对Kubernetes应用程序进行连续部署的一种方式。当您对源代码进行更改时,Skaffold会自动检测到它们,触发构建和部署过程,并在出现任何错误时发出警告。Skaffold完全在客户端运行,因此几乎没有设置或维护负担。它可以在现有的CI / CD管道中使用,并与一些外部构建工具(主要是Google自己的Bazel)集成。
10. Teresa:Kubernetes上的简易PaaS
Teresa是一个应用程序部署系统,可在Kubernetes上作为简单的PaaS运行。组成团队的用户可以部署和管理属于他们的应用程序。这使受信任于给定应用程序的人可以更轻松地使用它,而不必处理Kubernetes及其所有复杂性。
11. Tilt:Kubernetes集群的流容器更新
由Windmill Engineering开发的Tilt监视对Dockerfile的更改,然后将这些更改增量部署到Kubernetes集群中的相应容器。本质上,Tilt允许开发人员仅通过更新Dockerfile即可实时更新活动集群。Tilt在集群内部执行构建;唯一推送的更改是源代码。您甚至可以从Tilt状态快照群集状态和错误情况,以与团队成员共享以进行调试。