curl -Lv` 测试带有 **HTTP Liveness Probe** 的 Pod

少_游

关注

阅读 43

08-03 09:00

以下是使用 curl -Lv 测试带有 HTTP Liveness Probe 的 Pod 的详细步骤及示例命令:

📌 前置条件

  1. Pod 已正常运行
    ✅ 执行 kubectl get pods -n <namespace> 确保目标 Pod 状态为 Running
  2. 知道以下关键信息
    • Pod 名称 & Namespace
    • 容器暴露的端口 (本例为 8080)
    • 健康检查路径 (本例为 /healthz)

🛠️ 方案一:通过本地主机 + Port Forwarding(推荐)

⚠️ 适用场景:快速本地测试 / 无 Service 暴露的情况

# 步骤 1: 建立本地端口转发 (将本机 9999 → Pod 的 8080)
kubectl port-forward pod/busybox2 -n ns2 9999:8080 &

# 步骤 2: 在新终端中使用 curl 测试
curl -Lv http://localhost:9999/healthz

⚡️ 命令解析:

组件 作用
kubectl port-forward 建立持久化的端口映射通道
pod/busybox2 -n ns2 指定目标 Pod 及其所在命名空间
9999:8080 本地端口 9999 ↔ Pod 内容器端口 8080
& 后台运行转发进程
curl -Lv -L 跟随重定向, -v 显示详细请求/响应头

🛠️ 方案二:直接登录容器内部测试(调试专用)

# 步骤 1: 进入容器交互式终端
kubectl exec -it busybox2 -n ns2 -- /bin/sh

# 步骤 2: 在容器内执行 curl (目标是自身容器)
curl -Lv http://localhost:8080/healthz

💡 优势对比:

特性 Port Forwarding Exec Into Container
是否需要 Service ❌ 否 ❌ 否
模拟外部访问 ✅ 是 ❌ 仅能测试容器内部行为
适合生产环境验证 ✅ 优先选择 ⚠️ 仅限调试用途

🔍 典型输出解读(正常情况)

> GET /healthz HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.68.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< X-Custom-Header: ProbeCheck
< Content-Length: 27
<
{"status":"healthy","timestamp":1623456789}

❗️ 异常情况处理指南:

现象 可能原因 解决方案
Connection refused 应用未在 8080 端口启动 检查容器日志 kubectl logs busybox2 -n ns2
404 Not Found 路径错误或未实现 /healthz 核对应用代码中的健康检查端点
5xx Server Error 应用崩溃或资源不足 查看容器资源限制 & 应用错误日志
超时无响应 网络策略阻止访问 检查 NetworkPolicy 或防火墙规则

🔧 高级技巧:带认证的健康检查

若你的健康检查需要身份验证:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
    httpHeaders:
      - name: Authorization
        value: Bearer <YourToken>  # 替换为实际令牌

测试时需同步携带相同请求头:

curl -Lv \
  -H "Authorization: Bearer <YourToken>" \
  http://localhost:9999/healthz

📝 总结表格

目标 推荐方法 命令示例
本地快速测试 Port Forwarding kubectl port-forward ... ; curl http://localhost:9999/healthz
验证容器内部行为 Exec Into Container kubectl exec -it busybox2 -n ns2 -- curl http://localhost:8080/healthz
生产环境验证 结合 Service 创建 NodePort/ClusterIP Service 后直接访问 Service IP

💡 最佳实践:对于生产环境的健康检查验证,建议通过创建临时 Service(如 NodePort)进行真实流量测试,而非依赖 port-forwarding。

精彩评论(0)

0 0 举报