Service 选择器与 Pod 标签不匹配
一份私有故障记录描述了 NodePort 可见、工作负载运行,但 Service 没有可用后端的情况。提炼出的诊断要点是:Service 的 selector 必须全部匹配目标 Pod 的标签;仅看到 Pod 处于 Running,不能证明 Service 已选中它。这里不保留原记录中的集群名称、节点、地址、端口、版本、文件路径或操作命令。
取证顺序
- 读取 Service 的
spec.selector与spec.ports,确认目标命名空间及端口映射。 - 查询与该 Service 关联的 EndpointSlice。若后端为空,先查选择器、Pod 标签及 Pod 就绪状态,再查外部访问链路。
- 逐项比较 selector 的键和值与目标 Pod 的标签;多一个未匹配的标签,也会使 Pod 无法被该 Service 选中。
- 若标签确实不匹配,应先确认声明式配置的所有者及预期选择范围,再修改配置。变更后重新检查 EndpointSlice 与应用层连通性。
EndpointSlice 为空还可能由 Pod 未就绪等原因造成,因此不能只凭空后端就断定 selector 错误。原记录的现场诊断和修复结果未经独立复现,本卡只保留可迁移的判定方法。
关联:Service 不通排查。