k8s使用存活(liveness)和就绪(readiness)探针的场景

k8s使用存活(liveness)和就绪(readiness)探针的场景

图片

存活探针(liveness)主要用于检测容器是否仍然运行正常。如果存活探针检测到容器已经停止运行或者陷入死锁状态,Kubernetes会根据配置的重启策略来决定是否重启该容器。这样的机制有助于确保应用程序始终保持在运行状态,即使在遇到问题时也能自动恢复。

就绪探针(readiness)则用于判断容器是否已经准备好接收流量。在容器刚刚启动时,可能需要一段时间来完成初始化操作,如加载配置、建立数据库连接等。在这段时间内,容器可能还没有准备好处理请求。通过配置就绪探针,Kubernetes可以等待容器完成初始化并变得可用后,才将其纳入服务的负载均衡中。这样,只有当容器真正准备好时,才会开始接收请求,从而避免了因容器未就绪而导致的服务中断或错误。

  1. 如果容器中的进程能够在遇到问题或不健康的情况下自行崩溃,则不一定需要存活探针(liveness); kubelet 将根据 Pod 的restartPolicy 自动执行正确的操作。

     

2.如果希望容器在探测失败时被杀死并重新启动,需要指定一个存活探针(liveness),并指定restartPolicy 为 Always 或 OnFailure。

3.如果要仅在探测成功时才开始向 Pod 发送流量,请指定就绪探针(readiness)。在这种情况下,就绪探针可能与存活探针相同,但是 spec 中的就绪探针的存在意味着 Pod 将在没有接收到任何流量的情况下启动,并且只有在探针探测成功后才开始接收流量,这点在高并发场景下非常有用。

4.如果希望容器能够自行维护,可以指定一个就绪探针(readiness),该探针检查与存活探针不同的端点。

5.如果只想在 Pod 被删除时能够排除请求,则不一定需要使用就绪探针;在删除 Pod 时,Pod 会自动将自身置于未完成状态,无论就绪探针是否存在。当等待 Pod 中的容器停止时,Pod 是处于未完成状态。

“运维笔谈”公众号,对话回复 “阿里云k8s” 可以获取 “阿里云Kubernetes项目实战手册”

如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!

Kubernetes · 目录
上一篇Harbor的镜像保留规则简介下一篇部署kubernetes防火墙需要开启的端口号
阅读 164
 
 
 
 
 
 
 
 
 
 
 
posted @   技术颜良  阅读(443)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
历史上的今天:
2023-04-23 解决go gin框架 binding:"required"`无法接收零值的问题
2023-04-23 MySQL数据库数据对比工具——Mysqldbcompare
2023-04-23 解决ubuntu上回环设备/dev/loop0占用100%的问题
2022-04-23 go panic 和 recover(重要)
2021-04-23 使用elasticdump导入导出数据
2021-04-23 ElasticSearch修改默认分片数量
2021-04-23 ElasticSearch设置索引全局默认分片
点击右上角即可分享
微信分享提示