带你读《企业级云原生白皮书项目实战》——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 来 执行进一步处置。


相关文章
|
2月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
458 108
|
2月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
4月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
6月前
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
425 17
|
4月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
2月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
199 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
3月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
110 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
8月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
5月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
291 18
【赵渝强老师】数据库不适合Docker容器化部署的原因