我有一个带有 nginx 入口控制器的 AKS 集群。Controller 已经创建了一个类型为 LoadBalancer 的服务,Ports 部分如下所示(来自kubectl get service
):
80:31141/TCP
如果我理解正确,端口 80 是从外部无法访问的 ClusterIp 端口,但端口 31141 是一个节点端口,可以从外部访问。所以我假设 Azure 负载均衡器正在向这个 31141 端口发送流量。
我惊讶地发现 Azure 负载均衡器设置了一条规则:
frontendPort: 80
backendPort: 80
probe (healthCheck): 31141
所以它实际上确实使用了节点端口,但仅作为健康检查,所有流量都发送到端口 80,其功能可能与 31141 相同。
一个奇怪的提示是,如果我尝试从 pod 访问端口 80 的节点 IP,我只会得到“连接被拒绝”,但我想如果流量来自负载均衡器,它确实可以工作。
我无法在互联网上找到有关此的任何信息,所以问题是这实际上是如何工作的,为什么 ALB 会这样做?
PS我没有连接问题,它可以工作。我只是想了解它在幕后的方式和原因。