- ansible/files 改为与文档 XX-YY 对齐的目录结构,更新相关 playbook 路径 - 新增 scripts/verify.sh 与 ansible/playbooks/verify/*.yml,移除单体 verify-matrix.yml - 补充 docs/00-02 矩阵状态、00-05 验证框架与流程、00-04 环境与 ylc65 工作机说明 - 增加 k3s 存储准备、Longhorn、local-path 等 playbook 与辅助脚本 Made-with: Cursor
2.5 KiB
2.5 KiB
04-06-nodejs-探针与健康检查
为
nodejs-demo配置 存活 / 就绪 / 启动 探针,使 kubelet 能在异常时重启容器,并在未就绪时从 Service Endpoints 摘除流量。
前置条件
- 已部署
nodejs-demo(04-01);应用需暴露可探测的 HTTP 路径(示例用根路径/)。
清单路径(唯一真源)
| 本篇完整清单 | ansible/files/04-01-nodejs-demo/04-06-nodejs-demo.yaml |
| 应用 | kubectl apply -f ansible/files/04-01-nodejs-demo/04-06-nodejs-demo.yaml |
探针端口与累积清单一致,为 8080(自 04-04 起)。
场景说明(白话)
Kubernetes 会周期性访问你指定的地址,判断容器该不该重启、该不该接流量:
| 探针 | 人话 |
|---|---|
| 存活 liveness | 「还活着吗?」一直失败就重启容器(认为卡死)。 |
| 就绪 readiness | 「能接客了吗?」失败时不放进 Service 负载均衡(流量不打进来)。 |
| 启动 startup | 「是不是还在慢启动?」启动阶段先由它把关,避免被 liveness 误杀。 |
相对 04-05 的变更(原文 → 新文)
| 位置 | 原文(04-05) |
新文(04-06) |
|---|---|---|
livenessProbe / readinessProbe |
(无) | httpGet 路径 /,端口 8080,initialDelaySeconds/periodSeconds 见清单文件 |
生产建议为健康检查单独提供 /health 或 /ready 路径(与业务路由分离)。
部署与验证
kubectl apply -f ansible/files/04-01-nodejs-demo/04-06-nodejs-demo.yaml
kubectl describe pod -l app=nodejs-demo -n default | sed -n '/Liveness/,/Events/p'
kubectl get endpoints nodejs-demo -n default
故意让应用崩溃或阻塞时,观察 重启次数 与 Ready 条件变化。
TCP 探针(备选)
YAML 怎么接:与 HTTP 探针二选一;仍在 Deployment 容器里把 httpGet 换成 tcpSocket: { port: 3000 } 即可。适合「没有 HTTP、但端口能连上就算活着」的服务。
失败排查
- CrashLoopBackOff:
livenessProbe过严或initialDelaySeconds过短;先放宽或加startupProbe。 - Service 无流量但 Pod Running:readiness 失败;
kubectl get ep为空地址。 06-01-k3s-networkpolicy-故障排查.md