Pod 副本缩减在 Kubernetes Horizontal Pod Autoscaler 中如何工作?
How does pod replica scaling down work in Kubernetes Horizontal Pod Autoscaler?
我的理解是,在 Kubernetes 中,当使用 Horizontal Pod Autoscaler 时,如果 targetCPUUtilizationPercentage
字段设置为 50%,则所有 Pod 副本的平均 CPU 利用率高于该值值,HPA 将创建更多副本。一旦平均值 CPU 在一段时间内下降到 50% 以下,它会降低副本的数量。
这是我不确定的部分:
如果 pod 上的 CPU 利用率是 10%,而不是 0% 怎么办?HPA 是否仍会终止副本?
10% CPU 并不多,但是由于它不是 0%,因此该 pod 当前 运行 有一些任务。如果这是一项持续时间很长的任务(几秒钟)并且 HPA 决定终止 pod,则该任务将不会完成。
HPA 是仅在 CPU 利用率为 0% 时才终止 pods,还是在发现该值低于 targetCPUUtilizationPercentage
时终止它们?
HPA 如何决定删除哪个 pods?
谢谢!
所以你有两个问题,让我一一解答。第一部分——如果副本集中的一个 pod 消耗了 10%,那么 Kubernetes 会杀死那个 pod 吗?答案是肯定的。 Kubernetes 不是在查看单个 pods,而是在该副本集中所有 pods 的平均值。缩小也是渐进的 as explained here
问题的第二部分 - 当 pod 即将被杀死但它仍在处理一些请求时,您的应用程序如何表现得体?这可以由 grace period of the pod termination and even better if you implement a PreStop
hook 处理 - 这将允许您执行一些操作,例如停止接收传入请求但处理现有请求。这个的实现会根据你使用的语言运行时而有所不同,所以我不会在这里详细介绍。
最后 - 您应该考虑的一种情况是,如果 运行 所在 pod 上的 VM 突然关闭 - 您没有机会执行 PreStop 挂钩!我认为应用程序需要足够健壮才能处理故障。
我的理解是,在 Kubernetes 中,当使用 Horizontal Pod Autoscaler 时,如果 targetCPUUtilizationPercentage
字段设置为 50%,则所有 Pod 副本的平均 CPU 利用率高于该值值,HPA 将创建更多副本。一旦平均值 CPU 在一段时间内下降到 50% 以下,它会降低副本的数量。
这是我不确定的部分:
如果 pod 上的 CPU 利用率是 10%,而不是 0% 怎么办?HPA 是否仍会终止副本?
10% CPU 并不多,但是由于它不是 0%,因此该 pod 当前 运行 有一些任务。如果这是一项持续时间很长的任务(几秒钟)并且 HPA 决定终止 pod,则该任务将不会完成。
HPA 是仅在 CPU 利用率为 0% 时才终止 pods,还是在发现该值低于 targetCPUUtilizationPercentage
时终止它们?
HPA 如何决定删除哪个 pods?
谢谢!
所以你有两个问题,让我一一解答。第一部分——如果副本集中的一个 pod 消耗了 10%,那么 Kubernetes 会杀死那个 pod 吗?答案是肯定的。 Kubernetes 不是在查看单个 pods,而是在该副本集中所有 pods 的平均值。缩小也是渐进的 as explained here
问题的第二部分 - 当 pod 即将被杀死但它仍在处理一些请求时,您的应用程序如何表现得体?这可以由 grace period of the pod termination and even better if you implement a PreStop
hook 处理 - 这将允许您执行一些操作,例如停止接收传入请求但处理现有请求。这个的实现会根据你使用的语言运行时而有所不同,所以我不会在这里详细介绍。
最后 - 您应该考虑的一种情况是,如果 运行 所在 pod 上的 VM 突然关闭 - 您没有机会执行 PreStop 挂钩!我认为应用程序需要足够健壮才能处理故障。