首页/云/云与容器速查/Endpoints 与选择器排错
Kubernetes68 条

Endpoints 与选择器排错

Endpoints(及 EndpointSlice)是 Service 的实际后端清单:由控制器按选择器+就绪状态生成。Endpoints 为空是『Service 没流量』类问题的第一检查点。

云与容器速查云更新于 2026-10-13

Endpoints 是什么

Endpoints(以及数据量更大场景下的替代对象 EndpointSlice)是 Service 的实际后端清单,由控制器按 Service 的选择器与 Pod 的就绪状态自动生成并维护。清单为空,就意味着这个 Service 没有任何可用后端,前端表现通常是连接被拒绝或请求超时。因此『Service 没有流量』这类问题的第一检查点就是看 Endpoints,而不是先怀疑网络策略或应用代码。

基本信息

查看方式kubectl get endpoints web -n dev -o wide
为空原因一选择器与 Pod 标签不匹配,控制器收不到任何匹配对象
为空原因二Pod 未就绪,就绪探针未通过的对象不会进入清单
为空原因三targetPort 与容器实际监听的端口不一致
新形态EndpointSlice 是大规模场景下的替代对象,逻辑与 Endpoints 等价

典型使用场景

  • 服务访问整体失败时,第一时间确认后端清单是否为空
  • 发布之后流量没进来,确认新 Pod 是否已被加入后端清单
  • 调整就绪探针后核对后端数量是否符合预期
  • 服务只能连通部分实例时,对比清单数量与预期实例数
  • 排查滚动更新期间的短暂断流,分析就绪与摘除的时序

排查顺序

排查顺序
kubectl get endpoints web -n dev
kubectl get pods -n dev --show-labels | grep app=web
kubectl describe svc web | grep -E "Selector|Endpoints"
kubectl get pod -o wide -l app=web
# 三者对不上时:先比选择器与标签,再看就绪状态,最后核对目标端口

现象与原因

现象常见原因处理方向
清单为空选择器与标签不匹配修正 Pod 标签或 Service 选择器
清单少几个实例就绪探针未通过查看探针失败输出与就绪条件
有地址但连不上目标端口写错或对端未监听核对端口与容器内监听地址
更新期间短暂断流就绪与摘除的时序不匹配检查探针参数与发布策略
清单里已有地址但访问仍然失败时,问题通常在 Pod 一侧:端口监听、宿主或集群防火墙、应用本身处理请求的能力,而不在 Service 的定义上。
选择器写错时控制器不会报错,只是安静地维护一份空清单:改完标签或选择器之后要主动确认后端数量,别等用户报障才发现问题。

易错点

  • Pod 就绪探针未通过,实例被排除在清单之外,表现为服务『少了几台』
  • targetPort 与容器实际监听端口不一致,清单看起来正常但连接全部失败
  • 选择器与标签不匹配却不报错,清单长期为空,问题被拖到用户报障才暴露
  • 就绪探针过于严格,健康实例被反复剔除,实际可用容量被动缩水

数据来源与参考

  • Kubernetes Docs:Endpoints
  • Kubernetes Docs:EndpointSlice

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌