代码编织梦想

Kubernetes(K8s)中的健康检查机制是确保应用在集群中正常运行的关键工具。它通过探针(Probes)监控 Pod 的状态,自动执行恢复操作(如重启或重新调度)以保持系统的稳定性。本文将详细介绍 K8s 的健康检查和探针,包括它们的类型、配置方法、以及常见的应用场景。

健康检查概述

在 Kubernetes 中,健康检查主要用于判断容器的状态,以便确保应用在集群中的正常运行。K8s 提供了两种主要的健康检查机制:

  1. 启动探针(Startup Probe):用于确定容器内的应用是否成功启动。
  2. 存活探针(Liveness Probe):用于检测容器是否处于健康状态,如果探测失败,K8s 会重启容器。
  3. 就绪探针(Readiness Probe):用于确定容器是否已准备好接受流量,探测失败的容器不会接受流量。

这些探针使 Kubernetes 能够在应用崩溃或无法响应时自动执行修复措施,如重启容器或停止流量转发。


探针类型

Kubernetes 提供了三种类型的探针,分别通过不同的方法来检测容器的状态:

  1. HTTP 探针(HTTP GET Probe)

    • 描述:通过向容器发送 HTTP GET 请求并检查返回状态码来确定其健康状况。
    • 返回状态:2xx 或 3xx 状态码表示健康,其他状态码表示失败。
  2. 命令探针(Exec Probe)

    • 描述:在容器内部执行指定命令并检查其返回值来判断容器的状态。
    • 返回状态:0 表示健康,其他返回值表示失败。
  3. TCP 探针(TCP Socket Probe)

    • 描述:通过尝试建立到容器指定端口的 TCP 连接来判断其健康状况。
    • 返回状态:成功建立连接表示健康,无法建立连接表示失败。

配置探针

探针的配置通常在 Pod 的 YAML 文件中定义。以下是各类探针的配置示例:

1. HTTP 探针

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

2. 命令探针

livenessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5

3. TCP 探针

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

配置参数说明

  • initialDelaySeconds:容器启动后探针开始探测的延迟时间。
  • periodSeconds:探针检查的间隔时间。
  • timeoutSeconds:每次探测的超时时间。
  • failureThreshold:探测失败次数达到该阈值后,K8s 会认为容器处于不健康状态。
  • successThreshold:探测成功次数达到该阈值后,K8s 会认为容器处于健康状态(仅适用于 Startup 和 Readiness Probe)。

探针的行为与策略

1. 启动探针(Startup Probe)

  • 作用:确保容器启动成功,适用于启动时间较长的应用。
  • 行为:如果启动探针失败,K8s 将终止容器并按照重启策略重新启动。
  • 配置建议initialDelaySeconds 通常设置为容器启动所需的最大时间。

2. 存活探针(Liveness Probe)

  • 作用:定期检查容器是否仍在正常运行,如果失败,则重启容器。
  • 行为:探测失败后,根据容器的重启策略(如 Always、OnFailure、Never)执行相应操作。

3. 就绪探针(Readiness Probe)

  • 作用:判断容器是否已准备好处理请求,未就绪的容器将被从服务端点中移除。
  • 行为:探测失败时,容器仍在运行,但不会接收新的流量。

探针的应用场景

1. 长时间启动的应用

对于启动时间较长的应用(如需要预热、加载大量数据),可以使用 Startup Probe 来确保应用启动完全再进行其他探测,避免误判为不健康而重启容器。

2. 高可靠性服务

对于需要高度可用的服务,可以配置 Liveness Probe 来确保服务在发生意外崩溃时自动恢复。此外,通过 Readiness Probe 可以在服务恢复前,暂时停止流量分发,避免用户请求失败。

3. 状态依赖的应用

有些应用在启动时需要初始化状态(如数据库连接、缓存加载)。此时,可以使用 Readiness Probe 来检测这些状态是否已经就绪,确保服务在完全准备好前不会接受流量。


常见问题与最佳实践

1. 探针频繁失败导致容器频繁重启

解决方案

  • 增加 initialDelaySecondstimeoutSeconds 的时间,以避免在应用启动时因探测超时而重启。
  • 适当提高 failureThreshold,减少误判的可能性。

2. 长时间的探测超时

解决方案

  • 对于探测时间较长的应用,适当延长探测的 timeoutSeconds
  • 优化应用的健康检查路径,确保其在负载下能快速响应。

3. 探针配置不合理导致流量中断

解决方案

  • 仔细评估 Readiness Probe 的配置,确保容器在健康时能快速恢复服务。
  • 确保探针路径的轻量级,避免因探针响应慢而影响服务。

总结

Kubernetes 的健康检查与探针机制在保障应用稳定性和可用性方面扮演着重要角色。通过合理配置探针,您可以及时发现和解决应用中的问题,减少宕机时间并提高集群的可靠性。在实际使用中,建议根据应用的具体特性灵活调整探针的配置,并结合监控工具进行持续优化。

尊重原创,如果您觉得对您有所帮助,可以扫码打赏作者,您的支持对作者是最大的鼓励,谢谢!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/youziguo/article/details/141827745

Kubernetes K8S之Pod生命周期与探针检测-爱代码爱编程

K8S中Pod的生命周期与ExecAction、TCPSocketAction和HTTPGetAction探针检测 主机配置规划 服务器名称(hostname)系统版本配置内网IP外网IP(模拟)k8s-masterCentOS7.72C/4G/20G172.16.1.11010.0.0.110k8s-node01CentOS7.72C/4G

k8s探针检测php,k8s探针实现grpc健康检查-爱代码爱编程

这篇文章教大家如何利用k8s实现grpc健康检查 一. 配置Liveness和Readiness探针 kubelet 使用 liveness probe(存活探针)来确定何时重启容器。例如,当应用程序处于运行状态但无法做进一步操作,liveness 探针将捕获到 deadlock,重启处于该状态下的容器,使应用程序在存在 bug 的情况下依然能够继

k8s健康检查-爱代码爱编程

健康检查概述 健康检查(Health Check)用于检测您的应用实例是否正常工作,是保障业务可用性的一种传统机制,一般用于负载均衡下的业务,如果实例的状态不符合预期,将会把该实例“摘除”,不承担业务流量。 应用在运行过程中难免会出现错误,如程序异常,软件异常,硬件故障,网络故障等。在kubernetes中提供Health Check健康检查机制,当发

云原生之k8s------k8s资源限制及探针检查_aka|布鲁克林欧神仙的博客-爱代码爱编程

目录 一,资源现象 1,资源限制的使用 2,reuqest资源(请求)和limit资源(约束) 3,pod和容器的资源请求和限制 4,官方文档示例 5,资源限制实操 5.1 编写yaml资源配置清单  5.2 是否内存(node节点,以node1为例) 5.3 创建资源 5.4 跟踪查看pod状态 5.5 查看容器日志 5.6

【kubernetes】k8s的健康性检查详细说明【livenss probe、readiness probe】_kubernetes livenessprobe-爱代码爱编程

healthy [root@master probe]# [root@master probe]# kubectl get pods NAME READY STATUS RESTARTS AGE liveness-e