如何查看Pod中各容器就绪状态及定位故障容器
定位Pod中故障容器的方法
1. 从探针端口直接判定故障容器
Istio Sidecar(Envoy)的就绪探针默认使用15021端口的/healthz/ready路径,事件中明确提示该端口连接被拒绝,可直接判定故障容器为Istio Sidecar(通常容器名为istio-proxy)——常规Python容器不会监听15021端口,这个端口是Sidecar专属的就绪探针端口。
2. 查看容器状态细节确认
执行命令查看Pod内每个容器的状态详情,明确未就绪的容器:
kubectl describe pod my-pod-name-xyz
在输出的Containers模块下,会分别列出Python容器和istio-proxy容器的状态,重点关注Ready字段和State字段,未就绪的容器会在这里标记异常状态。
3. 排查Sidecar的启动细节
即使表面日志无异常,也可以针对性检查Sidecar的完整启动日志和进程状态:
- 查看Sidecar日志:
kubectl logs my-pod-name-xyz -c istio-proxy
- 检查Sidecar内是否有正常运行的Envoy进程:
kubectl exec my-pod-name-xyz -c istio-proxy -- ps aux
确认是否存在Envoy进程,以及进程启动参数是否符合预期。
4. 手动验证探针连通性
进入Pod的Python容器,手动发起对Sidecar探针端口的请求,验证连接情况:
kubectl exec my-pod-name-xyz -c <你的Python容器名称> -- curl http://127.0.0.1:15021/healthz/ready
如果返回连接拒绝,即可确认Sidecar未正常监听探针端口,属于启动异常。
内容的提问来源于stack exchange,提问作者sigma1510
相关产品推荐
相关产品推荐

