服务部署后通过集群内地址访问超时,查看后端列表是空的,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 地址,集群内访问正常,探针状态为通过。
补一句。探针路径写错是最常见原因,接口没返回成功码就不会挂入;改完标签要等一会儿才会同步。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。