You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes Service报无可用Active Endpoint错误问题求助

问题根因

Service没有可用Endpoint的核心原因是匹配到的web-server Pod未通过就绪探针检查,没有进入Ready状态,Kubernetes默认不会将未就绪的Pod加入Service的Endpoint列表,也就导致了ingress-nginx报错。从你提供的Deployment状态可以明确看到unavailableReplicas: 1、MinimumReplicasUnavailable的异常状态,也验证了这一点。

排查方案

  • 第一步:查看Pod运行状态和事件
    执行以下命令获取web-server对应的Pod列表,以及Pod的事件信息,定位Pod无法就绪的直接原因:
# 查看命名空间下web-server对应的Pod
kubectl get pods -n <namespace> -l app=web-server
# 查看Pod的详细事件和状态
kubectl describe pod <web-server-pod-name> -n <namespace>

重点关注事件中的镜像拉取、配置挂载、探针失败相关报错。

  • 第二步:验证就绪探针返回结果
    你的Deployment配置了/actuator/health路径的就绪探针,直接在集群内或者Pod内部访问该接口,确认返回状态是否为200:
# 进入Pod内部执行请求
kubectl exec -it <web-server-pod-name> -n <namespace> -- curl http://localhost:8080/actuator/health -i

如果返回非200状态码,需要检查web-server应用的启动日志、配置是否正确:

# 查看Pod应用日志
kubectl logs <web-server-pod-name> -n <namespace>
# 如果有前一次崩溃的日志,加-p参数查看
kubectl logs <web-server-pod-name> -n <namespace> -p

常见异常包括:配置文件读取错误、依赖服务(数据库、缓存、消息队列等)连接失败、端口监听异常、JVM启动内存不足等。

  • 第三步:验证配置项正确性
    检查你挂载的<namespace>-config配置Map内容是否和应用预期一致,避免配置错误导致应用启动失败。
# 查看ConfigMap内容
kubectl get configmap <namespace>-config -n <namespace> -o yaml
  • 第四步:临时屏蔽探针验证(可选,用于快速定位)
    如果需要快速确认是否为探针导致的问题,可以临时删除Deployment的readinessProbe配置,重新发布后观察Endpoint是否正常生成,如果恢复正常即可100%确认是探针导致的就绪失败。

  • 第五步:检查另一组异常资源共性
    如果还有另一组资源也存在相同问题,重点排查这两组资源的共性:是否使用了相同的配置模板、是否依赖同一个故障的下游服务、是否使用了相同的镜像仓库前缀拉取镜像、是否配置了相同的探针规则。

内容的提问来源于stack exchange,提问作者C-nan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 18:27:07