问题标签 [horizontal-pod-autoscaling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
651 浏览

kubernetes - Kubernetes Pod Horizo​​ntal Autoscaling 安全排水,celery worker 缩减中途工作

我在 GKE 上有一个 Kubernetes 集群。其中,我当前的布局有一个配置了 Horizo​​ntal pod autoscaler 的 Pod(worker-pod),它可以根据 BlueMedora 的 BindPlane 在 Stackdriver 上提供的外部指标进行缩放。

自动缩放工作完美,但有时当需要缩减时,Pod 在执行一项永远不会完成的任务时会被耗尽。

该 pod 正在运行一个 Celery 工作者,而作业队列由另一个使用 RabbitMQ 的 Pod 管理,我不确定是在 K8s 端还是 rabbitMQ 端解决这个问题。

我怎样才能避免 HPA 在他执行任务时缩小 pod?

我的吊舱规格(简化):

0 投票
1 回答
1224 浏览

kubernetes - 如何根据 GPU 指标扩展 Azure 的 Kubernetes 服务 (AKS)?

问题

我正在尝试在我的 AKS 集群上实现一个 Horizo​​ntal Pod Autoscaler (HPA)。但是,我无法检索我的 HPA 需要扩展的 GPU 指标(由 Azure 自动生成)。

例子

作为参考,请参阅此示例,其中 HPA 基于targetCPUUtilizationPercentage: 50. 也就是说,HPA 将部署更多/更少的 pod,以实现所有 pod 的平均 CPU 利用率目标。理想情况下,我想用 GPU 达到同样的效果。

设置

我已经部署了一个启用了 Azure Monitor 的 AKS 集群,并且我的节点大小设置为Standard_NC6_Promo- Azure 的 VM 选项,它配备了 Nvidia 的 Tesla K80 GPU。但是,为了利用 GPU,您必须首先将适当的插件安装到您的集群中,如此所述。安装此插件后,Azure 会自动收集大量 GPU 指标并将其记录到名为“InsightsMetrics”的表中(请参阅参考资料)。据我所知,该指标containerGpuDutyCycle将最有利于监控 GPU 利用率。

现在的情况

我可以成功看到已安装插件收集的洞察指标,其中一个指标是containerGpuDutyCycle.

Azure 门户上 Kubernetes 服务的日志选项卡内的 InsightsMetrics 表

现在如何向我的 HPA 公开/提供这个指标?

可能的解决方案

我注意到,如果您导航到 AKS 群集的“指标”选项卡,则无法检索这些 GPU 指标。我认为这是因为这些 GPU“指标”在技术上是日志,而不是“官方”指标。但是,azure 确实支持称为基于日志的指标,其中日志查询的结果可以被视为“官方”指标,但我看不到如何创建自己的基于日志的自定义指标。

此外,Kubernetes通过其 Metrics API 支持自定义和外部指标,可以从外部源(例如 Azure 的 Application Insights)检索指标。Azure 有一个名为Azure Kubernetes Metrics Adapter的 Metrics API 实现。也许我需要containerGpuDutyCycle使用这个将指标公开为外部指标?如果是这样,我如何将指标引用/公开为外部/自定义?

替代解决方案

我主要关心的是公开 HPA 的 GPU 指标。我现在正在使用 Azure 的 Kubernetes Metrics Adapter,因为我认为它会更好地集成到我的 AKS 集群(相同的生态系统)中。但是,它处于 alpha 阶段(尚未准备好生产)。如果有人可以使用替代公制适配器(例如Prometheus)解决我的问题,那仍然会非常有帮助。

非常感谢您对这个问题的任何了解。

0 投票
1 回答
806 浏览

kubernetes - Horizo​​ntalPodAutoscaler:缺少字段“条件”

朋友们,我正在尝试按照k8s的hpa 教程实现 HPA,但出现以下错误:

ValidationError(Horizo​​ntalPodAutoscaler.status):在 io.k8s.api.autoscaling.v2beta2.Horizo​​ntalPodAutoscalerStatus 中缺少必填字段“条件”

我找不到有关此字段“条件”的任何信息。有人知道我可能做错了什么吗?这是我的 HPA 的 YAML:

这里是我的部署清单:

0 投票
2 回答
544 浏览

kubernetes - Kubernetes AutoScaler - 我应该在哪里指定缩小和放大

我找不到任何关于应该在哪里指定行为部分的示例Kind: HorizontalPodAutoscaler

在文档中他们有这个部分,但我找不到任何应该适合的例子?

auto-scaler.yml这是一个没有行为部分的示例

0 投票
1 回答
512 浏览

kubernetes - 我可以同时使用垂直 pod 自动扩缩器和水平 pod 自动扩缩器吗?

我需要在 Kubernetes 上运行一个可突发的工作负载,这真的很难估计资源和限制。我目前只使用 Horizo​​ntal Pod Autoscaler,因此我的副本数量会根据每小时计划作业的需求增加而增加。我目前也已将内存请求和限制设置为开放,并且自动缩放仅基于 CPU。问题在于,为 pod 保留内存限制会导致高 pod 驱逐率。我想知道是否可以使用 Vertical Pod Autoscaler 来推荐 Pod 的资源分配并保持创建的 Horizo​​ntal Pod Autoscaler 对象同时运行。我在文档中找到的唯一参考资料说有一个名为 Multidimensional Pod autoscaling 的对象,但它仅适用于 1.19+ 版本。

0 投票
1 回答
875 浏览

kubernetes - Kubernetes HPA 未在 istio 上使用 prometheus 适配器使用自定义指标进行扩展

我有两个部署在 istio 中运行相同服务的 v1 和 v2。我已经设置了一个自定义指标“istio-total-requests”,通过普罗米修斯适配器收集。

我已经设置了一个 HPA 来扩展 v2 部署,并且在我发送请求时可以看到目标值增加,但是没有发生的是 HPA 没有扩展 pod/副本的数量。

我在 minikube v1.13.1 上运行 kubernetes v1.19,不明白为什么它不能扩展。

HPA YAML

查看 HPA 拉取和测量指标但不缩放,它下方的窗口显示 prometheus-adapter 已成功查询指标。

在此处输入图像描述

HPA 说明

在此处输入图像描述

我不清楚的最后一项,是上面 hpa 定义中选择器的目的是什么?是否从 prometheus 查询的数据范围中选择特定值?

例如,我知道我正在查询的字段是 envoy 默认输出的,如下所示:

选择器是否允许您进一步过滤系列数据,如果不是,目的是什么以及如何使用它?

0 投票
1 回答
615 浏览

java - Java SpringBoot Kubernetes:水平 pod 自动缩放

请关于如何实现水平吊舱自动缩放的小问题

我有一个 SpringBoot 应用程序,它在 Kubernetes 中部署了 Actuator/Micrometer/Prometheus 插件

因此,非常高兴,我在对应用程序进行查询时看到了我的指标

并且还在位置 X 的 Prometheus 服务器中查看时间序列,查看图表。非常高兴,到目前为止一切顺利。

但是,当我想自动缩放时,什么都没有发生。

请问为什么?

我的第一个想法是,我什至不确定 Kubernetes 是否知道我们的 Prometheus 服务器在 X 位置的下落。

我无法理解两者如何协同工作。

如何根据位置 X 的 Prometheus 中可用的 SpringBoot 指标(请求计数)从 Kubernetes 实现 HPA?

谢谢

0 投票
3 回答
220 浏览

kubernetes - 是否有 Kubernetes 滚动升级/降级完成挂钩

当您编辑部署以更新 docker 映像时,我需要运行一个一次性脚本,该脚本会更改我的应用程序数据库的部分内容并发送一封电子邮件,告知滚动升级过程已完成并且结果通过/失败。

有没有可以将此脚本附加到的钩子?

0 投票
1 回答
580 浏览

kubernetes - PodDisruptionBudgets 是否优先于 Horizo​​ntalPodAutoscaler?

如果您有一个指定高于 HPA 的 PDB,那么minAvailablepodminReplicas的数量会达到更低的minReplicas吗?

示例配置:

数据库

HPA

我认为将 PDB 设置为 % 而不是绝对值可以解决这种潜在的冲突,但我很好奇这两者是如何相互配合的。

0 投票
0 回答
390 浏览

kubernetes - Kubernetes 水平 pod 自动扩缩器 - taget 副本计算

我正在运行一个Kubernetes 水平 pod 自动缩放 器,以根据消费者组滞后来扩展 kafka 消费者。HPA yaml 文件如下所示。

我观察到 HPA 不严格按照公式ceil(currentReplicas * currentMetricValue/desiredMetricValue)缩放副本。

例如,当指标(消费者滞后)为 108 且只有一个副本时,Kubernetes 只扩展了 4 个副本(如下面的屏幕截图所示),而理论上它应该扩展到 10(允许的最大副本数)......

在此处输入图像描述

关于原因的任何想法?我是否遗漏了诸如 HPA 协调循环的每次迭代可以缩放/复制的最大副本数之类的东西?

请注意屏幕截图中的消息“ScalingLimited True ScaleUpLimit 所需的副本数增加的速度快于最大缩放率”是什么意思?

谢谢。