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

kubernetes - HPA 缩小时保留最旧的 pod

当 HPA 扩大规模时,它会创建新的 pod,当它缩小时,这些新的 pod 会被终止,而 HPA 会保留最旧的 pod。我可以配置一些东西对 HPA 说以终止最旧的 pod 并保留一些最新的吗?

0 投票
1 回答
235 浏览

kubernetes - 当 Pod 通常需要低 CPU 但会定期扩展时,如何使用 K8S HPA 和 autoscaler

我正在尝试确定与 K8S 一起使用的可靠设置,以使用 HPA 和自动缩放器扩展我的一个部署。我想尽量减少过度使用的资源量,但允许它根据需要扩展。

我有一个管理 REST API 服务的部署。大多数情况下,该服务的使用率非常低(0m-5m cpu)。但在一天或一周内,它会周期性地飙升至 5-10 个 CPU (5000m-10000m) 的更高使用率。

我最初的配置是:

  • 部署:1 个副本
  • 高压钠灯:

这是在运行自动扩缩器的 AWS EKS 集群上运行的。所有实例都有 2 个 CPU。目标是随着 CPU 使用率的上升,HPA 将分配一个不可调度的新 pod,然后自动缩放器将分配一个新节点。当我在服务上增加负载时,第一个 pod 的 CPU 使用率最高会飙升至大约 90-95%。

我遇到了两个相关的问题:

  1. 小请求大小

通过使用这么小的请求值(cpu:0.05),即使在高负载下,新请求的 Pod 也可以轻松地调度到当前节点上。因此,自动缩放器永远不会找到无法调度且不会分配新节点的 pod。我可以增加较小的请求大小并过度使用,但这意味着在绝大多数没有负载的情况下,我将浪费我不需要的资源。

  1. 随着分配更多 pod,平均 CPU 减少

因为 pod 都被分配在同一个节点上,所以一旦分配了一个新的 pod,它就会开始共享该节点的 2 个可用 CPU。这反过来又减少了 pod 使用的 CPU 量,从而使平均值保持在 75% 的目标以下。

(例如:3 个 pod,2 个 CPU ==> 最大 66% 每个 pod 的平均 CPU 使用率)

我在这里寻找关于我应该如何考虑这个问题的指导。我想我错过了一些简单的东西。

我目前的想法是,我正在寻找一种方法,让 Pod 资源请求值在较重的负载下增加,然后在系统不需要时减少。这将使我倾向于使用 VPA 之类的东西,但我读过的所有内容都表明同时使用 HPA 和 VPA 会导致非常糟糕的事情

我认为将请求从 0.05 增加到 0.20 可能会让我处理扩大规模的情况。但这反过来会浪费大量资源,如果调度程序在现有 pod 上找到空间,可能会遇到问题。我的示例是关于一项服务,但在生产部署中还有更多服务。我不想让节点空着提交资源但没有使用。

最好的前进道路是什么?

0 投票
0 回答
33 浏览

kubernetes - 平衡多个 HPA 并阻止 pod 被驱逐

我们目前的情况是,一个 HPA 决定占用所有资源 - 迫使其他 HPA 驱逐他们的 pod。

无论如何要说平衡这些HPA?例如,hpa-1 有 25 个 pod,hpa-2 有 25 个 pod,而我们目前发现 hpa-1 有大约 40 个 pod,而 hpa-2 大约有 10 个被驱逐的 pod。吊舱中断预算在这里有帮助吗?

谢谢!

0 投票
1 回答
825 浏览

kubernetes - 在 GKE 的 HPA 中扩展时出错:apiserver 无法写入 JSON 响应:http2:流已关闭

按照 google 为在 Google Kubernetes Engine 中部署 HPA 所做的指南:https ://cloud.google.com/kubernetes-engine/docs/tutorials/autoscaling-metrics

并添加正确的权限,因为我在本指南中使用 Workload Identity:https ://github.com/GoogleCloudPlatform/k8s-stackdriver/tree/master/custom-metrics-stackdriver-adapter

并在此处添加评论的防火墙规则:https ://github.com/kubernetes-sigs/prometheus-adapter/issues/134

我被困在 HPA 向我返回此错误的地方:

但是 apiservices 是真的,

当我尝试检索它返回的指标数据时,

但是堆栈驱动程序给了我这个错误:

我必须像这样配置谷歌提供的适配器:

因为它禁用了端口 443,我不得不更改为 4443 并加上 --cert-dir=/tmp 选项,因为没有该选项,stackdriver 会返回错误:

我认为我解释了我为配置它所做的所有步骤,但没有成功。有任何想法吗?

0 投票
1 回答
304 浏览

kubernetes - Kubernetes:将 HPA 与来自其他 pod 的指标结合使用

我有:

  1. 在 k8s 中部署服务 A 和 B
  2. 普罗米修斯堆栈

我想在服务 B 的度量 m1 更改时扩展服务 A。我发现但或多或少不适合的解决方案:

  1. 我可以使用规范的以下部分为服务 A 定义 HPA:

从技术上讲,它会起作用。但它不适合 k8s 的动态特性。我也不能在 HPA 中使用 pods 指标(指标:-类型:Pods pods:),因为它会为服务 A 的 pod 请求 m1 指标(显然没有这个)

  1. 在 prometheus-adapter 中定义自定义指标,该指标从服务 B 的 pod 查询 m1 指标。它更合适,但看起来像解决方法,因为我已经有一个指标 m1

  2. 外部指标也是如此

我觉得我错过了一些东西,因为它看起来不像是一个不现实的案例:) 所以,请告诉我如何在 k8s 中按另一个服务的度量来扩展一个服务?

0 投票
1 回答
148 浏览

kubernetes - 为了获得容器所有副本的 cpu_usage_seconds_total 总和,可以在 prometheus 适配器上进行哪些配置?

我安装了 Kubernetes 集群和 Prometheus/Prometheus 适配器。

这是prometheus适配器配置规则:

这是我的 hpa 配置:

这里的问题是我想根据container=php-apache使用的副本的摘要而不是它们的平均值进行扩展。

这是从 Prometheus 适配器返回的值:

在此示例中,有 2 个副本。我想得到一个结果(这两个的总和),而不是像上面那样的两个结果,以便将结果传递给 hpa 并相应地缩放。

我怎样才能做到这一点?

0 投票
0 回答
37 浏览

kubernetes - 在 Kubernetes 中使用 Sumologic 的 HPA

我已经开始间歇性地收到尖峰信号。我正在将 Sumologic 用于日志。我正在考虑使用 HPA。我的 K8S 在内部设置。Sumologic 是否支持 HPA?服务是使用 ClusterIP 实现的。Duw to 秒杀服务返回503。我觉得应该实施HPA。不确定 Sumologic 是否适用于 HPA?

0 投票
1 回答
275 浏览

kubernetes - 使用 Cloud Monitoring 指标自动扩缩部署

我正在尝试根据 CloudSQL 实例响应时间自动扩展我的 pod。我们正在使用 cloudsql-proxy 进行安全连接。部署了自定义指标适配器。

https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml

我部署了应用程序并为此创建了 HPA,但我看到了错误。

0 投票
0 回答
87 浏览

kubernetes - Kubernetes minikube 自动缩放中是否提供中断功能?

我已经使用了自定义指标 API,并且已经成功地根据一些指标自动缩放了服务。但这里是自动缩放的工作方式,minikube 的 HPA(水平 pod 自动缩放器)将检查特定的 URL/API 并尝试找出在某个轮询周期内重复度量​​值。例如,HPA 将每 15 秒检查一次该值。所以这是从 HPA 到 URL/API 的连续轮询以获取该度量的值。之后它将简单地比较该值使用给定的目标参考值并尝试缩放。

我想要的是,API/URL 应该在需要时触发 minikube HPA,就像 HPA 应该在这里作为简单的中断工作。

自动缩放的调用应该是从服务/API 到 HPA,而不是从 HPA 到服务!

这个功能在 Kubernetes 中可用吗?或者您对这种情况有什么意见吗?请分享您对此的看法我目前处于最后阶段,这个问题正在阻止我的进步!

0 投票
1 回答
222 浏览

kubernetes - 使用 minkube 更改 kube-controller-manager.yaml

我想添加一些标志来更改同步周期。我可以用 minikube 和 kubectl 来做吗?或者我是否必须安装和使用 kubeadm 进行任何此类初始化?我参考了这个链接

我创建并运行了 yaml 文件,但出现错误说明

错误:无法识别“sync.yaml”:版本“kubeadm.k8s.io/v1beta2”中的种类“ClusterConfiguration”没有匹配项

我用来更改标志的sync.yaml(使用minikube):