当 pod 中的代码运行而 hpa 缩小时会发生什么?

时间:2021-06-16 15:20:35

标签: kubernetes autoscaling hpa

我正在学习 k8s hpa autoscale 并且有一个困惑。

如果有一些代码像这样在 pod 中运行:

# do something1
time.sleep(15)
# do something2

当执行到time.sleep(15),此时hpa缩小,这个pod会不会被移除,something2不会执行?

1 个答案:

答案 0 :(得分:2)

关于如何控制服务出现故障时应该发生的情况有几个选项。通常,K8S 会向容器的主进程发送一个 soft termination,该进程可以使用它来优雅地处理(拦截中断信号)。 虽然,K8S 只会等待 PodSpec 中定义的 terminationGracePeriod 时间。

您还可以使用名为 preStop 的生命周期钩子并在外部处理服务终止过程。

此 StackOverflow 答案中提供了一些信息:Is there a way to downscale pods only when message is processed (the pod finished its task) with the HorizontalPodAutoscaler in Kubernetes?

阅读 Kubernetes 文档,了解与服务管理和 Pod 生命周期相关的 Pod 终止过程。 https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination

要回答您的问题,将取决于 terminationGracePeriod 是否会执行 something2

相关问题