我在集群中设置了一个kubernetes HPA,它可以按预期的方式随着cpu /内存的增加和减少来扩展和减少pod的实例。
唯一的事情是我的Pod处理Web请求,因此偶尔会缩小正在处理Web请求的Pod。 Web服务器永远不会从按比例缩小的Pod中获得响应,因此Web api的调用者会返回错误。
从理论上讲,这一切都是合理的。我的问题是,有人知道处理此问题的最佳做法吗?有什么方法可以等到所有请求都处理完再缩小?还是采用其他方法来确保请求在HPA缩小Pod之前完成?
我能想到一些解决方案,我都不喜欢:
任何建议将不胜感激。预先感谢!
答案 0 :(得分:1)
您必须设计您的应用程序以支持正常关机。首先,您的广告连播会收到SIGTERM
信号,在30秒(可以配置)之后,您的广告连播会收到SIGKILL
信号并被移除。参见Termination of pods
SIGTERM :当您的应用收到终止信号时,您的广告连播不会收到新请求,但是您应该尝试满足已收到请求的响应。
您的应用还应该针对幂等设计,以便您可以安全地重试失败的请求。