2

我正在尝试在公共 IPv6 地址上公开 kubernetes TCP 服务。应用程序在 IPv4 上运行良好,但我无法在 IPv6 上配置它。问题是这不是 HTTP 服务。当前服务按类型完成:非标准端口 11042 上的 LoadBalancer。所以我认为它创建了网络负载均衡器。

遵循支持 IPv6 的文档转发规则是目标 HTTP 代理目标 HTTPS 代理、目标 SSL 代理、目标 TCP 代理,但 TCP 代理已关闭可使用的端口列表。我也尝试使用 Ingress,但在 google 上看起来它只支持 HTTP/S。有没有其他方法可以在公共 IPv6 上公开 TCP 服务?

谢谢

4

1 回答 1

1

至于现在Network Loadbalancer不支持IPv6。请注意,这是目前GCP上唯一可用的直通负载平衡器。将其与Google Cloud 负载平衡器摘要表进行比较。

只有HTTP/HTTPS 负载平衡器TCP 代理/SSL 代理等代理负载平衡器才支持IPv6(与HTTP(S)、SSL 代理和 TCP 代理负载平衡的 IPv6 终止相比)

正如您在文档中所读到的:

由于负载均衡器是直通式负载均衡器,您的后端会自行终止负载均衡的 TCP 连接或 UDP 数据包。

您可能已经知道(您可以在此处阅读)暂时GCP VPCGCE 实例仅支持IPv4 连接

VPC 网络仅支持 IPv4 单播流量。它们 支持 网络内的广播多播或 IPv6 流量 ;VPC 网络中的虚拟机只能发送到 IPv4 目标,并且只能接收来自 IPv4 源的流量。但是,可以为全局负载均衡器创建 IPv6 地址。

正如您已经提到的TCP 代理SSL 代理 不支持任意目标端口仅支持此处列出的知名端口。任意端口只能与外部网络 TCP/UDP负载均衡器一起使用,但由于缺乏对IPv6的支持,您无法使用它。

至于您的特定用例,结论是目前无法按照您想要的方式完成。

您的后端真的必须暴露在这个非标准端口上吗?- 我认为您有充分的理由使用它,因此很可能将其更改为某些知名端口甚至不是一种选择。

问题是这不是 HTTP 服务。- 如果它是http服务但只暴露在某个任意端口上,那么你可以使用ingress。如果是这种情况,您只需创建一个入口,将请求转发到您的后端之一,Services例所示。入口后端确实可以使用任意端口,但不能使用任意协议——这就是重点。底层应用层协议必须是http。因此,如果您的服务使用一些完全不同的协议,您可能会立即忘记入口

你实际上自己回答了你的问题。我看到您已经阅读了文档并非常彻底地分析了所有可用的解决方案,排除了那些不符合您要求的解决方案。嗯……我只能用这个总结来确认。我希望它会有所帮助,即使它没有提供您正在寻找的解决方案。

于 2020-04-21T21:26:17.053 回答