问题标签 [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 回答
73 浏览

kubernetes - 如何将数据从 HPA 发送到外部 API 服务

我目前正在使用自定义指标动态扩展服务,我想将一些数据从 HPA 发送到我的外部 API 服务。是否有任何方式或任何发布请求将当前副本计数发送到我的外部 API?就像 HPA 有它的同步周期,它向 API 发送 GET 请求以获取指标值,所以有没有办法也有一些 POST 请求,以便我可以从 HPA 获取一些数据?

0 投票
1 回答
348 浏览

google-kubernetes-engine - Kubernetes HPA 行为

我们将上述行为用于 hpa,如果平均 CPU 高于目标,我们预计 hpa 每 60 秒将 pod 的数量翻倍。但是,我们从 GKE 日志中看到它实际上是在逐步缓慢增加的。有谁知道这背后的逻辑?

这是否意味着“在过去 60 秒内创建的实例不超过 100%(每次根据使用/请求升级工作负载)”

或者

“如果 cpu 利用率高于目标 cpu,则升级 100%”?

环境:平台:gke版本。1.18.17-gke.1901

0 投票
0 回答
19 浏览

amazon-web-services - 如何为 k8s 集群指定备用/空闲节点?

我在 AWS 上运行具有自动缩放功能的 k8s 集群。我使用集群来运行 Spark(master + workers)。其中一部分是工作节点的以下节点组:

使用此设置,我始终至少有 4 个节点可用于“热启动”,以防火花作业进入,以避免 +-2 分钟。现在,如果第二个 Spark 作业请求节点(并且 >4 个节点都已启动),那么第二个作业必须再次等待更多节点启动。我想创造一种情况,即始终立即获取新的火花作业,而没有“启动新节点”的开销。这对我来说尤其重要,因为数据集大小变化很大(从 MB 到 TB)并且用于探索性分析以及 ETL,我想要对小型数据集进行探索性分析

问题:我可以指定准备好接受新 Spark 作业的空闲/等待/备用节点的数量吗?

这是实现我想要的正确方法,还是有更好的方法?

0 投票
1 回答
615 浏览

kubernetes - 使用 Prometheus 适配器清空自定义指标资源列表

我在我的 Windows 机器上安装了 minikube。我的应用程序公开了一个自定义指标“http_requests_total”。我首先安装了 Prometheus 算子并配置它来抓取自定义指标。我可以看到自定义指标出现在 Prometheus 仪表板中。

安装 Prometheus 适配器时出现问题。我使用以下 helm 命令安装适配器:

然后我运行以下命令来编辑配置映射并为我的自定义指标添加规则:

我在此配置图中添加了以下部分:

完成此操作后,当我执行以下命令时:

我没有看到我的自定义资源被读取:

我已经阅读了 stackoverflow 上发布的多个类似问题,但似乎都没有有效的答案。我试图为我的适配器更改 prometheus url,但没有成功。我错过了什么?以下是来自适配器 pod 的日志:

以下是适配器部署中的参数:

以下是我的本地集群上存在的各种服务:

在适配器 pod 的日志开头,我看到以下错误行:

0 投票
1 回答
116 浏览

kubernetes - GKE Autoscaling:如何告诉 autoscaler 先移除旧的 pod?(FILO 代替 FIFO)

我们的应用程序中有一个小的内存泄漏。由于某些业务原因,我们没有资源来修复此内存泄漏。相反,如果我们的 pod 在一段时间后被删除或横向扩展会更好。

除了调试这种内存泄漏,是否可以通过首先删除旧的 pod 而不是新的 pod 来更改 Google Kubernetes Engine 自动缩放配置文件以缩小规模?本质上,我正在寻找一种“先进后出”的方法来缩小 pod,而不是“先进先出”的方法,这是 GKE 目前在自动扩展时使用的(据我所知)。

这可能吗?我在文档中没有找到任何关于此的内容。谢谢!

0 投票
1 回答
203 浏览

kubernetes - 带有需要作业的 initContainer 的水平 Pod 自动缩放 (HPA)

我有一个特定的场景,我希望有一个由水平 pod 自动缩放控制的部署。为了在推送新部署时处理 pod 中的数据库迁移,我在这里遵循了 Andrew Lock 的这篇优秀教程。

简而言之,您必须为 Kubernetes定义一个initContainerthat在新 pod 可以运行之前完成一个过程(如运行 db 迁移)。waitsJob

这很好用,但是,我不确定在初始部署后如何处理 HPA,因为如果系统检测到需要Pod在我的节点中添加另一个,initContainer我的部署中定义的需要Job部署和运行,但因为Jobs是一个-off 进程,pod 无法初始化和正常运行(ttlSecondsAfterFinished属性删除了Job反正)。

当我部署我的应用程序时,如何定义initContainer要运行的 an,以便我可以在 a 中推送我的数据库迁移Job,而且还允许 HPA 控制动态添加 aPod而不需要 a initContainer

这是我的deployment样子:

下面Job也部署了

所以基本上发生的事情是:

  • 我将这两个资源部署到我的节点
  • Job被初始化
  • initContaineron使用名为的图像Pod等待完成Jobgroundnuty/k8s-wait-for:v1.4
  • Job完成
  • initContainer完成
  • Pod初始化
  • (30 TTL 秒后)Job从节点中删除

(大量的交通)

  • HPA 意识到需要另一个 pod
  • initContainer对于 NEW pod 已启动,但由于Job不存在而无法运行
  • ...crashLoopBackOff

希望对处理这种情况的正确方法有任何见解!

0 投票
1 回答
86 浏览

kubernetes - 在何处以及如何编辑 Kubernetes HPA 行为

这里提到了如何编辑关于如何编辑自动缩放行为的可配置缩放行为。但我找不到任何要编辑的 YAML 文件或如何应用上述更改。

我有 3 个 Kubernetes 环境:

  • 码头工人桌面
  • 裸机 Kubernetes
  • 牧场主

我可以知道如何在上述环境中应用此处提到的更改。

0 投票
1 回答
58 浏览

kubernetes - Kubernetes - 一些 HPA 正在根据其他 HPA 的指标而不是他们自己的指标进行扩展

我想知道是否有人能够帮助我理解我在这里做错了什么。我的命名空间中有 3 个部署,每个部署都配置了一个 Horizo​​ntal Pod Autoscaler。然而,尽管每个 HPA 都配置了各自部署的目标,但它们似乎都对相同的 CPU 指标做出反应

在我的示例中,app3 是唯一一个忙碌的,但是如果您查看 TARGETS 列,所有 3 个 HPA 的利用率百分比计算相同,因此它们都已按比例放大...例如 app1,即完全空闲(每个 pod 仅使用 1m 的 cpu)已扩展到 5,因为该指标表明它处于 54%/100% ....

我试图实现的是,每个 HPA 仅对其配对的部署的 CPU 指标做出反应。因此在上面的例子中,app1 显然会停留在 2 个实例上

我的 HPA 配置如下所示(以下是 app1 的示例)

这是 app1 的部署代码(app2 和 app3 名称相同)

有谁知道我在这里做错了什么?它似乎正在扩展所有 Pod 的整体 CPU 平均值或类似的东西?如果 app3 真的很忙,我不希望 app1 和 app2 在它们实际空闲时也扩大规模

对此的任何帮助将不胜感激

0 投票
0 回答
33 浏览

kubernetes - 集群自动扩缩器在不应该时缩减节点

即使我们将scale-down-enabled设置为false ,集群自动缩放器也会缩减我们的节点

是否需要任何额外的配置来确保不会发生缩减?

0 投票
1 回答
59 浏览

kubernetes - 用于水平自动缩放的 kubernetes / prometheus 自定义指标

我想知道我们的服务器设置必须采取的一种方法。我们有短命的豆荚。它们至少以 3 个 pod 启动,每个服务器都在等待它处理的单个请求 - 然后 pod 被销毁。我不确定这个 pod 被破坏的机制,但无论如何我的问题不在于这部分。

我正在设想一个“活动会话计数”指标。这些 pod 资源中的每一个都可以对我们将为集群创建的一些“指标”pod 进行休息调用。指标 pod 将公开一个sessionStartedsessionEnded端点 - 这将增加/减少 kubernetesactiveSessions指标。该指标将用于水平自动缩放所需的 pod 数量。

由于将 pod 设为“up”算作零活动会话,因此增加会话计数的自定义事件将使用 rest 调用更新度量服务器会话计数,然后在会话结束时再次减少(pod 启动并不表示是否或不是它有一个活动的会话)。

认为我需要这个度量服务器(并自己编写)是否正确?或者,Prometheus 是否在已经支持此类指标的地方公开了一些东西 - 其余客户端和所有(对于各种语言),可以修改这个指标?

寻找指导和确认我在正确的轨道上。谢谢!