MicroK8s中容器端口正常但Service 18080端口未生成Endpoint如何排查
问题根因
你遇到的18080端口无Endpoint问题,核心原因是Service与Pod的端口匹配规则不匹配:
Service中18080端口配置的targetPort: fcs-http是命名端口,Kubernetes的Endpoint控制器会自动匹配selector选中的Pod下,所有容器声明的端口列表中name字段值等于fcs-http的容器端口作为后端。从你贴出的配置看,fcs容器仅声明了containerPort: 18080,未给该端口配置对应的name: fcs-http字段,控制器无法匹配到对应后端端口,自然不会生成该端口的Endpoint条目。
同Service下51056端口能正常生成Endpoint,就是因为host-ws-port这个命名端口在Pod的对应容器上配置了正确的name字段,匹配逻辑正常。
排查与修复步骤
- 第一步先确认命名端口配置:执行
kubectl get pod server-deployment-76b5789754-q48xl -o yaml,逐个检查Pod内6个容器的ports配置段,找到声明了18080容器端口的配置项,核对其name字段值是否为fcs-http,大概率存在漏配、拼写错误、大小写偏差的问题。你提到近期无配置变更突发故障,通常是工作负载模板被隐式更新、Pod重建后加载了缺失端口名的配置导致。 - 修复配置:在对应容器的18080端口配置项中补上
name: fcs-http,更新Deployment等待Pod滚动重建完成后,Endpoint会自动生成。 - 如果核对完命名端口配置完全正确,再做以下两项排查:
- 执行
kubectl get endpoints aedi-service -o yaml,检查资源是否残留异常finalizer、手动修改留下的脏配置,如有异常清理后等待控制器重新同步即可。 - 查看Endpoint控制器日志定位匹配异常:MicroK8s环境执行
journalctl -u snap.microk8s.daemon-controller-manager,搜索Endpoint同步、端口匹配相关的报错信息,也可以给Service加一个临时annotation触发控制器重同步,观察日志输出。
- 执行
补充验证:你提到集群内可直接通过
Pod IP:18080访问服务,已经排除了端口监听、网络连通性问题,故障完全出在Service到Pod的端口匹配环节,不需要再排查kube-proxy转发、容器服务状态类问题。
内容的提问来源于stack exchange,提问作者madmax
相关产品推荐
相关产品推荐

