我的系统由 UDP 客户端组成,该客户端向 Kubernetes 部署生成的服务器发送 UDP ping 消息。该服务器由 metallb 负载平衡器服务后面的 2 个副本组成。
实际的消息路由如下:
- 其中一个 pod(比如 POD1)接收到消息
- POD1 将它(使用源 ip 和端口)存储在缓存中
- POD1 进入空闲状态
- 副本集的另一个 pod(POD2)获取缓存的消息和源地址
- POD2 回复
- POD2 收到端口不可达 ICMP 错误。
我认为,由于我的 UDP 响应源 IP 与原始请求的目标 IP 不同,因此服务无法映射最终目标 IP。
我觉得我缺少解决我问题的注释。metallb 负责端口映射吗?我是否被迫改用 UDP 代理服务器?如果是这样,您可以分享一个已经实施的解决方案吗?