首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当请求从服务端点移除时,kubernetes荚能响应吗?

当请求从服务端点移除时,kubernetes荚能响应吗?
EN

Stack Overflow用户
提问于 2022-01-28 01:35:47
回答 1查看 700关注 0票数 1

我知道,当pod接收到删除请求时,它就会从服务端点被删除,而不再接收请求。但是,我不确定在从服务端点删除它之前收到的请求是否能够返回响应。如果从服务端点丢失了pod IP,它还能响应请求吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-28 10:17:30

Kubernetes可能终止一个健康的容器有很多原因(例如,节点流失,由于节点上缺乏资源而终止,滚动更新)。

一旦Kubernetes决定终止一个Pod,就会发生一系列事件:

1- Pod设置为“终止”状态,并从所有服务的端点列表中删除

此时,吊舱停止了新的交通。吊舱内运行的容器不会受到影响。

2-执行preStop钩

preStop钩是一个特殊的命令或http请求,发送到容器中。如果您的应用程序在接收SIGTERM时没有优雅地关闭,您可以使用这个钩子触发一个优雅的关闭。大多数程序在接收SIGTERM时都会优雅地关闭,但是如果您正在使用第三方代码或管理您无法控制的系统,那么preStop钩子是一个很好的方法,可以在不修改应用程序的情况下触发一个优雅的关闭。

3-SIGTERM信号被发送到吊舱

此时,Kubernetes将向舱内的容器发送SIGTERM信号。这个信号让容器知道它们将很快被关闭。您的代码应该侦听此事件,并在此时开始彻底关闭。这可能包括停止任何长期存在的连接(如数据库连接或WebSocket流)、保存当前状态或类似的任何东西。即使您正在使用preStop钩子,如果您向应用程序发送SIGTERM信号,那么测试应用程序发生了什么也是很重要的,因此您在生产中并不感到惊讶!

4-Kubernetes等待一个宽限期

此时,Kubernetes等待一个称为终止宽限期的指定时间。默认情况下,这是30秒。需要注意的是,这与preStop挂钩和SIGTERM信号并行进行。Kubernetes不等待preStop钩子完成。如果应用程序在terminationGracePeriod完成之前关闭并退出,Kubernetes将立即进入下一步。如果你的吊舱通常需要超过30秒才能关闭,请确保增加宽限期。您可以通过在Pod中设置terminationGracePeriodSeconds选项来做到这一点。

5- SIGKILL信号发送到吊舱,吊舱被移除。

如果集装箱在宽限期后仍在运行,则向它们发送SIGKILL信号并强行移除。此时,所有Kubernetes对象也被清理干净。

我希望这给库伯奈特斯终止生命周期以及如何优雅地处理Pod终止提供了一个很好的想法。

基于这篇文章

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70887885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档