kubernetes - Kubernetes Horizo​​ntal Pod Autoscaler 中的 Pod 副本缩减是如何工作的?

标签 kubernetes autoscaling kubernetes-hpa

我的理解是,在 Kubernetes 中,使用 Horizo​​ntal Pod Autoscaler 时,如果 targetCPUUtilizationPercentage 字段设置为 50%,并且所有 Pod 副本的平均 CPU 利用率高于该值,则HPA 将创建更多副本。一旦平均CPU在一段时间内下降到50%以下,就会降低副本数量。

这是我不确定的部分:
如果 Pod 上的 CPU 利用率是 10%,而不是 0%,会怎么样?HPA 是否仍会终止副本?
10% CPU 不算多,但由于它不是 0%,因此当前某些任务正在执行在那个 Pod 上运行。如果这是一个长期持续的任务(几秒钟)并且 HPA 决定终止 pod,则该任务将不会完成。

HPA 是否仅在 Pod 的 CPU 利用率为 0% 时才终止 Pod,还是在发现该值低于 targetCPUUtilizationPercentage 时才终止 Pod?

HPA 如何决定删除哪些 pod?
谢谢!

最佳答案

所以你有两个问题,让我一一解答。第一部分 - 如果副本集中的某个 pod 消耗了 10%,那么 Kubernetes 会杀死该 pod 吗?答案是肯定的。 Kubernetes 关注的不是单个 Pod,而是该副本集中所有 Pod 的指标平均值。而且缩小是逐渐的as explained here

问题的第二部分 - 当 pod 即将被杀死并且仍在处理某些请求时,您的应用程序如何优雅地运行?这可以通过 grace period of the pod termination 来处理如果你实现 a PreStop hook 就更好了- 这将允许您执行诸如停止接受传入请求但处理现有请求之类的操作。其实现将根据您使用的语言运行时而有所不同,因此我不会在这里详细介绍。

最后 - 您应该考虑的一种情况是,如果正在运行的 pod 上的虚拟机突然停机,您将没有机会执行 PreStop Hook !我认为应用程序需要足够强大才能处理故障。

关于kubernetes - Kubernetes Horizo​​ntal Pod Autoscaler 中的 Pod 副本缩减是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50080526/

相关文章:

ubuntu - 为什么 systemd 在 WSL 中被禁用?

python - 如何将 Airflow worker 的数量安装到 Airflow kubernetes pod 运算符(operator)?

json - 有些资源不是由 cloudformation 创建的

google-cloud-platform - 如何在不停止运行应用程序的情况下垂直扩展Google Cloud实例

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

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

Azure Kubernetes 保持事件 TCP 套接字

docker - 在 Kubernetes digital ocean 负载均衡器上安装 ssl

amazon-web-services - AWS 是否支持 RDS 实例的自动缩放

kubernetes - 多个副本/Pod 如何扩展 Kubernetes?