问题标签 [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 投票
1 回答
1068 浏览

kubernetes - 用于水平 Pod 自动缩放的外部指标 kubernetes.io|container|accelerator|duty_cycle 的 targetAverageValue 单位是什么?

我参考了这个stackoverflow 问题来为 google kubernetes 引擎(gke)工作负载设置我的 HPA(Horizo​​ntal Pod Autoscaler)。根据该问题的详细信息和此处指定的详细信息,我提到我的 targetAverageValue 为 50,这应该被视为 50%,但是当我运行命令 kubectl describe hpa 这是我在日志中注意到的行

Metrics: ( current / target ) "kubernetes.io|container|accelerator|duty_cycle" (target average value): 33500m / 50

这是我的 hpa yaml

它似乎正在使用其他单位进行测量。如果我希望它以 50% 的 duty_cycle 自动缩放,那么我的 targetAverageValue 应该是多少?

从门户添加占空比指标的屏幕截图,例如@Alberto Pau 询问duty_cycle 图像

0 投票
0 回答
244 浏览

apache-kafka - 具有长处理消息和水平扩展的 Kafka 的正确配置是什么

我的应用程序使用 max.poll.records: 1 的 1 条消息的平均处理持续时间在 5-15 分钟之间的消息。

当没有消息时,有 1 个 pod (K8S),对于每条传入的消息,我正在扩展 pod,将 1 个 pod 增加到最多 50 个。(我有 50 个分区)

现在我有几个问题:

  1. 当一个新的 pod 出现时,我需要很长时间才能看到分配的分区。我可以看到 pod 在收到 1 条消息之前几分钟就可以启动和终止。
  2. 我可以看到当很多消息插入到主题中时(超过 10 条(对于这个应用程序来说很多))它开始得到 commitException 并因此在不同的 pod 上使用相同的消息两次。

错误:

我的卡夫卡配置是:

0 投票
2 回答
1549 浏览

kubernetes - 是否可以在 cron 作业 pod 上使用 Kubernetes 自动缩放

一些背景:我每天、每周、每小时运行多个 cron 作业,其中一些需要强大的处理能力。我想向这些容器 cron pod 添加请求和限制,以尝试启用垂直扩展,并确保分配的节点在初始化时有足够的容量。这将防止我必须始终拥有多个可用的大型节点,并且还可以让我修改可以轻松并行运行的 crons 数量。我想尝试避免定时扩展,因为 cron 作业处理时间会随着应用程序的增长而增加。

编辑 - 附加信息:目前我正在使用 Digital Ocean 并利用它的 UI 进行集群自动缩放。我让它在部署时与 HPA 一起工作,但不是 crons。据我所知,向 crons 添加限制不会触发集群自动缩放。

我尝试使用 cron 启用 HPA 扩展,但没有成功。基本上它只是处于待处理状态,表明可用的 CPU 不足并且不会生成新节点。

HPA 扩展是否适用于 cron 作业 pod,有没有办法实现相同类型的扩展?

0 投票
4 回答
1403 浏览

kubernetes - K8S Ingress:如何限制每个 pod 中的请求

我正在移植一个应用程序以在 k8s 中运行。我遇到了入口问题。我正在尝试找到一种方法来限制在任何给定时间对部署管理的每个后端 pod 的 REST API 请求数量。

请参阅下图显示架构。

Ingress 由 nginx-ingress 管理。对于给定的一组 URL 路径,入口将请求转发到以部署 REST API 后端进程为目标的服务。部署也由基于 CPU 负载的 HPA 管理。

我想要做的是找到一种方法来对入口请求进行排队,这样对于运行我们 API 后端进程的任何 pod 的飞行请求永远不会超过 X 个。(例如,每个 pod 一次只允许 50 个正在运行的请求)

有谁知道如何设置这样的请求限制?

作为一个额外的问题,我需要做的下一件事是让 HPA 监控请求队列并自动扩大/缩小部署,以使 pod 的数量与当前正在处理/排队的请求数量相匹配。例如,如果每个 pod 可以一次处理 100 个正在运行的请求,并且我们当前有 1000 个请求的负载水平要处理,那么自动缩放到 10 个 pod。

如果有用,我还计划为这个集群安装 linkerd。也许它有一种可以提供帮助的能力。

在此处输入图像描述

0 投票
2 回答
138 浏览

kubernetes - HPA 未按比例缩小

我希望你能对此有所了解。

我面临与此处所述相同的问题:即使使用量低于阈值,Kubernetes 部署也不会缩减

我的配置几乎相同。

我检查了 hpa 算法,但我找不到我只有一个 my-app3 副本的解释。有什么提示吗?

0 投票
0 回答
976 浏览

kubernetes - Horizo​​ntalPodAutoscaler scaleDown 行为

我们正在使用v1.18ArgoCD

期望行为:当使用率低于 50% 时,每 5 分钟一次缩减 1 个 pod

HPA 使用默认规范完美地向上和向下扩展。

当我们将自定义行为添加到规范以实现Desired Behavior时,我们根本看不到 scaleDown 发生。

我猜我们的配置与算法冲突,这条消息可能是一个线索:

编辑:我们让它与其他设置(例如每 10 分钟 5 个 pod)一起使用自定义配置行为。我还注意到,在一个策略中,可以分布在periodSeconds中,这意味着如果我的periodSeconds为 600 且值为5,我可以缩小 1 个 pod,然后在 120 秒后缩小 2 个 pod,然后在 120 秒后再次缩小 2 个 pod,所有这些都在这 600 秒内,而我之前读过,每个periodSeconds将有一个缩放事件,最多可达pod的值数. 无论如何,我们仍在试图弄清楚如何每 5 分钟缩小 1 个 pod。我的理论是,如果我当前的 CPU 平均为 49%,有 10 个 pod,并且我一次只允许缩小 1 个 pod,我们最终的使用率将超过 50%(目标),因此“所需”的 pod 保持不变相同的。

HPA DEF

描述 HPA

0 投票
0 回答
57 浏览

kubernetes - 在 HPA 中使用被推送到 prometheus pushgateway 的指标

我正在通过 python 客户端推送一个指标来推送 prometheus 中的网关。我能够在普罗米修斯 UI 中查询指标 - “QYZ_normal”并获得结果。

我试图了解如何将该指标用于 HPA(我已经设置了 prometheus-adapter)

以下命令返回很多指标,但不是我推送给普罗米修斯的指标

我是否查看了错误的 API?如何在 HPA 中使用我的指标?

0 投票
1 回答
230 浏览

kubernetes - openfaas deployment.kubernetes.io/max-replicas vs com.openfaas.scale.max

我有一个 k8s 集群,我通过以下方式安装了 openfaas:

现在,我有以下内容stack.yml

然后用我在openfaas 文档中找到的上述标签装饰部署的函数。但是,如果我查看控制函数 pod 的副本集,我会看到它装饰有以下注释:

后一个注释对函数的副本集对实际函数的缩放有什么影响?如果我设置会发生什么

作为我的功能的标签?

我想确保真正控制我的函数的水平缩放。我应该如何进行?

0 投票
1 回答
621 浏览

google-cloud-platform - kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user "$(gcloud config get-value account)" 抛出错误

我正在尝试使用 GKE 设置 Horizo​​ntal pod autoscaler。

我正在按照此文档根据自定义指标设置自动缩放

https://cloud.google.com/kubernetes-engine/docs/tutorials/autoscaling-metrics

我坚持部署自定义指标适配器。

上面的命令抛出错误

您的活动配置是:[cloudshell-20206] 错误:创建集群角色绑定失败:发布“http://localhost:8080/apis/rbac.authorization.k8s.io/v1/clusterrolebindings?fieldManager=kubectl-create”:拨号 tcp 127.0.0.1:8080:连接:连接被拒绝

我无法授予用户创建所需授权角色的能力。

请指出我哪里错了

0 投票
0 回答
231 浏览

kubernetes - 为什么 GKE HPA 没有缩减?

我在 GKE 上的 Kubernetes 1.17 中有一个带有 Go 应用程序的 Kubernetes 部署。它有 cpu 和内存请求和限制。它在部署中指定了 1 个副本。

此外,我有这个 HPA(我autoscaling/v2beta2在 Helm 图表中定义了一个,但 GKEv2beta1显然将其转换为):

部署:

的输出kubectl get hpa --all-namespaces

我没有更改任何 Kubernetes 控制器的默认设置,例如 --horizo​​ntal-pod-autoscaler-downscale-stabilization。

问题:当cpu的currentAverageUtilization为33,target 1为80时,为什么不缩小到1个replicas?我等了1个多小时。

有任何想法吗?