如何让Kubernetes Pod进入Running/Ready状态?已排查日志、扩缩容
解决Pod无法进入Running/Ready状态的方案
问题诊断
从你提供的信息来看,核心问题是存活探针与就绪探针连接失败,具体报错:
dial tcp 10.251.64.173:8444: connect: connection refused
Pod处于Error状态且已重启1次,kubelet持续退避重启失败容器。
排查&修复步骤
1. 深度排查容器启动日志
- 查看上一次失败容器的启动日志(更容易定位启动阶段问题):
kubectl logs my-pod-d5b854d94-ndgtd -n dev-923 --previous - 若日志无明确错误,直接进入容器检查应用进程:
执行kubectl exec -it my-pod-d5b854d94-ndgtd -n dev-923 -- /bin/bashps aux确认应用进程是否存在,或手动启动应用观察报错。
2. 校验探针配置准确性
- 检查Deployment/StatefulSet的探针配置,确认:
- 端口
8444是否为应用实际监听端口 - 健康路径
/actuator/health/probe是否与应用配置匹配(部分Spring Boot应用默认端点为/actuator/health) - 初始延迟
initialDelaySeconds是否足够覆盖应用启动耗时(启动过慢会导致探针提前检测失败)
- 端口
- 调整探针配置示例:
应用修改后重新部署:livenessProbe: httpGet: path: /actuator/health port: 8444 initialDelaySeconds: 60 # 根据实际启动时长调整 periodSeconds: 10 readinessProbe: httpGet: path: /actuator/health port: 8444 initialDelaySeconds: 60 periodSeconds: 10kubectl apply -f your-deployment.yaml -n dev-923
3. 检查容器网络与端口映射
- 确认Pod端口暴露配置:
kubectl describe pod my-pod-d5b854d94-ndgtd -n dev-923,查看Containers模块的Ports信息 - 在集群内其他Pod或节点上测试连通性:
curl http://10.251.64.173:8444/actuator/health/probe,排查网络策略或防火墙是否拦截流量
4. 验证镜像有效性
- 拉取镜像到本地测试,排除镜像损坏或版本错误:
本地访问健康端点,确认镜像本身无问题docker pull your-image:tag docker run -p 8444:8444 your-image:tag
5. 排查资源限制问题
- 检查Pod的CPU/内存资源配置:
kubectl describe pod my-pod-d5b854d94-ndgtd -n dev-923,查看Resources模块的Requests和Limits,若资源配额过低,会导致应用OOM或启动失败
内容的提问来源于stack exchange,提问作者Sakshi Jain
相关产品推荐
相关产品推荐

