k8s用户容器在未完成过程的情况下被特使/istio-sigterm关闭



Envoy在流程完成前发送TERM信号并关闭我的应用程序。增加排水持续时间,防止吊舱在完成后下降。(等待宽限期结束,不允许任何新请求。

预期:

  1. 在获得Envoy Sigterm后,istio应该等待terminationDrainDuration秒,等待我在用户容器中的进程完成。如果进程未在宽限期内完成,则应终止(终止(所有剩余进程
  2. 如果我在用户容器中的进程在宽限期结束前完成,istio不应该等待,并立即发送kill信号

是否有任何方法可以检查用户容器中进程的完成情况,并在没有进程处于活动状态时发送终止信号?

在用户容器中运行的进程是Gunicorn进程。

从你的帖子中还不清楚你是在运行Knative,还是这是一个常见的Istio问题。(它有Knative标签,但没有提到Knative。(我还假设你在Kubernetes上运行Istio。这不是Istio的要求,但却是一种常见的配置。

根据您的描述,听起来这两个组件的生命周期有点混乱。Istio不负责应用程序的生命周期,kubelet负责。您可能需要设置terminationGracePeriodSeconds,以便在您的应用程序到期之前提前通知我的kubelet。

最新更新