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

当我们执行“Kubectl scale Deploy”时,Kubernetes不尊重HPA配置吗?

薛淮晨
2023-03-14

场景:我已经使用helm图表部署了一个服务,我可以在我的hpa设置中看到我的服务、hpa、部署、吊舱等:最小吊舱计数被设置为1。我可以看到我的吊舱正在运行,能够处理服务请求。

过了一段时间--我已经执行了--“Kubectl scale Deploy--Replicas=0”一旦运行上面的命令,我就可以看到我的pod被删除了(尽管hpa最小pod设置被设置为1),但我希望过一段时间后hpa会扩展到最小pod计数,即1。然而,我没有看到这种情况发生,我已经等了一个多小时,没有新的豆荚创建由HPA。我还尝试向我的Kubernetes服务发送一个请求,我想现在hpa将扩展pod,因为没有pod来服务请求,但是hps似乎没有这样做,我得到的响应是我的服务不可用。

有趣的是,我发现hpa可以迅速缩小规模:当我执行“Kubectl scale Deploy--Replicas=2”(请注意in hpa计数为1)时,我可以看到2个pod被快速创建,然而在5分钟内,1个pod被hpa移除。

这是Kubernetes(尤其是hpa)的预期行为吗?例如,如果我们通过执行--“Kubectl scale Deploy--replicas=0”来删除所有pod,a)hpa不会阻塞以将副本计数减少到低于配置的pod计数(在hpa配置中),b)hpa不会将(基于hpa旋转周期)扩展到配置的最小pod数。本质上,c)直到我们重新部署或执行另一轮“Kubectl scale deploy”以更新副本计数,该服务才会有pod。

这是预期的行为还是Kubernetes代码库中的(可能)bug?我使用的是Kubernetes1.8版本。

共有1个答案

戎志勇
2023-03-14
TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / Target)

希望这能解答你对HPA的疑惑。

 类似资料:
  • 我希望将concur严格用作配置源。我正在使用spring cloud Consor配置来获取配置。我正在使用git2consul将文件加载到Consor并读取它们。根据spring云文档,我在构建中添加了以下内容。格拉德尔 并在我的application.properties 我面临的问题是,预期的属性没有加载到ConfigurationProperties bean中。在ConsultProp

  • 我们有一个Istio集群,我们正在尝试为Kubernetes配置水平pod自动Scale。我们希望使用请求计数作为HPA的自定义度量。我们如何利用伊斯蒂奥的普罗米修斯来达到同样的目的?

  • 我对Quarkus应用程序中的配置进行了非常简单的调整,如Quarkus指南所述: 我这样做是为了使用注释包装/解包我的对象: 当与我的实际API相对时,这很好,但每当我在一个测试中使用restasured时,restasured似乎并不尊重我的ObjectMapper配置,也不会像注释所示那样包装CreateArticleRequest。 这将我的请求正文序列化为: ...而不是... 我实际上

  • 我编写了一个组件,它使用BoxLayout对一些JLabels进行水平布局,然后使用glue(我希望JLabels的宽度保持不变)。例如: 我需要为每个JLabel添加两行文本,所以我使用了一点HTML。当我添加HTML时,BoxLayout就不再尊重胶水了。我得到的是: 我可以通过指定最大大小应该等于首选大小(指定首选大小没有影响)来绕过这个问题。这是正确的做法吗?当我的JLabels中有HTM

  • 我们使用JDBC源连接器将数据从表同步到Kafka中的主题(称为主题1)。正如我们所知,这只捕获插入和更新,我们添加了一个触发器来捕获删除。此触发器捕获删除的记录并写入一个新表,该表与另一个Kafka主题(称为主题2)同步。 我们已经将JDBC源连接器配置为使用AvroConverter。 现在,我们已经编写了一个Kafka streams逻辑,它使用本主题2中的数据并发布到主题1。我的问题是Ka

  • 我的要求是在自定义指标上扩展POD,如队列中的挂起消息,PODS必须增加以处理作业。在kubernetes,Scale up在普罗米修斯适配器和普罗米修斯操作员中工作得很好。 我在pods中有长时间运行的进程,但HPA检查自定义度量并试图缩小规模,因为这个进程杀死了操作的中间并丢失了消息。我如何控制HPA只杀死没有进程运行的自由豆荚。 序列查询:‘{namespace=“default”,serv