带你读《企业级云原生白皮书项目实战》——3.2.3 健康检查

简介: 带你读《企业级云原生白皮书项目实战》——3.2.3 健康检查

3.2.3 健康检查


readiness

kubelet 使用就绪探测器可以知道容器何时准备好接受请求流量,当一个 Pod 内的所有容器都就绪时,才能认为该 Pod 就绪。 这种信号的一个用途就是控制哪个 Pod 作为 Service 的后端。 若 Pod 尚未就绪,会被从 Service 的负载均衡器中剔除。有时候,应用会暂时性地无法为请求提供服务。 例如,应用在启动时可能需要加载大量的数据或配置文件,或是启动后要依赖等待外部服务。 在这种情况下,应用是无法承载相关业务流量的。Kubernetes 提供了就绪探测器来发现并缓解这些情况。即设置合理的就绪探针policy,让业务应用在完全启动之后,才加入到service的后端中承载业务流量。 就绪探测器在容器的整个生命周期中保持运行状态 ,合理的就绪设置,对于应用的平滑部署和滚动更新至关重要:

a. 目前探针类型主要是EXEC, TCP和HTTP(1.24版本中会加入grpc):如果业务是HTTP协议暴露的端口,建议探针类型选择HTTP,很多部署情况下会使用TCP探针,这种情况下存在四层监听就绪,但是七层业务还未启动的情况,可能会让业务状态未ok的pod被加到svc的后段,承载业务,进而引发业务超时或者5xx。

b.合理设置successThreshold、failureThreshold和timeoutSeconds对于pod能否平稳的提供业务应用非常重要。timeoutSeconds设置太小,比如 1ms等,这样的含义是探针1ms内没有得到回复,就认为探针失败,failure次数增加一次,这样很容易增加pod达到被判定失败的阈值,从而被从svc中移除后端,对于success来说,反之亦然。

liveness

kubelet 使用存活探测器来确定什么时候要重启容器。 例如,存活探测器可以探测到应用死锁(应用程序在运行,但是无法继续执行后面的步骤)情况。 重启这种状态下的容器有助于提高应用的可用性,即使其中存在缺陷。根据这个探针的行为,当探测失败达到阈值时候时候,会杀死重启容器。

a. liveness探针和readiness探针是同时启动的,所以不合理的liveness设置,可能会造成容器内应用还未完全启动时候,就被liveness探针探测失败而kill,就会引起pod一直处于不停的重启过程中,所以需要合理的设置initialDelaySeconds以实现pod内的应用完全read后,再执行liveness探针探测,或者可以设置startup探针。

b.合理设置successThreshold、failureThreshold和timeoutSeconds对于pod能否平稳的提供业务应用非常重要。timeoutSeconds设置太小,比如 1ms等,这样的含义是探针1ms内没有得到回复,就认为探针失败,failure次数增加一次,这样很容易增加pod达到被判定失败的阈值,从而被kill,对于success来说,反之亦然。

c.建议liveness探针和readiness 采用相同的探测方法和策略,否则liveness探测失败达到阈值,但是readiness 没有达到,这时候pod会马上收到SIGKILL 的信号,但是其实还是在SVC的后端中,这时候就需要考虑应用的滚动更新的情况了。

startupprobe

有时候,会有一些现有的应用在启动时需要较长的初始化时间。 这种情况下,若要不影响对死锁作出快速响应的探测,设置存活探测参数是要技巧的。 技巧就是使用相同的命令来设置启动探测,针对 HTTP 或 TCP 检测,可以通过将 failureThreshold * periodSeconds 参数设置为足够长的时间来应对糟糕情况下的启动时间。一旦启动探测成功一次,存活探测任务就会接管对容器的探测,对容器死锁作出快速响应。 如果启动探测一直没有成功,容器会在 300 秒后被杀死,并且根据 restartPolicy 来 执行进一步处置。


相关文章
|
3月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
740 108
|
3月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
kde
|
1月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
kde
353 4
|
5月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
7月前
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
573 17
|
5月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
3月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
335 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
2月前
|
存储 Kubernetes 持续交付
为什么Docker容器化改变了开发与部署?
为什么Docker容器化改变了开发与部署?

热门文章

最新文章