当前位置: 首页 > news >正文

k8s_Pod健康检查

Kubernetes 3种探针介绍

  1. LivenessProbe(存活探针)
    LivenessProbe 用于检查容器是否仍然活着。如果探针检测到容器已经失去响应,Kubernetes 将重启该容器。这通常用来修复由于内部状态错误或死锁引起的程序失效问题。
    作用:检测容器是否处于“存活”状态,如果探针失败,则容器会被重启。
    使用场景:适合长时间运行的容器,当容器出现死锁或无法继续正常工作时,通过 LivenessProbe 可以自动恢复服务。

  2. ReadinessProbe(就绪探针)
    ReadinessProbe 用于检查容器是否已经准备好处理流量。如果探针检测失败,Kubernetes 会将Pod从服务的负载均衡中移除,避免将流量发送到不健康的Pod。
    作用:判断容器是否可以处理请求,确保只有当容器准备好时,它才会接收流量。
    使用场景:用于检测容器是否能够对外提供服务。例如,应用初始化需要加载配置文件或依赖服务时,可以通过 ReadinessProbe 来避免服务在容器准备好之前接收请求。

  3. StartupProbe(启动探针)
    StartupProbe 用于检测容器的启动状态。它专门用于检测启动时间较长的容器,确保容器在完成启动之前不会被 LivenessProbe 错误地判定为不健康。如果配置了 StartupProbe,它将代替 LivenessProbe 进行探测,直到探针成功。
    作用:判断容器是否已经完成启动,避免因启动时间较长导致容器过早被 LivenessProbe 重启。
    使用场景:适用于那些启动时间较长的应用,如大型数据库或复杂的微服务,它们可能需要更多的时间来初始化。

配置参数说明
initialDelaySeconds:容器启动后第一次执行健康检查的延迟时间。
periodSeconds:两次健康检查之间的间隔时间。
timeoutSeconds:健康检查的超时时间,如果超过这个时间没有收到响应,认为检查失败。
failureThreshold:连续失败多少次后认为容器不健康并执行重启操作。
successThreshold:连续成功多少次后认为容器恢复健康。

检测容器的健康状态方式

  1. exec 方式
    exec 方式通过在容器内执行命令来检测健康状态。如果命令的退出状态码为 0,则表示健康;否则表示不健康,Kubernetes 会重启容器。
livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 10# 在这个例子中,Kubernetes每10秒执行一次 cat /tmp/healthy 命令,如果 /tmp/healthy 文件存在且命令成功执行,容器就被认为是健康的。如果文件不存在或命令失败,Kubernetes 会重启容器。
  1. httpGet 方式
    httpGet 方式通过发送HTTP请求到容器内的特定端点,根据返回的HTTP状态码来判断容器是否健康。返回2xx或3xx的状态码表示健康,其他状态码表示不健康。
livenessProbe:httpGet:path: /healthzport: 8080httpHeaders:- name: Custom-Headervalue: AwesomeinitialDelaySeconds: 3periodSeconds: 5#在这个例子中,Kubernetes每5秒向容器的/healthz端点发送一个HTTP GET请求。如果返回的状态码是2xx或3xx,容器被认为是健康的。如果返回其他状态码,容器会被重启
  1. tcpSocket 方式
    tcpSocket 方式通过尝试连接容器的TCP端口来检测健康状态。如果连接成功,则表示容器健康,否则容器将被重启。
livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 10periodSeconds: 20
# 在这个例子中,Kubernetes每20秒尝试连接容器的8080端口。如果连接成功,容器被认为是健康的;如果连接失败,容器将被重启

http://www.mrgr.cn/news/56905.html

相关文章:

  • RISC-V笔记——内存模型总结
  • rfid工业读写方案,赋能产线高效生产管理
  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了
  • Data+AI下的云数仓未来已来!
  • Uncaught (in promise) TypeError: Cannot convert object to primitive value
  • 提高采购效率:掌握采购订单跟踪管理的关键工具
  • Python Pandas 安装指南:快速入门与验证
  • 论文开题前的必备指南:如何做好充分准备
  • LeetCode题练习与总结:重新安排行程--332
  • 【c++丨STL】string类的使用
  • HarmonyOS鸿蒙分布式文件操作的时候权限问题
  • iOS 18.1新功能抢先看:控制中心大变身,睡眠呼吸暂停监测来袭
  • 经典动态规划问题:含手续费的股票买卖【从 O(n) 到 O(1) 的优化解析】
  • 多尺度建模:从理论到实践的深入探讨
  • 高客单价产品,Facebook广告投放应该怎么做?
  • Java手动实现完整的加密通信流程
  • Go中的指针指向指针(双指针)
  • h5和app区分
  • 什么是销售与销售管理?
  • avue-crud组件,输入框回车搜索问题
  • VScode超简单豆包MarsCode部署+初体验
  • 同事竟然用了这个注解@Deprecated
  • 2024 JavaScript 前端开发:技术融合、优势与常用库
  • ssm智慧游客服务系统-计算机毕业设计源码82047
  • Python教程:制作贪吃蛇游戏存以exe文件运行
  • Xinference 注册本地模型