当前位置: 首页 > 知识库问答 >
问题:

如何在IPv6(GKE)上公开TCP服务

壤驷宏才
2023-03-14

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

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

谢谢

共有1个答案

东龙野
2023-03-14

目前,网络负载均衡器不支持IPv6。请注意,这是GCP上目前唯一可用的直通负载平衡器。将其与Google云负载平衡器表的摘要进行比较。

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

正如您在文档中看到的:

因为负载均衡器是直通负载均衡器,所以后端会终止负载均衡传输控制协议或UDP数据包本身。

您可能已经知道(您可以在此处阅读)目前GCP VPC和GCE实例仅支持IPv4连接:

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

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

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

您的后端真的必须在这个非标准端口上公开吗?-我假设您有充分的理由使用它,所以很可能为一些著名的端口更改它甚至不是一种选择。

问题是这不是HTTP服务。-如果它是http服务,但仅在某个任意端口上公开,则可以使用入口。如果是这种情况,您只需创建一个入口,将请求转发给您的一个后端服务,如本例所示。入口后端实际上可以使用任意端口,但不能使用任意协议,这就是关键所在。底层应用层协议必须是http。因此,如果您的服务使用一些完全不同的协议,您可能会立即忘记入口。

实际上你自己回答了你的问题。我看到您已经仔细阅读了文档并对所有可用的解决方案进行了彻底的分析,排除了那些不符合您要求的解决方案。好我只能用这个总结来证实这一点。我希望它能有所帮助,即使它不能提供您正在寻找的解决方案。

 类似资料:
  • 我正在公有云(Azure/AWS/Google cloud)中运行一个Kubernetes集群,我有一些非HTTP服务要为用户公开。 对于HTTP服务,Id通常使用Ingress资源通过可寻址的DNS条目公开地公开该服务。 对于非HTTP、基于TCP的服务(例如,诸如PostgreSQL之类的数据库),我应该如何公开这些服务以供公共使用? 我考虑过使用服务,但这要求节点本身可以公开访问(依赖路由到

  • 我正在尝试建立一个多集群部署,其中有多个集群,一个入口正在负载平衡它们之间的请求。 这是我所说的正式文件。

  • 我有多个运行RDP应用程序的部署,它们都是通过ClusterIP服务公开的。我的k8s群集中有nginx ingress controller,为了允许tcp,我在nginx ingress controller部署中添加了tcp services configmap标志,并为其创建了configmap,如下所示 这将公开“rdp-service1”服务。我还有10个这样的服务需要在相同的端口号上

  • 我已经在应用程序中添加了这些字段。pom中微服务和依赖关系的yml。xml。Jaeger在my local上运行也可以识别服务 我已经在kubernetes上部署了所有的微服务。请帮助我在kubernetes部署jaeger。 更新:我已达到此步骤。我有一个用于jaeger查询的负载平衡器IP。但是我的微服务将把日志发送到哪个主机和端口??