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

在EKS上通过kubectl及YAML部署应用时LB健康检查持续失败如何排查

常见排查步骤

1. 验证Pod服务可用性

  • 执行kubectl get pods -l app=appscripting,确认Pod处于Running状态,无异常重启记录
  • 进入Pod执行端口监听校验:kubectl exec -it <Pod名称> -- ss -tunlp,确认容器内同时监听了80和443端口。注意你当前的ReplicaSet配置仅声明了containerPort: 80,且Service配置了443端口转发到容器的443端口,若容器本身未启动HTTPS服务监听443,会直接导致转发失败
  • 本地端口转发验证服务响应:kubectl port-forward <Pod名称> 8080:80 8443:443,访问本地127.0.0.1:8080和127.0.0.1:8443,确认服务本身可以正常返回响应

2. 验证Service与NodePort连通性

  • 执行kubectl describe svc app-scripting,查看Endpoints字段是否正确关联了运行中Pod的IP,若Endpoints为空说明标签匹配异常
  • 记录输出中80、443端口对应的NodePort值(即30000-32767段的端口)
  • 登录任意集群工作节点,分别执行curl localhost:<80对应的NodePort>、curl -k localhost:<443对应的NodePort>:
    • 若访问失败,首先检查节点安全组的入站规则,是否放开了30000-32767端口段允许LB所属CIDR访问
    • 其次检查kube-proxy组件状态:kubectl get pods -n kube-system -l k8s-app=kube-proxy,确认所有kube-proxy Pod正常运行

3. 验证AWS LB配置

  • 登录AWS控制台查看对应LB的健康检查规则,确认检查的端口、协议、路径符合预期:EKS默认会将LB健康检查指向Service第一个端口对应的NodePort,你可以通过Service的service.beta.kubernetes.io/aws-load-balancer-healthcheck-*系列注解自定义健康检查规则
  • 检查LB的出站规则,是否允许访问集群节点的30000-32767端口段
  • 确认集群VPC的网络ACL没有拦截LB到工作节点的流量

快速验证方法

你可以先暂时注释掉Service配置中443端口的相关规则,仅保留80端口配置后重新kubectl apply更新服务,若健康检查恢复正常,说明问题出在443端口的容器监听或转发配置上。

内容的提问来源于stack exchange,提问作者brooksly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:39:01