精简裁员的容器资源需求

阅读时间:6分钟

管理和优化Kubernetes集群弹性基础设施是一个持续的工程和DevOps团队的努力。虽然Kubernetes container-centric业务流程服务简化了集装箱的部署应用程序,管理其底层基础设施规模仍然是一个开销。

不久前我们宣布海洋,我们serverless计算引擎,从vm抽象容器动态地选择适合的计算实例豆荚和容器的资源需求。为海洋基础上我们的愿景,我们看到了一个机会来提高我们的终端用户能够定义正确的pod资源需求更大的准确性,不管或在供应等典型的障碍。

在这个博客中,我们将介绍我们的最新发展,海洋VPA(垂直吊舱自动伸缩功能)。此功能将协助客户优化其资源需求的CPU和内存(基于实际pod)为了增加集群的消费利用和云大大降低运营成本。

挑战估计一个豆荚里的资源请求

开发人员配置Pod资源请求要么猜测,提供一个估计反复试验或运行模拟测试部署。

然而,开发团队需要的时间和精力投资提供准确度量应用程序的CPU和内存消耗,可以很广泛,常常没有效果。

即使开发人员投入时间和资源来建立一个精确的测量,测试模拟指标将几乎总是不同于实际雷竞技rabet官网生产使用。

此外,生产资源消费总是随着时间的变化加剧了偏离最初的估计。

这些因素使我们在的地方。io开发一个系统收集实际的CPU和内存使用情况来定义最准确的资源请求Kubernetes吊舱。

准确定义Pod资源需求为何重要

Kubernetes为您提供的选项定义资源指南容器。虽然这不是一个强制性的设置,强烈建议定义资源请求和资源限制,基于特定的CPU和内存需求,为了避免或在供应Kubernetes吊舱。不正确的配置可能会导致

  1. 过度供应——一个豆荚请求比它实际上需要额外的资源来操作,使集群没雷竞技rabet官网有得到充分利用,资源闲置,最终会增加运营成本。
  2. 供给不足——一个豆荚消耗更多的资源比最初要求。雷竞技rabet官网集群是忙的团团转,导致性能问题,和在极端条件下,Kubernetes可能终止你的豆荚。

Pod资源请求是什么

一个资源request的数量CPU和内存Kubernetes调度器将储备Pod的操作。一个资源限制是最大的CPU和内存该系统将允许消耗的豆荚。一旦吊舱将尝试比它的定义限制,消耗更多的资源雷竞技rabet官网限制。

一旦限制,pod Kubernetes调度器可能限制额外的CPU和内存资源分配给吊舱。雷竞技rabet官网

在其他事件,如伯父(内存),在豆荚没有足够的内存来运行,甚至Kubernetes调度器终止它。

Kubernetes调度器将使用定义的资源请求,以决定哪个节点将Pod和将验证容器确实足够的资源以发射。雷竞技rabet官网调度器的资源的情况下检查失败,。没有适用的集群中的节点可以运行,它进入一个“计划外”的状态,这就是海洋开始,旋转一个新节点应该完全健康,基于Pod的资源请求和其他参数等标签,节点选择器和更多。

VPA流程流

度量服务器是必需的

为了收集海洋VPA所需的标准,有必要安装一个度量服务器将运行作为集群的一部分。

使用度量服务器,Spotinst海洋将收集的使用指标定期部署在集群中,每隔5分钟。Spotinst海洋至少需要4天的数据,以实际使用。

为每个资源(CPU和内存),Spotinst海洋将计算的平均数量资源利用率在过去两周作为实际消耗的基准。

资源调整的建议将触发以下场景:

  • 所请求的资源是高于/低于平均雷竞技rabet官网指标在所有时间15%以上
  • 所请求的资源不断地高于/低于雷竞技rabet官网平均指标在过去一个月超过30%

资源将提供建议如下:

1)海洋界面:

    1. 的一部分名称空间指示板
  1. 2。作为新的的一部分调整仪表板的VPA建议

2)每两周总结邮件(可配置)

运行示例应用程序

这个测试的目的,我们建立了一个的集群结合Spotinst海洋。

让我们创建一个部署这个stress.yml:

纳米api-service.yml

apiVersion:扩展/ v1beta1:部署元数据:名称:api服务名称空间:默认标签:Kubernetes-app:强调规范:副本:3选择器:matchLabels: Kubernetes-app:压力模板:元数据:标签:Kubernetes-app:规范:压力容器:-名称:应力形象:progrium /压力imagePullPolicy:总是参数:[”——cpu”,“1”]资源:限制:cpu:“5000”的记忆:“3 gi”请求:cpu:“2000”的记忆:“512 mi”雷竞技rabet官网

接下来,应用应力部署到集群:

Kubectl应用- f api服务

  • 消耗1个vcpu每个配置的豆荚,进行验证:

kubectl pod——所有名称空间

  • 海洋中我们也可以验证CPU UI——的平均CPU利用率的api服务部署是1个vCPU,虽然是2个vCPU CPU的请求

承认这个建议并应用“kubectl”

海洋的VPA建议将开始提供建议在收集集群使用量度一段1周。

由于api服务的部署是消耗更少的资源比要求,我们收到了一个调整的建议。雷竞技rabet官网推荐值的平均实际豆荚的资源利用率,在过去的两个星期。

  • ——使用kubectl应用更改

kubectl集资源ap雷竞技rabet官网i服务——请求= cpu = 1000

审核推广进展从命令行:

你可以注意到海洋发现的节点资源分配减少,并根据需要将缩小。

海洋中的日志,我们收到完整的能见度自动伸缩功能的模拟活动执行,为了binpack运行豆荚为更少的节点:

应用推荐指标的建议后,集群现在更高效的利用,我们所有的豆荚正在运行。然而,他们需要更少的资源,因此减少了我们的集群的基础设施雷竞技rabet官网成本,而无需经过我们所有的模拟前面所述

在这个练习中,我们创建了一个部署与慷慨的CPU配置请求,产生闲置产能。从2个vCPU减少CPU资源请求后1个vCPU海洋终止实例验证后,集群中的所有Pods可以缩小活动后继续操作。

现在可用的!

我们兴奋地介绍海洋VPA发展,另一个令人难以置信的海洋基础设施管理。功能。

海洋VPA提供的可见性,您现在可以享受更多非常高效。、高性能和成本效益Kubernetes集群,确定准确的数量CPU和内存每个吊舱和部署不应该猜测了。

VPA现在集成作为海洋Spotinst UI控制台和API的一部分所有地区

得到今天开始并使用聊天机器人,如果你想与我们的一个同事的更多信息!

Baidu
map