当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯从endpoint移除终止吊舱需要多长时间?

丁经国
2023-03-14

我们在项目中使用Kubernetes中的Spring Boot。最近,我们决定为我们的应用程序添加适当的关闭,以确保无缝部署,并确保在pod终止过程中不会因任何原因导致任何请求失败。尽管Spring Boot提供了良好的关闭,但由于Kubernetes开始从endpoint移除pod,并同时向pod发送SIGTERM信号,因此请求仍有可能失败。引用kubernetes文件:

在kubelet开始优雅关机的同时,控制面从endpoint(如果启用,还有endpoint切片)对象中删除该关机Pod,这些对象表示具有配置选择器的服务。

这里更详细地描述了这一点。这里也提供了解决方案

您可以在pod规范的preStop挂钩中添加睡眠,当然,可以将该睡眠配置为对您的用例有意义的任何内容:

在提供的示例中,此睡眠配置为10秒,但我想知道合理的值是多少,因此pod的终止不会不必要地延迟?

谢谢。

共有1个答案

贺栋
2023-03-14

看起来这可能取决于你的喜好,但看起来5-10秒的睡眠是一个推荐的范围:

在"库伯内特斯在行动",Lukša建议5-10秒https://blog.gruntwork.io/delaying-shutdown-to-wait-for-pod-deletion-propagation-445f779a8304

 类似资料:
  • 我有一个应用程序,通过部署类型部署,副本为1。调度器不断地将应用程序移动到不同的节点: I022008:28:44.884808 1 Event.go:218]事件(V1.ObjectReference{kind:“pod”,namespace:“production”,name:“app1-production-77C79BDC85-DDJFB”,uid:“109fa057-1618-11e8-

  • 迷你库版本v0.24.1 kubernetes 1.8.0版 我面临的问题是,我在minikube中创建了几个,每个都有一个pod。 有时,当我启动minikube时,我的吊舱会先启动,然后由kubernetes重新启动。它们将一次又一次地从创建容器状态到运行状态,再到终止状态。 现在,我已经看到kubernetes杀死和重启的东西之前,如果kubernetes检测到磁盘压力,内存压力,或其他类似

  • 我在调查小虫。我有我豆荚名字的日志。那个吊舱已经不存在了,它被另一个(配置不同的)取代了。新pod驻留在与旧pod相同的名称空间、复制控制器和服务中。 命令,如 仅使用当前的吊舱(活动或停止)。 我怎么能得到更多关于旧豆荚的细节?我想看看 创建它们的时间 它们在创建时具有哪些环境变量 停止的原因和时间

  • 我的kubernetes部署中有一个多容器吊舱: java redis nginx 对于每一个集装箱,普罗米修斯出口商也有一个集装箱。 问题是,如果annotations部分只支持每个pod一个端口,我如何向Prometheus公开这些端口? 但是我需要这样的东西: 也许还有其他方法可以从我的多容器pod中获取所有指标?提前感谢您的帮助。

  • 我正在VM中运行一个单节点Kubernetes集群,用于开发和测试。我使用Rancher Kubernetes引擎(RKE,Kubernetes版本1.18)部署它,并使用MetalLB启用LoadBalancer服务类型。Traefik是2.2版,通过官方掌舵图部署(https://github.com/containous/traefik-helm-chart)。我部署了几个虚拟容器来测试设置

  • 我是库伯内特斯的新手。我已经在Oracle虚拟盒管理器上设置了3个Ubuntu 20.04.2 LTS虚拟机。 根据以下文档,我已经在所有3个虚拟机中安装了docker、kubelet、kubeadm和kubectl https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 我使用以