我正试图在公共IPv6地址上公开kubernetes TCP服务。应用程序在IPv4上运行良好,但我无法在IPv6上配置它。问题是这不是HTTP服务。当前服务按类型完成:非标准端口11042上的LoadBalancer。所以我认为它创建了网络负载均衡器。
遵循支持IPv6的文档转发规则的是目标HTTP代理目标HTTPS代理、目标SSL代理、目标TCP代理,但TCP代理已关闭可使用的端口列表。我也试着使用Ingress,但在谷歌上它似乎只支持HTTP/S。是否有其他方法可以在公共IPv6上公开TCP服务?
感谢
目前,网络负载均衡器不支持IPv6。请注意,这是GCP上当前可用的唯一直通负载平衡器。将其与谷歌云负载均衡器汇总表进行比较。
只有proxy负载平衡器,如HTTP/HTTPS负载平衡器和TCP proxy/SSL proxy支持IPv6(与HTTP(S(、SSL proxy和TCP proxy负载平衡的IPv6终止相比(
正如你在文档中所读到的:
因为负载平衡器是直通负载平衡器后端终止负载平衡的TCP连接或UDP数据包他们自己
您可能已经知道(您可以在此处阅读(,暂时GCP VPC和GCE实例仅支持IPv4连接:
VPC网络仅支持IPv4单播流量。他们不支持广播多播或IPv6流量在网络内;VPC网络中的VM只能发送到IPv4目的地,并且只能接收来自IPv4源的流量。然而可以为全局负载创建IPv6地址平衡器。
如前所述,TCP代理和SSL代理不支持任意目标端口。仅支持此处列出的众所周知的端口。任意端口只能与外部网络TCP/UDP/strong>负载均衡器一起使用,但由于缺乏对IPv6的支持,您无法使用它。
对于您的特定用例,结论是目前无法按照您想要的方式进行
你的后端真的必须在这个非标准端口上公开吗?-我想你有充分的理由使用它,所以很可能将它更改为某个知名端口甚至不是一个选择。
问题是这不是HTTP服务-如果它是http服务,但仅在某个任意端口上公开,则可以使用ingress。如果是这种情况,您只需创建一个入口,它将请求转发到您的一个后端Services
,如本例所示。入口后端确实可以使用任意端口,但不是任意协议-这就是重点。底层应用程序层协议必须是http。因此,如果您的服务使用一些完全不同的协议,您可能会立即忘记入口。
实际上你自己回答了你的问题。我看到您已经查看了文档,并非常彻底地分析了所有可用的解决方案,排除了那些不符合您要求的解决方案。好我只能通过这份总结来证实这一点。我希望它能有所帮助,即使它没有提供你正在寻找的解决方案。