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

k8s探针详细学习笔记

在 Kubernetes 中,主要有三种类型的探针(Probes),用于检测容器的状态:
1.存活探针(Liveness Probes):
用来检测容器是否存活,即容器是否仍在运行。如果存活探针失败,Kubernetes 会根据容器的重启策略来重启容器。
2.就绪探针(Readiness Probes):
用来检测容器是否已经准备好接收流量。如果就绪探针失败,Kubernetes 会阻止将新的流量发送到该容器,但不会重启容器。
3.启动探针(Startup Probes):
用来检测容器内的应用程序是否在启动期间已经可用。这是 Kubernetes 1.12 版本引入的特性。如果启动探针失败,Kubernetes 会认为容器没有成功启动,并根据重启策略来重启容器。

三者结合使用的顺序是:启动探针——>存活探针——>就绪探针

每种探针都可以通过以下三种方式来实现:

ExecAction:
在容器内执行一个命令,根据命令的退出状态码来判断容器状态。

TCPSocketAction:
对容器的 IP 地址和端口进行 TCP 检查,如果能够建立连接,则认为容器状态正常。

HTTPGetAction:
向容器的 IP 地址和端口发送 HTTP GET 请求,根据响应状态码来判断容器状态。

每种探针都可以配置以下探针配置参数:
initialDelaySeconds:容器启动后等待多少秒再开始执行探针。
periodSeconds:探针的执行频率。
timeoutSeconds:探针超时时间。
successThreshold:探测成功时的阈值。
failureThreshold:探测失败时的阈值。

各个探针示例:
启动探针(Startup Probes)
应用场景:
检测应用程序是否在启动过程中已经可用。
例如,应用程序可能需要较长时间来初始化,在此期间不应接收流量。

startupProbe:
  httpGet:
    path: /health
    port: 8080
  failureThreshold: 30
  periodSeconds: 10

这个配置表示在容器启动后,每 10 秒发送一次 HTTP GET 请求到 http://:8080/health。如果在连续 30 次尝试中都失败,Kubernetes 将重启容器。这个探针可以防止在应用程序完全启动之前接收流量。

存活探针(Liveness Probes)
应用场景:
检测应用程序是否仍在运行,但未响应。
例如,应用程序可能因为某些错误而挂起或停止响应请求。

livenessProbe:
  exec:
    command: ["cat", "/tmp/health"]
  initialDelaySeconds: 15
  periodSeconds: 20

这个配置表示在容器启动 15 秒后,每 20 秒执行一次 cat /tmp/health 命令。如果命令返回非 0 状态码,Kubernetes 将重启容器。

就绪探针(Readiness Probes)
应用场景:
确定应用程序是否已经完全启动并准备好接收请求。
例如,应用程序可能需要加载大量数据或完成初始化操作。

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

这个配置表示在容器启动 5 秒后,每 10 秒发送一次 HTTP GET 请求到 http://:8080/ready。如果请求返回的 HTTP 状态码不是 200-399 范围内的值,Kubernetes 将不会向该容器发送流量。


http://www.kler.cn/a/281973.html

相关文章:

  • Python-简单病毒程序合集(一)
  • mysql 的乐观锁和 mvcc 是一回事吗
  • Java 全栈知识体系
  • 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
  • hadoop+wsl 10.255.255.254,BlockMissingException: Could not obtain block: 踩坑
  • 图像基础算法学习笔记
  • day42 代码随想录 | 子序列问题 面试高频题
  • 【Material-UI】Slider 组件中的 Range Slider 详解
  • 【mysql】mysql之数据查询语言
  • 【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_CondScale.cs
  • 爬取数据时,如何避免违法问题
  • 文件包含之session.upload_progress的使用
  • IO进程day05(线程、同步、互斥、条件变量、进程间通信IPC)
  • pypcap、libpcap和pcap-ct的区别是什么
  • ShenNiusModularity项目源码学习(2:登录页面验证码)
  • 前端面试手撕题收集(自用)
  • 推荐2024年新手友好的4款音乐剪辑软件!
  • nginx实验
  • C语言文件相关函数
  • 分库分表学习笔记(二)
  • RabbitMQ实战-JavaDemo
  • 盘古信息IMS MCM制造协同管理系统:为中小企业数字化转型量身打造的数字化方案
  • mysql-day02
  • 【C++ | 设计模式】抽象工厂模式的详解与实现
  • minio 大视频观看,下载
  • 【Datawhale AI夏令营】从零上手CV竞赛Task2