问题标签 [kubernetes-hpa]

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 投票
3 回答
2688 浏览

google-kubernetes-engine - 具有自动缩放功能的 Helm stable/nginx-ingress,HPA 无法读取 CPU 或内存指标

我在 GKE 集群上安装了最新版本(1.24.5)的stable/nginx-ingresswith 。autoscaling: true

完成部署后,HPA 表示unable to read all metrics

在此处输入图像描述

你能帮我调试和修复它吗?如果您需要更多详细信息/日志,请询问,我会提供!

谢谢

更新:

  • 我可以完美运行其他 HPA
  • kubectl get hpa返回

    CPU 未知/100m

    未知/100Mi 用于 RAM

0 投票
1 回答
1064 浏览

kubernetes - 基于 HTTP 请求计数的部署时 HPA 自动扩展

根据 HTTP 请求率,我对 HPA 配置有疑问。我正在使用基于 Prometheus 指标的速率sum(rate(http_server_requests_seconds_count[5m]))- 但在启动时,HPA 会自动缩放到最大数量的 pod,尽管没有收到 HTTP 请求。请参阅下面 kubectl describe hpa 的摘录,显示它正在根据指标进行扩展,这发生在部署后的几秒钟内。

是否可以告诉 Kubernetes 在前 N 秒/分钟内不要进行扩展,或者是否有其他方法可以解决这个问题?

0 投票
0 回答
1312 浏览

kubernetes - Prometheus Adapter 清空自定义指标项

我正在尝试使用 Prometheus 自定义指标和Prometheus Adapter自动扩展 Kubernetes 部署和 HPA 。这些自定义指标通过另一个命名空间中的另一个部署发布到 Prometheus,每分钟查询一个 REST API 以获取特定指标,然后将该指标的值发布到 Prometheus。从那里,适配器应该能够向 Prometheus 查询所述指标,并使用一些附加标签作为查询条件,并使用新名称发布该指标。从那里,HPA 应该能够获取此指标并根据其值进行缩放。

这里是我的部署的标签,适配器应该基于它的匹配:

以下是 Prometheus Adapter Helm 图表值/适配器规则:

这是metrics我的 HPA 规范的一部分:

我在这里遇到的问题不是适配器查询指标然后发布新指标,而是新指标没有与原始指标相关联的值。

例如,如果我运行,kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1确实看到了我的event_subscription_current_message_lag_webhooksevent_subscription_current_message_lag_webhook_retries指标,但它们不像原始event_subscription_current_message_lag指标那样具有任何价值。

这是来自的输出kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/event-subscription/pods/*/event_subscription_current_message_lag"

event_subscription_current_message_lag_webhooks这是and的输出event_subscription_current_message_lag_webhook_retries

我对适配器如何能够找到我的原始指标、查询它、发布新指标感到困惑,但如果没有值,我希望在这种情况下是1.

0 投票
1 回答
715 浏览

kubernetes - Kubernetes HPA 和缩减

我在集群中设置了一个 kubernetes HPA,它可以随着 CPU/内存的增加和减少而按预期扩展和缩小 Pod 实例。

唯一的问题是我的 Pod 处理 Web 请求,因此它偶尔会缩小正在处理 Web 请求的 Pod。Web 服务器永远不会从缩小的 pod 得到响应,因此 web api 的调用者会得到一个错误。

这在理论上都是有道理的。我的问题是有人知道处理这个问题的最佳实践方法吗?有什么方法可以等到所有请求都处理完毕后再缩小规模?或者其他方式来确保请求在 HPA 缩小 pod 之前完成?

我可以想到一些解决方案,但我都不喜欢:

  1. 向调用者添加重试机制,保持集群不变。
  2. 不要将 HPA 用于 Web 请求 pod(似乎它违背了目的)。
  3. 尝试创建某种自定义指标,看看我是否可以将该指标导入 Kubernetes(例如https://kubernetes.io/docs/tasks/run-application/horizo ​​ntal-pod-autoscale/#support-for-custom-metrics )

任何建议,将不胜感激。提前致谢!

0 投票
0 回答
162 浏览

kubernetes - Kubernetes HPA 自动删除

我想为我的 kubernetes 集群(裸机上的 1.14.0)上的部署设置 HPA,所以我按照说明在此处设置 metrics-server:https ://github.com/kubernetes-sigs/metrics-server 。

部署 metrics-server 后,我可以发出类似kubectl top nodes的命令并部署 HPA 使用kubectl autoscale deployment <deployment-name> --min=1 ...

目前,我面临的问题是创建的 HPAkubectl autoscale ...似乎在大约 4-5 分钟后由于某种原因被自动删除。所以,我觉得我缺少一些与 kubernetes 上的 HPA 相关的重要信息/步骤?但在网上搜索时,我找不到与此特定问题相关的任何进一步信息......

0 投票
2 回答
620 浏览

kubernetes - 防止K8S HPA在减少负载后删除pod

我有来自 prometheus 适配器的 sidekiq 自定义指标。使用普罗米修斯的队列指标我已经设置了 HPA。当 sidekiq 队列中的作业超过 1000 个作业时,HPA 会触发 10 个新 pod。然后每个 pod 将在队列中执行 100 个作业。当工作减少到 400 个时。HPA 将按比例缩小。但是当缩减发生时,hpa 杀死 pod 说 4 个 pod 被杀死。Thoes 4 pods 仍在运行作业,说每个 pod 正在运行 30-50 个作业。现在,当 hpa 删除这 4 个 pod 时,在它们上运行的作业也会终止。并且这些工作在 sidekiq 中被标记为失败。

所以我想要实现的是阻止 hpa 删除正在执行作业的 pod。此外,我希望 hpa 即使在负载降至最低后也不会缩小,而是在 sidekiq 指标中队列中的作业为 0 时删除 pod。

有什么办法可以做到这一点?

0 投票
1 回答
1306 浏览

kubernetes - Prometheus 适配器返回空的自定义指标

在 prometheus-adapter 中配置了度量规则,我可以看到如下资源。

但是当我尝试获取指标值时。项目是空的。

这是规矩,

谁能帮我检查一下它有什么问题?

0 投票
3 回答
1772 浏览

kubernetes - Kubernetes 自动缩放策略不起作用

我在 Horizo​​ntalPodAutoscaler 中添加了一些扩展策略,它们没有被应用。scaleUp和scaleDown行为被忽略。我需要一种方法来阻止 Pod 每隔几分钟就扩大和缩小一次以响应小的 CPU 峰值。理想情况下,HPA 会迅速扩大以响应更多流量,但在减少约 30 分钟的流量后缓慢缩小。

我在 AWS EKS 集群上运行它,我已经根据https://kubernetes.io/docs/tasks/run-application/horizo ​​ntal-pod-autoscale/#support-for-configurable-scaling-behavior 设置了策略.

这可能是 EKS 或我的 K8s 版本 1.14 的限制。我已经运行kubectl api-versions并且我的集群确实支持autoscaling/v2beta2

我的 Helm 规格是:

0 投票
1 回答
776 浏览

kubernetes - Kubernetes 缩小特定 pod

我有一个可以有多个副本 pod 的 Kubernetes 部署。我希望根据我的 python 应用程序中的一些逻辑(而不是 hpa 中的自定义指标)水平地增加和减少 pod。

我有两种方法:

  1. 使用 Horizo​​ntal Pod Autoscalar 并使用 kubernetes API 在我的应用程序中更改 minReplicas、maxReplicas
  2. 使用 API 直接更新我的部署中的“/spec/replicas”字段

以上两件事都适用于高档和低档。

但是,当我缩小时,我想删除一个特定的 Pod,而不是任何其他 Pod。

如果我在 HPA 中更新 minReplicas maxReplicas,那么它会随机删除一个 pod。当我更新部署中的 /spec/replicas 字段时也是如此。

如何在缩小时删除特定的 pod?

0 投票
1 回答
125 浏览

kubernetes - Kubernetes:如何配置/实现 HPA 以使用 CPU 进行扩展

我是 Kubernetes 新手。我有一个用 go 语言编写的应用程序,它有一个/live端点。我需要根据 CPU 配置运行规模服务。如何根据 CPU 配置实现 HPA(水平 pod 自动缩放)。有人能帮我吗?谢谢!下面是/live端点的代码

下面是服务和部署代码:

下面是我应用的 hpa 配置: