首页 > 其他分享 >Pod的探针区别

Pod的探针区别

时间:2025-01-22 18:05:33浏览次数:1  
标签:容器 Liveness Kubernetes Readiness 区别 探针 Pod Probe

Kubernetes 中的 Pod 探针:监控容器运行状态的核心机制

在 Kubernetes(简称 K8s)中,Pod 可以通过三种类型的探针(Probe)来监控容器的运行状态,确保应用程序的健康和服务稳定性。这三种探针分别是:


1. 存活探针(Liveness Probe)

  • 功能:
    检查容器是否仍然处于正常运行状态。如果 Liveness 探针多次失败(未通过健康检查),Kubernetes 会认为容器已经发生不可恢复的错误,并通过 kubelet 终止并重启该容器。
  • 作用:
    • 确保应用程序在卡死或进入不稳定状态时能够自动恢复。
    • 防止无法自行恢复的容器持续占用系统资源。
  • 典型场景:
    • 服务因为死锁或逻辑错误导致不再响应。
    • 应用程序在运行过程中出现无法修复的内部异常。

示例:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 5

2. 就绪探针(Readiness Probe)

  • 功能:
    检查容器是否已经准备好接收请求流量。如果探针未通过,Kubernetes 会将 Pod 从 Service 的负载均衡器(Endpoints 列表)中移除,确保流量不会路由到该 Pod。
  • 作用:
    • 确保只有成功完成初始化或满足特定条件的容器才能对外提供服务。
    • 避免向未完全准备好的容器发送请求。
  • 典型场景:
    • 应用程序需要完成初始化过程(如加载配置、连接数据库)才能提供服务。
    • 后台任务需要预热缓存或加载资源。

示例:

readinessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

3. 启动探针(Startup Probe)

  • 功能:
    检测容器应用是否已完成启动过程。
    如果配置了 Startup 探针,它会在应用完成启动之前替代 Liveness 和 Readiness 探针的功能。只有当 Startup 探针成功通过后,其他探针才会开始生效。
  • 作用:
    • 防止应用程序在长时间启动过程中被误判为健康检查失败。
    • 提供更宽松的时间窗口,允许启动较慢的应用有足够时间完成初始化。
  • 典型场景:
    • 复杂的应用程序(如大型服务或遗留系统)需要较长时间完成初始化。
    • 服务的启动时间可能受环境或负载影响。

示例:

startupProbe:
  exec:
    command:
    - cat
    - /tmp/ready
  initialDelaySeconds: 10
  periodSeconds: 5
  failureThreshold: 30

探针的检查方式

Kubernetes 的探针支持以下三种方式进行健康检查:

  1. HTTP GET
    通过 HTTP 请求检查服务的特定端点是否返回成功状态码(通常为 200)。
    示例:

    httpGet:
      path: /healthz
      port: 8080
    
  2. TCP Socket
    通过尝试建立 TCP 连接检查容器是否响应。
    示例:

    tcpSocket:
      port: 8080
    
  3. 命令执行(Exec)
    在容器内执行命令,通过其退出码(0 为成功)判断健康状态。
    示例:

    exec:
      command:
      - cat
      - /tmp/healthy
    

参数配置

探针的行为可以通过以下参数进行精确控制:

  • initialDelaySeconds:容器启动后等待多久开始进行第一次探测。
  • periodSeconds:探测间隔的时间。
  • timeoutSeconds:每次探测的超时时间。
  • successThreshold:判断为成功所需的连续成功次数(适用于 Readiness 和 Startup)。
  • failureThreshold:判断为失败所需的连续失败次数。

探针的协同作用

  • 启动探针优先级最高:
    在 Startup 探针通过之前,Liveness 和 Readiness 探针不会生效。
  • Liveness 和 Readiness 的区别:
    • Liveness 关注应用是否“活着”并重启失败的容器。
    • Readiness 关注应用是否“准备好”接收流量。
  • 综合使用:
    为复杂应用配置多个探针,可以确保应用的启动、运行和服务过程都受到有效监控。

总结

探针在 Kubernetes 中扮演重要角色:

  • Liveness Probe 保证容器在故障时能够自动恢复。
  • Readiness Probe 确保只有准备好的容器参与服务。
  • Startup Probe 避免长时间初始化的容器被误判。

合理配置这些探针,可以有效提高应用的可用性和稳定性,确保 Kubernetes 集群中的工作负载始终按预期运行。

标签:容器,Liveness,Kubernetes,Readiness,区别,探针,Pod,Probe
From: https://www.cnblogs.com/leojazz/p/18686416

相关文章

  • Pod的重启策略
    KubernetesPod的重启策略在Kubernetes(简称K8s)中,Pod的重启策略(RestartPolicy)决定了当容器失败时,kubelet应该如何处理容器的重启行为。重启策略主要由spec.restartPolicy字段定义,并适用于整个Pod中的所有容器。Kubernetes支持以下三种主要的重启策略:1.Always(默认策略......
  • Python和Python 3 的区别
    Python和Python3都是非常流行的编程语言,在开发中都有各自的优点和特点。以下是其中一些值得注意的区别:代码兼容性:Python2.x和Python3.x不兼容,这是最重要的区别之一。Python2.x是早期版本,而Python3.x是重大更新后的版本,并且不完全向后兼容。这意味着在迁移过程中,需......
  • 【转】[WPF] 在设置 DataGrid 的列隐藏时,Hidden 和 Collapsed 的区别
    转自:kimi.ai在WPF中,DataGrid的列隐藏通常通过设置列的Visibility属性来实现,而Visibility属性有三个可能的值:Visible、Hidden和Collapsed。虽然它们都可以用来隐藏元素,但在某些情况下,它们的行为是不同的。Visibility 属性的三种状态Visibility.Visible元素完全可见......
  • ‌SN和PN的区别
    ‌SN和PN的区别主要体现在定义、用途和编号规则上。‌‌12‌定义和用途‌:‌SN(SerialNumber)‌:产品序列号,又称机器码、认证码、注册申请码等。它是为了验证产品的合法身份而引入的概念,确保用户可以享受正版权益和服务。每个正版产品只对应一组唯一的序列号。‌PN(PartNumber)......
  • 你有使用过BackboneJS吗?说说它和vue有什么区别?
    BackboneJS与Vue的区别在前端开发中,BackboneJS和Vue都是颇受欢迎的框架,但它们在设计理念、功能特性以及使用体验上存在显著差异。以下是对两者主要区别的详细分析:一、设计理念与核心思想BackboneJS:Backbone是一个轻量级的JavaScript框架,旨在为Web应用程序提供结构。它注重于......
  • js事件中currentTarget和target的区别是什么?
    在JavaScript的前端开发中,event.currentTarget和event.target是两个常用于处理DOM事件的属性,它们的主要区别在于它们所引用的对象不同。event.targetevent.target引用的是触发事件的具体元素。换句话说,它是事件实际发生的目标。例如,如果你有一个按钮,并且在这个按钮上点击,......
  • 请说说canvas的closePath()与lineTo()的区别是什么?
    在前端开发中,Canvas是一个非常有用的工具,它允许开发者在网页上绘制图形。closePath()和lineTo()是CanvasRenderingContext2D接口中的两个方法,它们在绘制路径时有着不同的作用。lineTo(x,y)lineTo(x,y)方法用于在画布上创建一条从当前点到指定(x,y)坐标的直线。当......
  • 你有使用过postcss吗?它和less/scss/stylus有什么区别?
    是的,我有使用过PostCSS。PostCSS与Less、SCSS(Sass的新语法)、Stylus在前端开发中各自扮演着不同的角色,它们之间的主要区别可以归纳如下:本质与用途:PostCSS:它是一个使用JavaScript插件转换CSS的工具。PostCSS本身不添加任何CSS语法,而是通过插件来实现各种功能,比如自动添加浏览器......
  • pod的生命周期
    -Pod的生命周期经历了一系列的状态变化,每个状态反映了Pod当前所处的不同阶段。1.Pending定义:当创建一个Pod时,它会首先进入Pending状态。此时,Kubernetes正在进行节点调度、容器镜像拉取或等待资源准备。原因:Pod可能尚未被调度到特定的Node上,或者其依赖的卷(Volume......
  • 业财一体化与业财融合的联系与区别
    业财一体化与业财融合比较相似,许多人把二者混为一谈,甚至概念搞反了,他俩有何异同呢?1从定义来看,业财一体化(IntegratedBusinessandFinance)是指将企业的业务活动与财务活动进行信息化、系统化的统一管理,通过先进技术手段,将业务流程、财务流程、管理流程有机整合,建立基于业务事......