问题标签 [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.
kubernetes - 在 Kubernetes HPA 中过度配置 Pod 资源
目前,如果我们想在 kubernetes 中使用 Horizontal Pod 自动缩放,我们需要为我们想要做的服务指定以下内容:
我有一些服务都可以使用 HPA 进行扩展。
我们可以过度提供这些服务吗?像这些服务一样,资源添加超出了 VM 可用的总资源。
更新:: 1.对问题的更多解释,2.添加图像
考虑这样一种情况:假设 pod 的请求在总可用 CPU 范围内,但限制超出了它
例如:
总可用 CPU 为 1000m 核,2 个 pod,每个请求500m 核,每个限制1000m。
首先,如果总数只有 1000m,我可以将这个限制设置为每个 1000m 吗?
如果是? 更新2: <我认为我们可以做到,就像我在下图中所做的实验一样>
现在,如果 pod 2 没有使用其全部 500m 的 CPU 核心,并且 pod 1 已达到其总请求的 500m 限制,
这个吊舱现在可以使用超过 500m 的核心,而第二个核心没有使用,因为限制设置为 1000?
如果不? Update2:我想这不再有效
那么我猜无法完成过度配置?
kubernetes - 为什么 kubernetes HPA 没有缩小 pod?
我正在使用 prometheus 和适配器来扩展 HPA(自定义指标 memory_usage_bytes)。我不知道为什么 m 附加了 targetValue 并且 HPA 在不使用内存时也不会缩小 pod。
我错过了什么吗?
HPA 代码
kubectl 获取 hpa
custom.metrics.k8.io
kubernetes - Horizontal-Pod-Autoscale 仅当 CPU 负载在给定(5 分钟)内保持恒定时才缩放
我在 AWS 的 EKS 中部署了一个 k8s 集群。使用 Kubernetes 1.14 版本
Horizontal-Pod-Autoscale 仅当 CPU 负载在给定(5 分钟)内保持恒定时才缩放
因为我们想在 4-5 分钟后做出决定,如果在此期间负载仍然很高。
如果负载在 3-4 分钟后减少,则不要扩大规模,但目前我们无法找到任何方法。
horizontal-pod-autoscaler-upscale-delay
已弃用。
因此,我们正在寻找可以设置 HPA 的 CPU 使用持续时间的参数。
kubernetes - 基于集群中节点数量的水平 Pod Autoscaler 副本
我正在寻找能够在节点加入集群时自动扩展 Pod 并在删除节点时缩回的解决方案。我们在节点上运行 WebApp,这需要在计划断开节点时优雅地驱逐/终止 pod。我正在检查使用 DaemonSet 的选项,但由于我们使用 Kops 进行集群滚动更新,它忽略了 DaemonSets 驱逐(不支持标志“--ignore-daemionset”)。结果,WebApp 与我们的应用程序不可接受的节点一起“死亡”。HorizontalPodAutoscaler 覆盖部署 yaml 中设置的副本数量的能力可以解决这个问题。我想找到根据集群中节点的数量动态更改 HorizontalPodAutoscaler yaml 中的 min/maxReplicas 的方法。
任何想法如何获取节点数量并相应地更新集群中的 HorizontalPodAutoscaler yaml?或者任何其他解决问题的方法?
kubernetes - 具有 CrashLoopBackOff 的指标服务器
我无法运行 metrics-server pod,它会出现 crashloopbackoff 错误。运行“kubectl get pods -n kube-system”我看到以下输出:
然后,运行“kubectl describe pods metrics-server -n kube-system”,我看到以下内容:
有人可以帮我找出问题所在吗?我见过很多类似的案例,但没有一个有效。此外,我在一个主节点内运行。
编辑1:发布日志输出:
提前致谢 :)
spring-boot - Kubernetes pods 使用 TCP 连接优雅关闭(Spring boot)
我在天蓝色的云上托管我的服务,有时我会在没有任何明显原因的情况下得到“BackendConnectionFailure”,经过调查,在大多数情况下,我发现此异常与自动缩放(缩小)之间几乎同时存在相关性。
根据文档,终止宽限期默认为 30 秒,就是这种情况。pod 将被标记为终止,负载均衡器将不再考虑它,因此不再接收请求。据此,如果我的服务花费的时间远少于 30 秒,则我的应用程序中不需要 prestop 挂钩或任何特殊实现(如果我错了,请纠正我)。
如果上一段是正确的,为什么这个异常会比较频繁的发生呢?我的想法是当 pod 被标记为终止并且负载均衡器不再向 pod 转发请求时,它应该这样做。
编辑1:
架构就是这样
客户端 -> 防火墙(azure) -> API(azure APIM) -> 微服务(Spring boot) -> 后端(第三方) 或 Azure RDB,具体取决于服务
我认为异常来自 APIM,我发现此异常有两种模式:
Message The underlying connection was closed: The connection was closed unexpectedly. Exception type BackendConnectionFailure Failed method forward-request
Response time 10.0 s
Message The underlying connection was closed: A connection that was expected to be kept alive was closed by the server. Exception type BackendConnectionFailure Failed method forward-request
Response time 3.6 ms
kubernetes - 如何查看/调试 Kubernetes 自定义指标值 (custom.metrics.k8s.io)?
我正在使用它将指标从 Prometheus 导出到 Kubernetes。这似乎奏效了。我可以(成功)看到指标名称
这显示了指标的名称,但不显示值。我如何查看这些值?
我打算将它与 HorizontalPodAutoscaler 一起使用。我想看看 Kubernetes 度量系统中的度量值是什么样的,以帮助理解和正确配置它。
kubernetes - Kubernetes ResourceQuota 和 Autoscale
我有一个 azure Kubernetes 集群,其中包括 2 种类型的节点池。假设vm1 有 2vcpu & 8GB ram,而vm2 有 8vcpu & 32GB ram。此外,我有一组功能齐全的应用程序,它们通过使用nodeSelector/agentpool在这两个节点池上 运行(一些被定义为在节点池 1 上运行,其他在节点池 2 上运行)。两个节点池都设置为 vm 级别自动缩放,最小节点池为 1,它可以扩展到 3。我的应用程序与水平 pod 自动缩放和 vm (nodepool)完美配合使用当前设置进行级别缩放。现在我想建立一个新的集群,包括两个定义了 ResourceQuota 的命名空间。我的问题是假设我们将 2 个命名空间定义为 QA 和 Dev 并分配一些 ResourceQuota ,例如,
那么虚拟机级别的规模将如何发生,我该如何测试呢?有人可以解释一下吗?
kubernetes - 即使使用量低于阈值,Kubernetes 部署也不会缩减
我很难理解我的水平 pod 自动缩放器发生了什么。
如果内存或 CPU 使用率超过 80%,我正在尝试扩大我的部署。
这是我的 HPA 模板:
问题是,即使使用率低于 80%,它也已经坐了 3 个副本好几天了,我不明白为什么。
这是 top 命令的输出:
每个 pod 消耗大约 60% 的请求内存(因此它们低于 80% 的目标):
这是我的部署:
我手动缩小到 2 个副本,它会无缘无故地立即恢复到 3 个:
有人知道发生了什么吗?