k8s-学习笔记13-钩子函数

特点

  1. PostStart hook是在容器创建(created)之后立马被调用,并且PostStart跟容器的ENTRYPOINT是异步执行的,无法保证它们之间的顺序
  2. PreStop hook是容器处于Terminated状态时立马被调用(也就是说要是Job任务的话,执行完之后其状态为completed,所以不会触发PreStop的钩子),同时PreStop是同步阻塞的,PreStop执行完才会执行删除Pod的操作
  3. PostStart会阻塞容器成为Running状
  4. PreStop会阻塞容器的删除,但是过了terminationGracePeriodSeconds时间后,容器会被强制删除
  5. 如果PreStop或者PostStart失败的话, 容器会被杀死

PreStop

Kubernetes 中如何保证优雅地停止 Pod_cbmljs的博客-CSDN博客_k8s停止pod

如何利用termination GracePeriodSeconds 优雅地关闭你的服务 - 云+社区 - 腾讯云 (tencent.com)

 

简单的说Kubernetes终止Pod生命周期的每一步

  • Pod 设置为Terminating状态,并从所有服务的Endpoints列表中删除
  • 此时,Pod停止,但是Pod中运行的容器不受影响
  • PreStop Hook被执行
  • preStop Hook发送容器特殊命令或者Http请求到Pod中
  • 此时,Kubernetes将向Pod中的容器发送SIGTERM信号,这个信号即通知容器他们很快将进行关闭。
  • Kubernetes等待优雅的终止
  • 此时,Kubernetes等待指定的时间称为优雅终止宽限期。默认情况下,这是30秒(可以修改),值得注意的是,PreStop Hook和SIGTREM信息是属于并行执行,Kubernetes不会等待PreStop Hook完成。

如果Pod在terminationGracePeriod完成之前推出,Kubernetes将进入释放阶段,如果容器在优雅终止宽限期(terminationGracePeriod限定时间),则会发送SIGKILL信号并强制删除。与此同时,所有的Kubernetes对象也会被清除。

 

PostStart

 

posted @ 2021-04-28 16:11  jabbok  阅读(440)  评论(0编辑  收藏  举报