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

AWS负载均衡器对接简单Kubernetes集群时请求超时问题排查

问题描述

搭建了包含1个Master节点和2个Worker节点的Kubernetes集群,仅部署了示例Nginx Pod。尝试接入AWS负载均衡器时请求持续超时。Kubernetes LoadBalancer Service配置如下:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
    svc: test-nginx
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 80
      nodePort: 31000

访问EC2节点公网IP加31000端口可正常获取「Welcome to nginx!」响应,但手动配置AWS负载均衡器以2个Worker节点为目标后无法正常工作。

可能的原因及排查方向
  • 安全组配置缺失

    • 检查负载均衡器的安全组:是否允许客户端访问其监听端口(如你配置的80/8080端口)。
    • 检查Worker节点的安全组:是否允许负载均衡器的安全组访问31000端口。AWS负载均衡器转发请求时使用自身安全组作为源,而非客户端IP,因此Worker节点需开放对应端口给LB的安全组。
  • 目标组配置错误

    • 确认目标组的协议和端口:需选择TCP协议,端口设置为31000,与NodePort一致。
    • 检查健康检查配置:健康检查路径需为Nginx可响应的路径(如/),端口设为31000,超时、间隔等参数需合理。若健康检查失败,LB会将节点移出目标组,导致无可用转发目标。
    • 验证目标组关联状态:确认2个Worker节点已加入目标组,且状态为「健康」。
  • 负载均衡器监听规则不匹配

    • 检查LB的监听规则:是否将客户端访问的端口(如80)正确转发到目标组的31000端口,协议需保持TCP一致。
  • NodePort监听异常

    • 在Worker节点上执行ss -tulpn | grep 31000,确认kube-proxy是否已在该端口监听。若某节点未监听31000,请求转发到该节点会超时。
  • 网络与负载均衡器类型不兼容

    • 若使用Application Load Balancer(ALB):确认Worker节点与LB处于同一VPC子网,且子网路由表允许LB与节点间的私网通信。
    • 若使用Network Load Balancer(NLB):确认目标类型设置为「实例」,且LB可访问Worker节点的私网IP。
  • K8s内部关联问题

    • 执行kubectl get pods -o wide,确认Nginx Pod是否调度到了这2个Worker节点上。若Pod仅存在于其中一个节点,LB转发到无Pod的节点会超时。
    • 执行kubectl describe service nginx-service,查看Endpoints字段是否包含Pod的IP。若Endpoints为空或数量不符,说明Service的selector与Pod的labels不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:06:41