<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Health-Checks on Youqing Han - DevOps Engineer</title>
    <link>https://hanyouqing.com/tags/health-checks/</link>
    <description>Recent content in Health-Checks on Youqing Han - DevOps Engineer</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>ihanyouqing#gmail.com (#->@) (Youqing Han)</managingEditor>
    <webMaster>ihanyouqing#gmail.com (#->@) (Youqing Han)</webMaster>
    <lastBuildDate>Mon, 15 Sep 2025 10:00:00 +0800</lastBuildDate>
    <atom:link href="https://hanyouqing.com/tags/health-checks/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Kubernetes Probes 解析：Liveness、Readiness 和 Startup Probes</title>
      <link>https://hanyouqing.com/blog/2025/09/kubernetes-liveness-readiness-startup-probes-comprehensive-guide/</link>
      <pubDate>Mon, 15 Sep 2025 10:00:00 +0800</pubDate><author>ihanyouqing#gmail.com (#->@) (Youqing Han)</author>
      <guid>https://hanyouqing.com/blog/2025/09/kubernetes-liveness-readiness-startup-probes-comprehensive-guide/</guid>
      <description>&lt;h1 id=&#34;kubernetes-probes-解析livenessreadiness-和-startup-probes&#34;&gt;Kubernetes Probes 解析：Liveness、Readiness 和 Startup Probes&lt;/h1&gt;&#xA;&lt;p&gt;Kubernetes 探针（Probes）是确保容器健康运行的关键机制。正确配置和使用 Liveness、Readiness 和 Startup 探针对于生产环境的稳定性和可靠性至关重要。本文深入分析这三种探针的区别、应用场景以及检测成功和失败后的行为。&lt;/p&gt;&#xA;&lt;h2 id=&#34;目录&#34;&gt;目录&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E6%8E%A2%E9%92%88%E6%A6%82%E8%BF%B0&#34;&gt;探针概述&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#liveness-probe-%E8%AF%A6%E8%A7%A3&#34;&gt;Liveness Probe 详解&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#readiness-probe-%E8%AF%A6%E8%A7%A3&#34;&gt;Readiness Probe 详解&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#startup-probe-%E8%AF%A6%E8%A7%A3&#34;&gt;Startup Probe 详解&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E4%B8%89%E7%A7%8D%E6%8E%A2%E9%92%88%E5%AF%B9%E6%AF%94&#34;&gt;三种探针对比&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90&#34;&gt;应用场景分析&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E6%A3%80%E6%B5%8B%E6%88%90%E5%8A%9F%E4%B8%8E%E5%A4%B1%E8%B4%A5%E5%90%8E%E7%9A%84%E8%A1%8C%E4%B8%BA&#34;&gt;检测成功与失败后的行为&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5&#34;&gt;最佳实践&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E5%AE%9E%E9%99%85%E9%85%8D%E7%BD%AE%E7%A4%BA%E4%BE%8B&#34;&gt;实际配置示例&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88&#34;&gt;常见问题与解决方案&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#%E6%80%BB%E7%BB%93&#34;&gt;总结&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;探针概述&#34;&gt;探针概述&lt;/h2&gt;&#xA;&lt;p&gt;Kubernetes 提供了三种类型的探针来监控容器的健康状态：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Liveness Probe（存活探针）&lt;/strong&gt;：检测容器是否正在运行&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Readiness Probe（就绪探针）&lt;/strong&gt;：检测容器是否准备好接收流量&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Startup Probe（启动探针）&lt;/strong&gt;：检测容器应用是否已经启动&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这三种探针可以独立配置，也可以组合使用，以满足不同应用场景的需求。&lt;/p&gt;&#xA;&lt;h2 id=&#34;liveness-probe-详解&#34;&gt;Liveness Probe 详解&lt;/h2&gt;&#xA;&lt;h3 id=&#34;定义与目的&#34;&gt;定义与目的&lt;/h3&gt;&#xA;&lt;p&gt;Liveness Probe 用于检测容器是否仍在正常运行。如果容器处于运行状态但应用已经死锁或无法响应，Liveness Probe 会检测到这种情况并触发容器重启。&lt;/p&gt;&#xA;&lt;h3 id=&#34;检测失败后的行为&#34;&gt;检测失败后的行为&lt;/h3&gt;&#xA;&lt;p&gt;当 Liveness Probe 失败时：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Kubernetes 会&lt;strong&gt;杀死容器&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;根据 Pod 的 &lt;code&gt;restartPolicy&lt;/code&gt; 重启容器&lt;/li&gt;&#xA;&lt;li&gt;如果 &lt;code&gt;restartPolicy&lt;/code&gt; 为 &lt;code&gt;Always&lt;/code&gt; 或 &lt;code&gt;OnFailure&lt;/code&gt;，容器会被重启&lt;/li&gt;&#xA;&lt;li&gt;如果 &lt;code&gt;restartPolicy&lt;/code&gt; 为 &lt;code&gt;Never&lt;/code&gt;，容器不会被重启&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;适用场景&#34;&gt;适用场景&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;应用可能进入死锁状态，需要重启恢复&lt;/li&gt;&#xA;&lt;li&gt;应用可能因为内存泄漏或其他问题导致无响应&lt;/li&gt;&#xA;&lt;li&gt;需要确保应用始终处于可用状态&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;配置示例&#34;&gt;配置示例&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;apiVersion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;v1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Pod&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;liveness-example&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;spec&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;containers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;myapp:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;livenessProbe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;httpGet&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/healthz&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 容器启动后30秒开始检测&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;periodSeconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 每10秒检测一次&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;timeoutSeconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;       &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 检测超时时间5秒&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;successThreshold&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 连续1次成功视为成功&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;failureThreshold&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 连续3次失败视为失败&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;readiness-probe-详解&#34;&gt;Readiness Probe 详解&lt;/h2&gt;&#xA;&lt;h3 id=&#34;定义与目的-1&#34;&gt;定义与目的&lt;/h3&gt;&#xA;&lt;p&gt;Readiness Probe 用于检测容器是否准备好接收流量。只有当 Readiness Probe 成功时，Pod 才会被添加到 Service 的端点列表中，从而接收流量。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
