Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes中的Pod自动删除延迟_Kubernetes_Deadlock_Sigterm - Fatal编程技术网

Kubernetes中的Pod自动删除延迟

Kubernetes中的Pod自动删除延迟,kubernetes,deadlock,sigterm,Kubernetes,Deadlock,Sigterm,是否有一种方法可以自动延迟所有Kubernetes pod删除请求,从而发出端点注销的信号,但pod的SIGTERM会延迟几秒钟 如果延迟只影响具有端点/服务的POD,则这将是更好的选择,但不是必需的 背景: 由于端点注销和删除信号的性质,在Pod被发送SIGTERM终止信号后,一些流量可以继续发送到Pod。建议通过调用sleep在pod的preStop生命周期挂钩中引入几秒钟的延迟 如果pod的部署可以通过helm或其他上游来源完成,或者需要管理大量的部署和容器,则困难会迅速出现。以这种方式修

是否有一种方法可以自动延迟所有Kubernetes pod删除请求,从而发出端点注销的信号,但pod的SIGTERM会延迟几秒钟

如果延迟只影响具有端点/服务的POD,则这将是更好的选择,但不是必需的

背景:

由于端点注销和删除信号的性质,在Pod被发送SIGTERM终止信号后,一些流量可以继续发送到Pod。建议通过调用
sleep
在pod的
preStop
生命周期挂钩中引入几秒钟的延迟

如果pod的部署可以通过helm或其他上游来源完成,或者需要管理大量的部署和容器,则困难会迅速出现。以这种方式修改许多部署可能很困难,甚至是不可能的(例如,容器可能没有休眠二进制文件、shell或除应用程序可执行文件以外的任何内容)

我简要地研究了一个变异的准入控制器,但动态添加一个
preStop
钩子似乎不可行,因为所有图像都没有
/bin/sleep
,或者已经有一个
preStop
,可能需要图像特定的知识才能合并


(当然,如果K8S API使端点注销与超时同步以避免死锁(提示,提示),那么所有这些都可以避免,但我还没有看到任何关于这种更改的讨论。是的,有很多原因说明这不是同步的,但这并不意味着无法完成某些操作。)

Kubernetes生命周期有以下步骤

  • Pod设置为“终止”状态,并从所有服务的端点列表中删除
  • 执行预停止钩子
  • SIGTERM信号被发送到pod
  • Kubernetes等待宽限期,默认值为30秒
  • SIGKILL信号被发送到pod,pod被移除
宽限期是你需要的。 重要的是,这个宽限期与preStop hook和SIGTERM信号平行发生

如果容器已经处于终止或完成状态,那么对预停止挂钩的调用将失败。它是阻塞的,这意味着它是同步的,因此它必须在发送删除容器的调用之前完成

在这里,你可以阅读更多关于

例如,您可以设置
terminationGracePeriodSeconds:90
,如下所示:

spec: 
   terminationGracePeriodSeconds: 90
   containers:
       - name: myApplication

你可以阅读库伯内特斯的文件。我还推荐一篇很棒的博文。

是的,我了解
terminationGracePeriod
选项——这是关机完成的总超时时间。我想推迟所有吊舱的初始关机,哪怕只是几秒钟。如果我试图增加8秒的初始预停止延迟,我预计大多数POD都不需要更改宽限期。“此外,Kubernetes不会等待预停止挂钩完成。”-请提供此信息的来源?@Vusal,非常感谢您指出这一点。我编辑了答案以反映当前文档。