You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes中从容器内部执行URL健康检查?

在Kubernetes中实现容器内部的健康检查

要在K8s里实现基于容器内部环境的健康检查,核心是用**exec类型的探针**——这种模式下kubelet会直接在目标容器内部启动进程执行检查命令,完全复用容器内的环境、依赖和网络。

基础方案:直接执行内置命令

如果容器里已经有curl、wget这类工具,可以直接用它们检查内部URL,示例配置如下:

apiVersion: v1
kind: Pod
metadata:
  name: internal-health-check-pod
spec:
  containers:
  - name: app-container
    image: your-app-image:latest
    livenessProbe:
      exec:
        command:
        - curl
        - -f  # 失败时返回非0退出码
        - http://localhost:8080/your-health-endpoint
      initialDelaySeconds: 5  # 容器启动后延迟5秒开始检查
      periodSeconds: 10       # 每10秒检查一次
    readinessProbe:
      exec:
        command:
        - curl
        - -f
        - http://localhost:8080/your-readiness-endpoint
      initialDelaySeconds: 10
      periodSeconds: 15

进阶方案:自定义检查脚本

如果需要更复杂的检查逻辑(比如验证环境变量、多步骤校验),可以把检查逻辑写进脚本,打包到容器镜像中:

  1. 编写健康检查脚本(比如/app/health-check.sh):
#!/bin/bash
# 检查环境变量是否存在
if [ -z "$APP_CONFIG" ]; then
  echo "APP_CONFIG env var missing"
  exit 1
fi

# 检查内部服务状态
response_code=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/healthz)
if [ "$response_code" -ne 200 ]; then
  echo "Health endpoint returned $response_code"
  exit 1
fi

# 所有检查通过
exit 0
  1. 在Dockerfile中把脚本加入镜像并设置权限:
FROM your-base-image:latest
# 安装依赖工具(如果基础镜像没有curl/bash)
RUN apt-get update && apt-get install -y curl bash \
    && rm -rf /var/lib/apt/lists/*
# 复制脚本
COPY health-check.sh /app/health-check.sh
# 设置可执行权限
RUN chmod +x /app/health-check.sh
  1. 在K8s探针中调用该脚本:
readinessProbe:
  exec:
    command:
    - /app/health-check.sh
  initialDelaySeconds: 10
  periodSeconds: 15
  failureThreshold: 3  # 连续3次失败才标记为未就绪

关键注意事项

  • 确保容器镜像包含命令依赖的工具:比如用curl就要保证镜像里有它,没有的话在Dockerfile中安装。
  • 脚本必须返回正确的退出码:0表示健康,非0表示异常,K8s会根据退出码判断探针状态。
  • 合理设置探针参数:initialDelaySeconds要足够让容器启动完成,periodSeconds根据业务稳定性调整检查频率。

内容的提问来源于stack exchange,提问作者Jon Tran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:44:56