服务部署后通过集群内地址访问超时,查看后端列表是空的,Pod 本身在运行,日志里也没有明显报错。

排查方向其实有限,先把可能性排一排。就绪探针一直失败,Pod 没有被挂入后端;选择器标签与 Pod 标签不一致;服务和 Pod 处在不同命名空间。

动手时先看后端列表

kubectl get endpoints 服务名 -n 命名空间

然后核对选择器与 Pod 标签

kubectl get pods -n 命名空间 --show-labels

随后看就绪探针失败原因

kubectl describe pod 名称 -n 命名空间 | tail -20

修正后复验后端

kubectl get endpoints 服务名 -n 命名空间

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

别只看报错消失,验证要多做一步。后端列表出现 Pod 地址,集群内访问正常,探针状态为通过。

补一句。探针路径写错是最常见原因,接口没返回成功码就不会挂入;改完标签要等一会儿才会同步。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189