Kubernetes健康检查探针
文章目录Nginx 配置 Readiness Probe就绪探针第一步为 Nginx 添加 HTTP 就绪探针第二步检查探针和滚动更新第三步 给 Nginx 添加 Liveness Probe下一步先练习 Liveness Probe存活探针和 Readiness Probe就绪探针暂时不急着部署 Ingress。Liveness Probe判断容器是否需要重启。Readiness Probe判断容器是否已经可以接收流量。Startup Probe给启动较慢的应用预留初始化时间避免过早触发其他探针。这三个概念在 DevOps 面试中非常常见也能帮助你解释为什么容器处于 Running 状态却不一定能正常对外提供服务。我们下一步可以给现有 Nginx Deployment 配置 HTTP 就绪探针验证 Pod 的 Ready 状态如何影响 Service 的后端流量。操作前先保存当前 Deployment 配置便于随时恢复sudok3s kubectl get deployment nginx-nnginx-lab-oyaml\~/nginx-deployment-before-probes.yamlcat nginx-deployment-before-probes.yamlapiVersion:apps/v1kind:Deploymentmetadata:annotations:deployment.kubernetes.io/revision:2creationTimestamp:2026-10-14T06:37:23Zgeneration:2labels:app:nginxname:nginxnamespace:nginx-labresourceVersion:10134uid:194c1d63-613d-4ba4-9abd-8c452a4cc597spec:progressDeadlineSeconds:600replicas:2revisionHistoryLimit:10selector:matchLabels:app:nginxstrategy:rollingUpdate:maxSurge:25%maxUnavailable:25%type:RollingUpdatetemplate:metadata:labels:app:nginxspec:containers:-image:m.daocloud.io/docker.io/library/nginx:stableimagePullPolicy:IfNotPresentname:nginxresources:{}terminationMessagePath:/dev/termination-logterminationMessagePolicy:FilednsPolicy:ClusterFirstrestartPolicy:AlwaysschedulerName:default-schedulersecurityContext:{}terminationGracePeriodSeconds:30status:availableReplicas:2conditions:-lastTransitionTime:2026-10-14T06:47:50ZlastUpdateTime:2026-10-14T06:56:22Zmessage:ReplicaSet nginx-68bfbd8bb7 has successfully progressed.reason:NewReplicaSetAvailablestatus:Truetype:Progressing-lastTransitionTime:2026-10-14T08:18:41ZlastUpdateTime:2026-10-14T08:18:41Zmessage:Deployment has minimum availability.reason:MinimumReplicasAvailablestatus:Truetype:AvailableobservedGeneration:2readyReplicas:2replicas:2terminatingReplicas:0updatedReplicas:2Nginx 配置 Readiness Probe就绪探针第一步为 Nginx 添加 HTTP 就绪探针sudok3s kubectl patch deployment nginx-nnginx-lab\--typestrategic\-p{ spec: { template: { spec: { containers: [{ name: nginx, readinessProbe: { httpGet: { path: /, port: 80 }, initialDelaySeconds: 5, periodSeconds: 5, timeoutSeconds: 2, failureThreshold: 3 } }] } } } }这条命令会修改 Deployment 的 Pod 模板因此 Kubernetes 会触发一次滚动更新逐步替换原来的两个 Pod。它不会修改宿主机端口也不会改动你的博客和 Jenkins。参数含义path: /请求 Nginx 首页port: 80检查容器的 80 端口initialDelaySeconds: 5容器启动约 5 秒后开始检查periodSeconds: 5每隔 5 秒检查一次timeoutSeconds: 2单次检查最多等待 2 秒failureThreshold: 3连续失败 3 次后判定为未就绪第二步检查探针和滚动更新# 等待 Deployment 更新完成sudok3s kubectl rollout status deployment/nginx\-nnginx-lab--timeout120s# 查看 Pod 就绪状态sudok3s kubectl get pods-nnginx-lab# 查看探针配置sudok3s kubectl describe deployment nginx-nnginx-lab第三步 给 Nginx 添加 Liveness Probe先给现有 Deployment 增加存活探针。它和已有的 Readiness Probe 可以同时工作不会因为配置 Liveness 就立即重启容器。sudok3s kubectl patch deployment nginx-nnginx-lab\--typestrategic\-p{ spec: { template: { spec: { containers: [{ name: nginx, livenessProbe: { httpGet: { path: /, port: 80 }, initialDelaySeconds: 10, periodSeconds: 5, timeoutSeconds: 2, failureThreshold: 3 } }] } } } }参数含义参数含义httpGet.path: /通过 HTTP 请求 Nginx 首页initialDelaySeconds: 10容器启动后先等待 10 秒periodSeconds: 5每 5 秒检查一次timeoutSeconds: 2单次检查最多等待 2 秒failureThreshold: 3连续失败 3 次后触发重启deployment.apps/nginx patched说明Liveness Probe 的配置修改已被 Kubernetes 接受。接下来确认滚动更新成功并检查两个探针是否都生效。执行下面三条命令# 1. 等待滚动更新完成sudok3s kubectl rollout status deployment/nginx\-nnginx-lab--timeout120s# 2. 查看 Pod 状态和重启次数sudok3s kubectl get pods-nnginx-lab# 3. 检查两个探针的配置sudok3s kubectl describe deployment nginx-nnginx-lab第一步生成实验 Pod 配置cat~/nginx-liveness-lab.yamlEOF apiVersion: v1 kind: Pod metadata: name: nginx-liveness-lab namespace: nginx-lab spec: restartPolicy: Always containers: - name: nginx image: m.daocloud.io/docker.io/library/nginx:stable command: - nginx - -g - daemon off; ports: - containerPort: 80 livenessProbe: httpGet: path: /healthz-missing port: 80 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 2 failureThreshold: 3 EOF这份配置的关键点restartPolicy: Always容器退出后Kubernetes 会尝试重新启动它。livenessProbe访问一个不存在的 URL预期返回 HTTP 404。failureThreshold: 3连续三次检查失败后触发容器重启。第二步检查 YAML 是否正确执行sudok3s kubectl apply\--dry-runclient\-f~/nginx-liveness-lab.yaml面试中可以这样总结我在 K3s 中创建了一个独立的 Nginx 实验 Pod并配置 Liveness Probe 检查一个不存在的 HTTP 路径。通过 kubectl get pod 观察到重启次数持续增加最终进入 CrashLoopBackOff。查看容器日志后发现Kubernetes 探针连续请求 /healthz-missing 并收到 404随后 Nginx 收到 SIGQUIT 开始退出。结合 Pod Events 可以确认探针失败触发了容器重启。这个实验说明容器进程最初能够正常启动并不代表健康检查一定能通过Liveness Probe 配置错误本身也可能导致持续重启。因此在生产环境中探针路径必须与应用真实的健康检查接口匹配并合理设置延迟、间隔和失败阈值。这就是一段完整的 Kubernetes 故障排查案例发现异常 → 查状态 → 看日志 → 查事件 → 定位原因 → 修复或清理。

相关新闻

STM32C5开发LSM6DSOW(5)--运动唤醒检测

STM32C5开发LSM6DSOW(5)--运动唤醒检测

STM32C5开发LSM6DSOW .5--运动唤醒检测 概述视频教学样品申请源码下载硬件准备参考程序串口配置IIC配置CS和SA0设置INT设置生成项目导入STM32CubeIDE设置工程编码串口 printf 重定向参考程序CMake设置头文件设置变量定义获取ID复位传感器BDU设置配置输出数据率与测量量程外部中…

2026/10/15 7:49:01 阅读更多 →
React Native鸿蒙适配:跨平台构建与目录解析

React Native鸿蒙适配:跨平台构建与目录解析

最近几年,跨端开发的赛道一直没有消停过。Flutter 在持续发力,KMP 也在不断扩张地盘,但 React Native 这个老牌选手,依然有着庞大的社区存量和生态积累。而随着 OpenHarmony 生态的逐步成熟,一个很现实的问题摆在很多团…

2026/10/15 7:49:01 阅读更多 →
AI辅助开发实战:三周用WorkBuddy+Supabase上线Android App

AI辅助开发实战:三周用WorkBuddy+Supabase上线Android App

1. 为什么我选择 WorkBuddy 来搭一个真正能上线的 App去年年底我接了个私活,帮一个做线下活动策划的团队做内部工具。需求不复杂:活动排期、人员签到、物料清单、简单的数据看板。但对方提了一个硬性要求——必须是一个能装到手机上的 App,而…

2026/10/15 7:49:01 阅读更多 →

最新新闻

从画图到设计:用文本化DSL把架构图变成可维护的工程资产

从画图到设计:用文本化DSL把架构图变成可维护的工程资产

平时我见得最多的“图”,不是最终文档里那张漂亮的架构图,而是评审会上被临时画在白板上的方框加箭头。主讲人一边画一边改,台下的人一边看一边猜。等会议结束,没人记得箭头谁指向谁,只记得“好像讲了一个方案”。后来…

2026/10/15 8:25:33 阅读更多 →
t3code赛事编码协议:从计时数据到成绩榜单的自动化方案

t3code赛事编码协议:从计时数据到成绩榜单的自动化方案

如果你跟我一样,经常被各种赛事计时表、Excel 成绩单、手动排名搞到半夜,那你一定要试试 t3code 这套思路。t3code 最开始只是我给一个周末赛车活动写的三行脚本,后来慢慢变成了一套三段式赛事编码协议:练习、排位、正赛三段&…

2026/10/15 8:25:33 阅读更多 →
SylixOS应用开发指南:线程模型、同步机制与调试实践

SylixOS应用开发指南:线程模型、同步机制与调试实践

简介:《SylixOS应用开发手册1》是一份面向具备C语言基础的程序员的实时嵌入式操作系统开发指南,系统讲解SylixOS应用程序设计接口,适用于航空航天、工业自动化、通信、新能源等场景。压缩包内共1个pdf文件,大小14.95MB&#xff0c…

2026/10/15 8:25:33 阅读更多 →
多协议网络库的架构设计与核心实现:从Reactor线程模型到协议解析

多协议网络库的架构设计与核心实现:从Reactor线程模型到协议解析

1. 为什么需要多协议网络库大概两年前,我们团队接手了一个典型的“什么都要接”的后台系统:对外要提供HTTP接口,方便前端和第三方系统调用;要和一批长期在线的硬件设备保持TCP长连接,并且随时可能下发指令;…

2026/10/15 8:25:33 阅读更多 →
T3 Stack全栈实战:构建类型安全的代码片段管理应用

T3 Stack全栈实战:构建类型安全的代码片段管理应用

如果你正在找一份能直接上手、不用绕弯子的全栈项目教程,那么基于 T3 Stack 打造的t3code应该能对上你的胃口。这个项目本质上是一个代码片段分享与管理系统,开发者可以注册登录,把自己常用的代码块按语言分类保存,支持标签检索、…

2026/10/15 8:25:33 阅读更多 →
多模态AI视频搜索实战:从250分钟到2分钟的工程化落地

多模态AI视频搜索实战:从250分钟到2分钟的工程化落地

1. 项目背景与核心痛点拆解1.1 250分钟到底卡在哪里视频搜索这件事,没做过的人会觉得不就是搜个关键词吗。但真正处理过大规模视频素材库的从业者都清楚,传统视频检索的流程有多笨重。Cond Nast 作为一家拥有海量视频内容的媒体集团,旗下品牌…

2026/10/15 8:24:32 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →