关于Kubernetes Nginx-Ingress负载均衡及节点地址显示的疑问
问题解答
1. kubectl get ingress的ADDRESS列是否应显示所有节点地址?
不会。这个字段展示的是Ingress Controller对外暴露的入口地址,和后端流量分发策略无关:
- 如果Ingress Controller通过NodePort部署,ADDRESS可能显示
<none>或集群的外部入口IP; - 如果用LoadBalancer类型Service暴露,ADDRESS会显示LB的外部IP;
- 你看到的单个节点地址,通常是Ingress Controller Pod所在节点的IP,或是集群中负责流量接入的节点IP,但这和内部的round-robin转发逻辑没有关联——轮询是Ingress Controller对后端Pod的转发规则,不影响Ingress资源的ADDRESS字段展示。
2. 如何确认流量是否分发至所有节点?
可以通过以下几种方式验证:
- 查看Ingress Controller日志:执行
kubectl logs -n <ingress-namespace> <ingress-controller-pod-name>,日志中会记录每个请求转发到的后端Pod IP,统计这些IP对应的节点,就能判断流量是否覆盖所有节点。 - 统计Pod负载:用
kubectl top pod -n <your-app-namespace>查看同类型Pod的CPU、内存使用率,若流量均匀,同组Pod的负载会大致相近,对应节点的负载也会相对均衡。 - 应用日志埋点:在应用代码中添加当前Pod所在节点的日志记录,通过日志聚合工具统计各节点的请求量。
- 自定义Grafana监控面板:
- 确保Ingress Controller开启metrics端口(默认10254/metrics),用Prometheus采集指标;
- 在Grafana中基于
nginx_ingress_controller_requests指标,按node或pod维度分组统计请求数,直观查看各节点的流量分布。
内容的提问来源于stack exchange,提问作者Someone
相关产品推荐
相关产品推荐

