关于 K8S 探针(startupProbe、livenessProbe、readinessProbe)的最佳实践
1 什么是就绪检测、存活检测、启动检测?
我们在 k8s 中使用【readiness】探针是用来判定容器是否准备就绪,是否可以接受流量。当 Pod 内所以容器均就绪,则 Pod 将被认为已 ready,如果没有,那么将从 service 的 Loader Blance 中剔除该 Pod。
而 k8s 中使用【liveness】探针是用于判定是否需要重启容器,通常情况下主要用于检查容器是否无响应,死锁等,从而通过重启来提高应用的可用性。
至于k8s 1.6中增加的【starup】探针是用于判定应用程序容器什么时候启动了,而启用这个探针主要目的是希望容器在启动成功后再进行存活性和就绪检查,确保这些存活、就绪探测器不会影响应用程序的启动。这可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉。
用最简单的话概括liveness和startup的区别就是,startup是从0到1的检测过程,探测成功后再交由liveness接管,而liveness是从1到0的检测过程。
2 注意事项及最佳实践
在实际的使用中,很多就绪检测和存活检测配置一模一样,这是不合理的。
比较推荐的做法是:如果存活检测和就绪检测使用相同的健康检测方法,那么需要将 failureThreshold 设置的更大一些,比如就绪检测设置为3次失败就设置为未就绪,而存活设置为10次后才让存活检测失败。
原因是:当服务运行出现问题或者直接hang住,我们需要预留一定的缓冲空间,让就绪检测更灵敏一点,以在服务重启之前,先从K8S Service提供的负载均衡上将其流量摘掉,从Endpoint列表中去除。否则负载均衡将会把部分请求继续分发到已经发生重启的Pod实例上面。
还有一个地方需要特别注意,使用存活检测探针时,如果设置不当会引起应用可用性降低甚至是引发雪崩。即存活检测探针不能引入外部的故障注入,就绪检测探针是可以的,因为其并不会重启Pod实例。这个是我们在实践过程中遇到的比较严重的问题。比如在做存活检测的时候,如果数据库连接不上,rabbitmq无法连接,甚至于邮箱密码错误或者网络不稳定,那么可能导致存活检测不通过,而Pod被强制重启,从而导致业务中断,这肯定不是我们想要的情况,所以就需要避免这个外部依赖,避免引起雪崩。
所以最佳的实践需要区分就绪检测和存活检测的接口,存活检测探针可以仅检测程序运行与否,而和业务上重度耦合的一些健康检查可以留到就绪检测里去实现。
关于 K8S 探针(startupProbe、livenessProbe、readinessProbe)的最佳实践相关推荐
- k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性
引言 上一篇 文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并 ...
- Kubernetes--k8s---存活探针和就绪探针的最佳实践
我们在上一篇文章中学习了 Kubernetes–k8s-滚动更新–零停机不停服发布服务 里面涉及到 使用 存活探针和 就绪探针. 但是 这两个探针 具体怎么设置,是不是用同一个 api作为检查点,还是 ...
- Spark on K8S 的最佳实践和需要注意的坑
本文来自 Data Mechanics 的 CEO Jean-Yves Stephan 和 CTO Julien Dumazert 在 Spark Summit North America 2020 ...
- Kubernetes 存活探针和就绪探针的最佳实践
Kubernetes存活探针和就绪探针的最佳实践 [编者的话]Kubernetes提供了两种探针来检查容器的状态,Liveliness和Readiness,根据官方文档,Liveliness探针是为了 ...
- 十、k8s健康检查之 livenessProbe/readinessProbe
健康检查 一个pod启动了之后,它有可能还在做初始化,这就意味着在初始化的应用进程还不能接受网络流量,所以要去控制一下pod的状态,也就是我还没有就绪,我还不能够接受流量. 有些应用跑着跑着没有响应, ...
- k8s-故障转移 livenessProbe readinessProbe 学习总结
k8s-故障转移学习总结 大纲 概念 K8S中Pod健康检查 livenessProbe & readinessProbe livenessProbe 存活探测实例 readinessProb ...
- k8s探针检测php,K8S教程(7)使用探针对容器进行健康检查
应用在运行过程不可避免会出现各种问题导致服务不可用的情况发生,K8S的Health Check健康检查机制可以对这些异常服务进行重启.剔除等操作,保障高可用. 一.K8S的健康检查探针 K8S的探针主 ...
- ELK:收集k8s容器日志最佳实践
简介 关于日志收集这个主题,这已经是第三篇了,为什么一再研究这个课题,因为这个课题实在太重要,而当今优秀的开源解决方案还不是很明朗: 就docker微服务化而言,研发有需求标准输出,也有需求文件输出, ...
- 自建K8S迁移镜像、应用至阿里云ACK最佳实践
简介:本最佳实践构建以下场景: 1.以河源ECS构建Harbor仓库,模拟IDC的镜像仓库服务. 2.以河源ECS构建Registry仓库,模拟IDC的镜像仓库服务. 3.以河源地域模的ECS搭建K8 ...
- 可能是Asp.net Core On host、 docker、kubernetes(K8s) 配置读取的最佳实践
写在前面 为了不违反广告法,我竭尽全力,不过"最佳实践"确是标题党无疑,如果硬要说的话 只能是个人最佳实践. 问题引出 可能很多新手都会遇到同样的问题:我要我的Asp.net ...
最新文章
- MLIR(Multi-Level Intermediate Representation)概述
- 电动力学每日一题 2021/10/10
- DbgView软件 查看VC++ MFC 程序的打印信息
- 开户oracle监听,R12:银行账户开户人?
- Oracle的服务介绍以及正常运行必须启动的服务
- Android开发之android4.4沉浸式状态栏后toolbar和状态栏重复(重叠,覆盖)的bug
- jndi mysql数据库_JNDI连接数据库
- 昔日互联网影视巨头现在连三包服务都无法履行?客服:建议亲自行维修呢
- OpenResty之ngx.ssl
- Excel中 对「对话气泡(吹き出し)」中的文字添加删除线 等操作
- POJ 1094 Sorting It All Out 【拓扑排序】
- gltf、glb模型下载
- 常见条形码的用法和格式
- 如何利用光驱位给老旧笔记本电脑安装固态硬盘
- 琵琶行用计算机弹,琵琶行中的三次弹奏
- Idea的GenerateAllSetter插件,快速填充对象属性
- 使用JAVA将m3u8转换为mp4格式
- 心态不好的时候留给自己看
- 解决java.sql.SQLException: Access denied for user ‘***‘@‘localhost‘ (using password: YES)
- 撒旦撒旦阿三的撒的撒