【云原生】pod中 READY字段显示0/1是什么意思 为什么已经running了还是没READY

85 阅读2分钟

1.## 首先解释 “Running” 和 “READY 0/1” 的区别

字段含义
STATUS=Running容器进程已经启动、在运行中。
READY=0/1Pod 里只有 1 个容器,其中 0 个 通过了「就绪探针 (readiness probe)」检查。

✅ 换句话说:

“容器已经启动了(Running),但 K8s 认为它还没准备好对外提供服务(Not Ready)。”

⚙️ 二、导致 READY 0/1 的常见原因

原因类别说明
🩺 就绪探针 (readinessProbe) 检查失败例如 /health 接口返回非 200 状态码,或者端口没开。
🕒 启动时间太短容器刚启动,应用还没完全起来(K8s 探针检查失败几次)。
🧩 应用启动异常Java/Spring 等应用可能卡在初始化或连接数据库阶段。
🛠️ 探针配置错误探针路径、端口写错,永远通不过。

🩺 三、如何查看具体原因

1️⃣ 查看 Pod 状态详情

kubectl describe pod <pod-name>

重点看:

Conditions:
  Type              Status
  Ready             False
Events:
  Type     Reason     Message

Message 里一般会提示「Readiness probe failed: ...」。


2️⃣ 查看容器日志

kubectl logs <pod-name>

如果是 Java 应用,看看是不是卡在启动、报错、连数据库失败等。


🔍 四、举个典型例子

假设你的 deployment 里配置了探针:

readinessProbe:
  httpGet:
    path: /actuator/health
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

如果容器刚起来,应用 10 秒还没启动好,
K8s 去访问 http://<pod-ip>:8080/actuator/health 返回非 200,
就会显示:

READY   0/1
STATUS  Running

几次之后,如果健康检查通过,就会变为:

READY   1/1
STATUS  Running

🧾 五、总结判断口诀

状态含义
Running + READY 1/1✅ 服务可用
Running + READY 0/1⚠️ 应用启动了但未通过就绪检查
CrashLoopBackOff❌ 应用启动失败反复重启

🔧 六、你可以这样快速排查:

kubectl describe pod <pod名> | grep -A5 Readiness
kubectl logs <pod名>