首页 > 其他分享 >Kubernetes的垂直和水平扩缩容的性能评估

Kubernetes的垂直和水平扩缩容的性能评估

时间:2022-12-29 10:23:25浏览次数:64  
标签:负载 场景 Kubernetes request 扩缩容 Pod CPU 评估

Kubernetes的垂直和水平扩缩容的性能评估

译自:Performance evaluation of the autoscaling strategies vertical and horizontal using Kubernetes

可扩展的应用可能会采用水平或垂直扩缩容来动态调整云端资源。为了帮助选择最佳策略,本文主要对比了kubernetes中的水平和垂直扩缩容。通过对 Web 应用程序进行综合负载测量实验,结果表明水平扩缩容的效率更高,对负载变化的响应更快,且对应用程序响应时间的影响更小。

简介

云服务的负载可能会随时间变动,为了实现可扩展,需要依据特定的指标(如CPU)来采取自动扩容策略,以此来扩大应用的处理能力。为此,我们需要均衡应用的QoS和云基础设施的开销,即量入为出。

当前有两种扩缩容类型:水平,即服务的数目会视负载的情况增加或减少;垂直,即服务的资源(CPU或内存)会视负载的情况增加或减少。但即使有了这两种方法,也没有明确定义的标准来决定使用哪种方法。此外,在性能和成本效益方面,还缺乏与垂直自动扩缩容相关的分析,以及如何与水平自动扩缩容进行比较。

因此,为了评估这两种方法的性能,我们使用kubernetes做了一个测量实验,并借助了一个压测工具,该工具可以以一种受控的方式向一个"busy-wait"应用发送请求,并根据负载发生变化后自动扩缩容决策的时间、每个决策上请求的 CPU 的容量以及应用响应时间的影响来对这些机制进行评估。

Kubernetes的自动扩缩容策略

k8s是一个基于Borg的开源项目,聚焦容器编排,并允许在集群中运行容器应用,同时简化了不同环境(生产、开发等)的配置。总之,k8s提供了一组物理和虚拟机(节点),其中,master负责控制和给worker节点分配任务。在k8s中,pod是节点上最小的可分配单元,一个pod可以打包一个或多个容器,并定义执行规则。需要注意的是,要确保节点能够有足够的资源去运行对应的pod。

为了在k8s中创建一个对象,需要创建一个包含所需规格的配置文件。K8s的对象可以用于不同的目的,如监控、网络配置、扩缩容等。因此,需要根据不同的目的来选择不同的类型。此处使用的类型是:

  • horizontal pod autoscaler
  • vertical pod autoscaler

Horizontal Pod Autoscaler

水平自动扩缩容的目的是降低或增加集群中的Pods数目,以便有效地利用资源并满足应用的需求。这种扩缩容方式围绕某些指标,如CPU、内存、自定义指标或外部指标(基于Kubernetes外部的应用负载)。[2] [3]

为了使用水平扩缩容,需要创建一个HorizontalPodAutoscaler配置文件,并定义一个CPU百分比使用限制,如果Pod的利用率达到该限制,则会创建出更多的副本。HPA每15s(可变)会校验是否需要创建新的Pods。

HPA 背后的算法基于 HPA 所watch的所有Pods的当前利用率的平均值(Uₐ),期望利用率(U

标签:负载,场景,Kubernetes,request,扩缩容,Pod,CPU,评估
From: https://www.cnblogs.com/charlieroro/p/17009778.html

相关文章