问题标签 [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.
kubernetes - 基于 HTTP 请求计数的部署时 HPA 自动扩展
根据 HTTP 请求率,我对 HPA 配置有疑问。我正在使用基于 Prometheus 指标的速率sum(rate(http_server_requests_seconds_count[5m]))
- 但在启动时,HPA 会自动缩放到最大数量的 pod,尽管没有收到 HTTP 请求。请参阅下面 kubectl describe hpa 的摘录,显示它正在根据指标进行扩展,这发生在部署后的几秒钟内。
是否可以告诉 Kubernetes 在前 N 秒/分钟内不要进行扩展,或者是否有其他方法可以解决这个问题?
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_webhooks
和event_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
.
kubernetes - Kubernetes HPA 和缩减
我在集群中设置了一个 kubernetes HPA,它可以随着 CPU/内存的增加和减少而按预期扩展和缩小 Pod 实例。
唯一的问题是我的 Pod 处理 Web 请求,因此它偶尔会缩小正在处理 Web 请求的 Pod。Web 服务器永远不会从缩小的 pod 得到响应,因此 web api 的调用者会得到一个错误。
这在理论上都是有道理的。我的问题是有人知道处理这个问题的最佳实践方法吗?有什么方法可以等到所有请求都处理完毕后再缩小规模?或者其他方式来确保请求在 HPA 缩小 pod 之前完成?
我可以想到一些解决方案,但我都不喜欢:
- 向调用者添加重试机制,保持集群不变。
- 不要将 HPA 用于 Web 请求 pod(似乎它违背了目的)。
- 尝试创建某种自定义指标,看看我是否可以将该指标导入 Kubernetes(例如https://kubernetes.io/docs/tasks/run-application/horizo ntal-pod-autoscale/#support-for-custom-metrics )
任何建议,将不胜感激。提前致谢!
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 相关的重要信息/步骤?但在网上搜索时,我找不到与此特定问题相关的任何进一步信息......
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。
有什么办法可以做到这一点?
kubernetes - Prometheus 适配器返回空的自定义指标
在 prometheus-adapter 中配置了度量规则,我可以看到如下资源。
但是当我尝试获取指标值时。项目是空的。
这是规矩,
谁能帮我检查一下它有什么问题?
kubernetes - Kubernetes 自动缩放策略不起作用
我在 HorizontalPodAutoscaler 中添加了一些扩展策略,但它们没有被应用。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 规格是:
kubernetes - Kubernetes 缩小特定 pod
我有一个可以有多个副本 pod 的 Kubernetes 部署。我希望根据我的 python 应用程序中的一些逻辑(而不是 hpa 中的自定义指标)水平地增加和减少 pod。
我有两种方法:
- 使用 Horizontal Pod Autoscalar 并使用 kubernetes API 在我的应用程序中更改 minReplicas、maxReplicas
- 使用 API 直接更新我的部署中的“/spec/replicas”字段
以上两件事都适用于高档和低档。
但是,当我缩小时,我想删除一个特定的 Pod,而不是任何其他 Pod。
如果我在 HPA 中更新 minReplicas maxReplicas,那么它会随机删除一个 pod。当我更新部署中的 /spec/replicas 字段时也是如此。
如何在缩小时删除特定的 pod?
kubernetes - Kubernetes:如何配置/实现 HPA 以使用 CPU 进行扩展
我是 Kubernetes 新手。我有一个用 go 语言编写的应用程序,它有一个/live
端点。我需要根据 CPU 配置运行规模服务。如何根据 CPU 配置实现 HPA(水平 pod 自动缩放)。有人能帮我吗?谢谢!下面是/live
端点的代码
下面是服务和部署代码:
下面是我应用的 hpa 配置: