Kubernetes HPA和缩放

Kubernetes HPA和缩放,kubernetes,kubernetes-hpa,Kubernetes,Kubernetes Hpa,我在集群中设置了一个kubernetes HPA,它按照预期工作,随着cpu/内存的增加和减少,它可以上下扩展POD实例 唯一的一点是,我的pod处理web请求,因此它偶尔会缩小正在处理web请求的pod。web服务器从未从缩小的pod中得到响应,因此web api的调用者返回错误 这一切在理论上都是有道理的。我的问题是,有人知道处理这个问题的最佳实践方法吗?有没有什么方法可以让我等到所有请求都得到处理后再缩小规模?或者其他方法来确保在HPA缩小pod之前完成请求 我可以想出一些解决方案,但没有

我在集群中设置了一个kubernetes HPA,它按照预期工作,随着cpu/内存的增加和减少,它可以上下扩展POD实例

唯一的一点是,我的pod处理web请求,因此它偶尔会缩小正在处理web请求的pod。web服务器从未从缩小的pod中得到响应,因此web api的调用者返回错误

这一切在理论上都是有道理的。我的问题是,有人知道处理这个问题的最佳实践方法吗?有没有什么方法可以让我等到所有请求都得到处理后再缩小规模?或者其他方法来确保在HPA缩小pod之前完成请求

我可以想出一些解决方案,但没有一个我喜欢:

  • 向调用者添加重试机制,让集群保持原样
  • 不要将HPA用于web请求吊舱(似乎它无法达到目的)
  • 尝试创建某种自定义度量,看看是否可以将该度量输入Kubernetes(e.x)
  • 如有任何建议,将不胜感激。提前谢谢

    豆荚的优雅关闭 您必须设计应用程序以支持正常关机。首先,您的pod将收到一个
    SIGTERM
    信号,30秒后(可配置),您的pod将收到一个
    SIGKILL
    信号并被移除。看

    SIGTERM:当你的应用程序收到终止信号时,你的pod将不会收到新请求,但你应该尝试完成已收到请求的响应

    幂等性设计 您的应用程序还应设计为幂等性,以便您可以安全地重试失败的请求。

    正常关闭POD 您必须设计应用程序以支持正常关机。首先,您的pod将收到一个
    SIGTERM
    信号,30秒后(可配置),您的pod将收到一个
    SIGKILL
    信号并被移除。看

    SIGTERM:当你的应用程序收到终止信号时,你的pod将不会收到新请求,但你应该尝试完成已收到请求的响应

    幂等性设计 您的应用程序还应设计为幂等性,以便您可以安全地重试失败的请求