当前位置: 首页 > 科技观察

使Kubernetes变得更好的11种工具

时间:2023-03-13 21:00:27 科技观察

使Kubernetes变得更好的11种工具虽然Kubernetes开箱即用,但还不够。您总能找到默认Kubernetes功能集不足的用例或需求,例如数据库支持,或者完全被忽略的用例或需求,例如持续交付。那时更广泛的Kubernetes社区挺身而出,为容器编排框架提供了大量附加组件、扩展和第三方产品。以下是我们发现的11个主要Kubernetes配套工具。有些可以补充任何Kubernetes集群,而另一些则可以满足Kubernetes无法满足的特定需求。Gravity:易于移植的Kubernetes集群如果您要将应用程序部署到Kubernetes中,许多应用程序都有Helm图表来指导和自动化该过程。但是如果你想直接拿一个Kubernetes集群部署在某个地方怎么办?Gravity可以创建Kubernetes集群、容器注册表和正在运行的应用程序的快照,称为“应用程序包”。一个bundle只不过是一个.tar文件,它在Kubernetes运行的任何地方复制集群。Gravity还确保目标基础设施能够支持与源基础设施相同的行为要求,并确保目标上的Kubernetes运行环境是健康的。Gravity企业版增加了安全功能,包括基于角色的访问控制和跨多个集群部署同步安全配置的能力。Kaniko:在Kubernetes集群中构建容器大多数容器镜像构建在容器堆栈之外的系统上。但是,有时您希望在容器堆栈内执行构建过程,例如在运行的容器内或Kubernetes集群上的某处。Kaniko在容器环境中执行容器构建,但不依赖像Docker这样的容器守护进程来完成它的工作。Kaniko获取基本映像并提取文件系统,然后在提取的文件系统之上的用户空间中执行所有构建命令,并在每个命令后拍摄文件系统的快照。请注意,Kaniko目前无法构建Windows容器。Kedge:简洁的Kubernetes部署定义对Kubernetes最大的批评之一是其清单或应用程序定义的重叠、复杂和冗长。编写和维护它们很痛苦,因此人们求助于第三方工具来减轻痛苦也就不足为奇了。Kedge提供了更简单、更简洁的语法。您可以为Kedge提供一个简单版本的Kubernetes定义文件,Kedge可以将该简单定义扩展为完整的Kubernetes定义。与下文所述的KokiShort不同,Kedge不对声明文件使用模块化语法。它只是将应用程序定义简化为通用快捷方式。请注意,Kedge的最新版本于2018年4月发布。KokiShort:易于管理的Kubernetes清单与上面的Kedge一样,KokiShort是一个旨在改进应用程序定义或清单在Kubernetes中工作方式的项目。与Kedge定义一样,短定义使用短语法来描述Kubernetes容器,可以将其转换为完整语法并再次转换回来。与Kedge定义不同,Short定义也是模块化的,这意味着来自一个Short声明的细节可以在其他声明中重复使用,从而可以简洁地定义许多具有共同元素的pod。Kubecost:运行Kubernetes的成本指标大多数Kubernetes管理工具都专注于易用性、监控和理解pod行为等方面。但是,您如何监控与运行Kubernetes相关的成本(以美元和美分衡量)?Kubecost使用实时Kubernetes指标以及从几个主要云提供商上运行的集群获得的实际成本信息来提供每月成本的仪表板视图。内存、CPU、GPU和存储的成本都按Kubernetes组件(容器、pod、服务、部署等)细分。Kubecost还可以跟踪“集群外”资源(例如AmazonS3存储桶)的成本,尽管目前仅限于AWS。有关成本的数据甚至可以发送回Prometheus进行共享,因此您可以使用该数据以编程方式更改集群行为。KubeDB:在Kubernetes中运行生产数据库数据库一直很难在Kubernetes中优雅地运行,而原生Kubernetes功能集并不能直接解决许多特定于数据库的问题。KubeDB允许管理员创建Kubernetes操作员来管理数据库。运行备份、克隆、监控、快照和声明式创建数据库都是其功能的一部分。也支持集群,但仅适用于某些数据库——例如,它适用于PostgreSQL,但不适用于MySQL。Kube-monkey:用于Kubernetes的ChaosMonkey对系统进行压力测试的一种有效方法是随机破坏系统,这就是Netflix的ChaosMonkey背后的理论。ChaosMonkey是一种混沌工程工具,它随机终止在生产环境中运行的虚拟机和容器,以“鼓励”开发人员构建更具弹性的系统。Kube-monkey实现了相同的基本思想来对Kubernetes集群进行压力测试。它通过随机终止您专门指定的集群中的pod来工作,并且可以进行微调以在特定时间窗口内运行。AWSKubernetes的KubernetesIngressController通过名为Ingress的服务为集群提供外部负载均衡和网络服务。AWS提供负载均衡功能,但不会自动将这些服务耦合到Kubernetes工具。AWS的KubernetesIngressController填补了这一空白。KubernetesIngressControllerforAWS自动管理集群中每个Ingress对象的AWS资源,为新的Ingress资源创建负载均衡系统,为删除的Ingress资源删除负载均衡系统,使用AWSCloudFormation保证集群的状态一致.它还自动管理集群中使用的其他元素,例如SSL证书和EC2自动缩放组。Skaffold:Kubernetes的迭代开发Skaffold是Google自家的Kubernetes工具之一,可以对Kubernetes应用进行持续部署。当您更改源代码时,Skaffold会自动检测更改、触发构建和部署过程,并在出现任何错误时向您发出警告。Skaffold完全在客户端运行。它可以在现有的CI/CD管道中使用,与多个外部构建工具(主要是谷歌自己的Bazel)集成。Teresa:Kubernetes上的简单PaaSTeresa是一个在Kubernetes上作为简单PaaS运行的应用程序部署系统。组织成团队的用户可以部署和管理属于他们的应用程序。这使得负责特定应用程序的人员更容易处理该应用程序,而无需直接与Kubernetes打交道。Tilt:将容器更新发送到Kubernetes集群Tilt,由WindmillEngineering开发,实时监控Dockerfiles的变化,然后将这些变化增量部署到Kubernetes集群中的相应容器。实际上,它允许开发人员仅通过更新Dockerfile就可以实时更新实时集群。Tilt在集群内执行构建,唯一推送的更改是源代码。原标题:让Kubernetes变得更好的11个工具,作者:SerdarYegulalp