首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Sidecar优雅退出

Pod慢导致的,我们可以看到kube-odin task设置的调度耗时时长不合理,没有考虑到容器删除的时间,这块的修复已经通知相关同事,我们更关注的是为什么删除用了这么长时间 回头再看下Pod中配置的优雅退出时间和容器退出前的...preStop配置 Pod的优雅推出时间为5s 业务容器配置的preStop为sleep 3s sidecar容器配置的preStop为sleep 3s 根据我们之前的理解,最长5s 容器就会被(强制)...问题出在哪里呢,经过对比代码和日志后发现 首先,此Pod包含sidecar,容器按序退出,先退出sidecar,再退出业务容器 先并行执行所有sidecar的preStop,sleep 3s 然后并行停止业务容器...,先执行preStop,sleep 3s,然后在 max(5s-3s, 2s) = 2s 内(强制)删除容器 (默认最小时间为2s,即至少给容器2s的时间用来优雅退出) 最后并行停止sidecar,先执行...,而不会强制删除,这就是为什么最后的sidecar退出用了10s之久 sidecar的功能当前还是在pull request中,没有合入主干,主干中的代码虽然有sidecar的能力,但是没有区分生命周期

48730

pod优雅退出

Pods的停止可以采用两种方式:强制停止和优雅停止。强制停止是一种粗暴的方式,直接终止Pods中正在运行的进程,并且不等待正在处理的请求完成。...相比之下,优雅停止则是一种更加温和的方式,它会给Pods中的进程发送一个信号,告诉它们要停止处理新的请求,并等待已经在处理中的请求完成。Pods的优雅退出是通过在Pods中运行预停止钩子来实现的。...当我们需要停止这个Pods时,Kubernetes将向容器发送一个SIGTERM信号,并等待一段时间(默认是30秒),以便容器可以优雅地停止。...当Kubernetes需要停止这个Pods时,它将向容器发送一个SIGTERM信号,并在执行这个Shell命令的过程中等待一段时间,以便容器可以优雅地停止。

69020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java - 探究Java优雅退出的两种机制

    Java优雅停机_ ShutdownHook 机制 Java优雅停机通常通过注册JDK的ShutdownHook来实现,当系统接收到退出指令时,首先标记系统处于退出状态,不再接收新的消息,然后将积压的消息处理完...Java优雅停机_ 信号量机制 除了注册ShutdownHook,还可以通过监听信号量并注册SignalHandler 的方式实现优雅退出。...Code 演示如何通过监听信号量并注册SignalHandler实现优雅退出 。...注意事项 使用Java的ShutdownHook(注册在JVM层面的钩子)进行应用的优雅退出时,有几个重要的注意事项: ShutdownHook的执行不确定性:ShutdownHook并非在所有情况下都会被...对于采用注册SignalHandler实现优雅退出的程序,在handle接口中一定要避免阻塞操作,否则它会导致已经注册的ShutdownHook无法执行,系统也无法退出

    30100

    优雅退出和零停机部署

    优雅关闭 在终端点从kube-proxy或Ingress控制器中删除之前终止Pod时,可能会出现业务中断时间。如果仔细考虑,这是有道理的。...由于在Kubernetes中不太可能立即从所有组件中删除终端点,您可以: 等待更长的时间再退出。 尽管收到SIGTERM信号,仍然处理传入的流量。...默认情况下,该进程有30秒的时间退出,其中包括preStop钩子。如果进程在此期间没有退出,kubelet会发送SIGKILL信号并强制终止进程。 kubelet会向控制平面通知成功删除Pod。...优雅停机和滚动更新 优雅停机适用于被删除的 Pod。但如果你不删除 Pod 呢?即使你不删除,Kubernetes 也会删除 Pod。...滚动更新和优雅停机 优雅期相对于就绪探针的时间越长,你将同时拥有更多运行中(和终止中)的 Pod。 这是不好的吗? 不一定,只要你小心不丢失连接即可。 终止长时间运行的任务 那么长时间运行的任务呢?

    34920

    Kubernetes 中 Pod 的优雅退出机制

    本文基于对 Kubernetes v1.23.1 的源码阅读 Kubernetes 提供了一种 Pod 优雅退出机制,使 Pod 在退出前可以完成一些清理工作。...Pod 正常退出 Pod 正常退出是指非被驱逐时退出,包括人为删除、执行出错被删除等。...整个过程在函数 killContainer 中,我们在 pod 优雅退出时,需要明确的是,kubelet 的等待时间由那几个因素决定,用户可以设置的字段和系统组件的参数是如何共同作用的。...sync options.GracePeriodSeconds = &period return true } kubelet 驱逐 pod 另外,在 kubelet 驱逐 pod 时,pod 的优雅退出时间是被覆盖的...总结 Pod 的优雅退出是由 preStop 实现的,本文就 Pod 正常退出和被驱逐时,Pod 的退出时间受哪些因素影响,各参数之间是如何相互作用的做了简要的分析。

    3.1K30

    Golang并发:并发协程的优雅退出

    这篇文章介绍,如何合理的退出goroutine,减少软件bug。 goroutine在退出方面,不像线程和进程,不能通过某种手段强制关闭它们,只能等待goroutine主动退出。...但也无需为退出、关闭goroutine而烦恼,下面就介绍3种优雅退出goroutine的方法,只要采用这种最佳实践去设计,基本上就可以确保goroutine退出上不会有问题,尽情享用。...它在并发中的使用场景是:当协程只从1个channel读取数据,然后进行处理,处理后协程退出。下面这个示例程序,当in通道被关闭时,协程可自动退出。...接收的协程要退出了,如果它直接退出,不告知发送协程,发送协程将阻塞。 启动了一个工作协程处理数据,如何通知它退出? 使用一个专门的通道,发送退出的信号,可以解决这类问题。...Shitaibin/golang_goroutine_exit 并发系列文章推荐 Golang并发模型:轻松入门流水线模型 Golang并发模型:轻松入门流水线FAN模式 Golang并发模型:并发协程的优雅退出

    5.2K30

    Java进程异常退出

    参考链接: Java中的异常 今天,内网测试服务器A总是运行一段时间就服务器进程自行退出了,给出了“Java Result :137”这样的错误码。上网查了一下这个137,感觉没有啥有价值的东西。...拿起手机,随意搜了一下“JAVA进程无端退出”,看到了一篇博客提出一个运维神指令dmesg(ps:有时候这个真是救命的神指令)可以查到一个进程的异常信息,在故障诊断方面非常有用。...,这下舒了一口气,JVM进程退出的原因算是知道了,被系统杀掉了,难怪看不到log。       ...,就会触发OOM(out of memory),从而导致进程退出,后来经过和运维同学确认这个机器配置,符合我的猜想,Docker且内存限制8G(低于设置的Xmx12G)。...总结:  1、在无异常log情况,应用退出,可以先考虑系统中断,dmesg查询相关信息  2、docker环境会影响应用,使用需要慎重,尤其是开发者和运维人员分离的情况下,开发者应该尽量了解到运维对系统的设置

    3.9K30
    领券