当前位置: 首页 > 知识库问答 >
问题:

HPA缩比Kubernetes吊舱

左丘元徽
2023-03-14

我的要求是在自定义指标上扩展POD,如队列中的挂起消息,PODS必须增加以处理作业。在kubernetes,Scale up在普罗米修斯适配器和普罗米修斯操作员中工作得很好。

我在pods中有长时间运行的进程,但HPA检查自定义度量并试图缩小规模,因为这个进程杀死了操作的中间并丢失了消息。我如何控制HPA只杀死没有进程运行的自由豆荚。

  • 序列查询:‘{namespace=“default”,service=“hpatest-service”}’资源:重写:namespace:resource:“namespace”service:resource:“service”name:matches:“msg_consumergroup_lag”metricsquery:'avg_over_time(msg_consumergroup_lag{topic=“test”,consumergroup=“test”}[1m])'
  • type:Object Object:descripedobject:kind:Service name:custommetric-Service metric:name:msg_consumergroup_lag target:type:Value值:2

共有1个答案

狄安歌
2023-03-14

目前,HPA不能配置为适应这种性质的工作负载。HPA根据伸缩算法简单地将部署上的副本计数设置为所需的值,部署选择一个或多个POD来终止。

在这个Kubernetes的问题上有很多关于这个主题的讨论,你可能会感兴趣。它不是由HPA解决的,也可能永远不会解决。对于这种类型的工作负载,可能需要一种不同类型的自动缩放器。链接中给出了一些建议,可能有助于您定义其中之一。

如果我自己承担这个任务,我将创建一个新的控制器,相应的CRD包含作业定义和伸缩需求。我会让它启动作业,而不是扩展部署。我会让作业完成它们的工作(处理队列),直到它们空闲(队列中没有项),然后退出。控制器只会通过增加工作来扩大规模,而不会下降。当队列为空时,作业本身将通过退出来缩小规模。

 类似资料:
  • 在使用CoreOS Prometheus运算符刮除所有标准集群度量的Kubernetes集群上,对于简单的HPA(水平pod自动缩放器),什么Prometheus度量会向我显示值? 如果我设置一个简单的hpa,比如: 然后,如果我执行,我会看到如下内容: 我想在普罗米修斯中看到。我做了一堆普罗米修斯查询来找这个。

  • 从库伯内特斯v1.18开始,v2beta2 API允许通过水平Pod Autoscalar(HPA)行为字段配置缩放行为。我计划将具有自定义指标的HPA应用于StatefulSet。 我正在查看的用例是使用自定义指标(例如,我的应用程序上的用户会话数量)进行扩展,但HPA根本不会缩减。K8s SIG-Autoscaling增强功能也描述了此用例-“HPA的可配置缩放速度 用户会话可以在几分钟到几小

  • 我对Kubernetes是新来的。 我发现了2个pod优先级选项-优先级类别和服务质量。它们之间有什么不同? (https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/https://kubernetes.io/docs/tasks/configure-pod-container/quality-servi

  • 我在Kubernetes集群上运行了一个openjdk:8映像。我添加了内存HPA(水平Pod自动缩放),它可以很好地扩展,但由于JVM不会将内存从堆释放回操作系统,所以Pod不会缩小。以下是hpa。亚马尔 解决这个问题的一种方法是使用正确的GC并使其释放内存,但由于JVM被设计为不经常从堆中释放内存,因此这样做不是一个好主意。库伯内特斯有没有办法解决这个问题?就像不检查操作系统的内存使用情况一样

  • 我对在Ubuntu安装中测试kubernete自动缩放解决方案非常感兴趣。我已经在mini kube中使用过它,带有heapster,但由于它已经被弃用,我尝试使用指标服务器。现在在我的Ubuntu中,我安装了metrics-server,如下所示: 但当我检查HPA时,我总是看到以下内容: Kubectl获得hpa 似乎度量服务不用于计算使用量。 我去了Kubernetes的文档站点,真的不知道

  • 我的一个微服务正在Kubernetes上运行。我想指定到K8s负载均衡器当一个吊舱是繁忙的,因为行为,我得到目前是不确定的。 一个例子: 我有8个豆荚运行,每个豆荚一次可以处理1个请求。每个请求占用分配给pod的CPU核心的70%到100%。但是当我向我的应用程序发送8个请求时,Kubernetes不会将这些请求分派到8个吊舱,而是尝试只使用一个。由于我(通过threadpool)阻止每个应用程序