gpt4 book ai didi

azure - AKS LoadBalancer 仅将流量发送到一个 Pod

转载 作者:行者123 更新时间:2023-12-03 05:45:52 28 4
gpt4 key购买 nike

我有一个配置为 LoadBalancer 的服务,在运行 1.9.11 的五节点集群上运行。 LoadBalancer 位于运行 ASP.NET Core Web 应用程序的三个 pod 前面(该应用程序又与 NATS 消息队列通信,监听器从该队列检索消息并将其保存到 Azure SQL 数据库)。所有 Pod 都设置了资源请求和限制,并且所有内容都位于专用命名空间中。

我使用 PowerShell 脚本使 Web 应用程序每 50 毫秒为 NATS 队列生成一条消息。我可以通过多种方式看到负载均衡器仅向一个 pod 发送流量:首先,k8s 仪表板中的 CPU 图表显示其中两个 pod 没有事件,其次我正在跟踪环境。 MachineName 从 Web 应用程序一直到数据库中的一个字段,我可以看到它只有一个 MachineName。如果我删除正在接收流量的 Pod,新的 Pod 会立即开始接收流量,但它仍然只是三个 Pod 中的一个。

我的理解是,这不是 LoadBalancer 的工作方式,即 LoadBalancer 应该将流量发送到所有 pod。这是对的吗?如果是的话,有什么线索表明我做错了什么吗?我的服务文件如下:

apiVersion: v1
kind: Service
metadata:
name: megastore-web-service
spec:
selector:
app: megastore-web
ports:
- port: 80
type: LoadBalancer

最佳答案

在我看来,您的负载均衡器工作正常。当流量进入 LB 时,LB 会自动将流量定向到第一个可用节点。事实上,您可以关闭 POD 并且流量会重新路由,这是我们所期望的。

这是一篇很好的文章,有助于解释 LB 的工作原理

https://blogs.msdn.microsoft.com/cie/2017/04/19/how-to-fix-load-balancer-not-working-in-round-robin-fashion-for-your-cloud-service/

为了进一步测试这一点,我建议您尝试在其中一个 POD 上打开端口,但不要在其他 POD 上打开端口。例如POD2上的88端口。然后使用 loadbalancer:88 进行连接,并查看连接是否路由到正确的 POD。

关于azure - AKS LoadBalancer 仅将流量发送到一个 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com