【问题标题】:Expose TCP/UDP port externally with ingess/egress through the same IP通过同一个 IP 向外部公开 TCP/UDP 端口与入口/出口
【发布时间】:2021-02-04 21:24:29
【问题描述】:

我在 GKE 集群中有一个工作负载,我需要在外部公开一个同时具有 TCP 和 UDP 协议的端口。复杂之处在于,出口和入口应该通过相同的外部 IP 才能使 P2P 协议正常工作。

目前,我的集群是公共的,我使用hostNetwork: true 此处描述的技巧https://stackoverflow.com/a/47887571/803403,但考虑迁移到私有集群并使用 Cloud NAT。但是,在这种情况下,我没有找到如何公开该端口的方法。我试图通过 ClusterIP 公开它,但在防火墙规则中无法将外部端口映射到该 ClusterIP 端口,因为最后一个没有网络标签。而且我不确定防火墙规则是否可以应用于绑定到 Cloud NAT 的 Cloud Router。

有人有想法吗?

谢谢!

【问题讨论】:

  • 为什么不使用 LoadBalancer 公开它?
  • 检查this article,你需要使用nodeport来代替。看看它是否适合您的用例。
  • @guillaumeblaquiere LoadBalancer 不支持同一端口上的多个协议。
  • @AlexG 不幸的是,nodeport 的主要条件是it is needed to have external IP address assigned to one of the nodes in cluster,而私有集群并非如此。

标签: google-cloud-platform google-kubernetes-engine gke-networking


【解决方案1】:

你在死胡同!今天,您通过其中一个节点的公共 IP 公开您的服务。如果你去私有,你将不再有公共 IP,只有私有 IP。因此,您需要一些东西来连接私人世界和公共互联网:负载均衡器

但是,Google 负载平衡器本身不支持同一 IP 上的多协议(此处为 TCP 和 UDP),因此您不能使用负载平衡器。

运气不好……

注意:我知道 Google Cloud 内部网络端正在进行更新,但仅此而已。我不确切知道是否会发布一种新型负载均衡器以及是否会发布。也许......请继续关注,但不会在接下来的几周内完成

【讨论】:

  • 我希望 Cloud NAT 和 Cloud Router 以及防火墙规则能够解决问题,但显然,这是不可能的 Firewall rules are applied directly to the network interfaces of Compute Engine VMs, not Cloud NAT gateways.
  • 是的,NAT 仅适用于出站流量,您无法通过对 Cloud NAT IP 的传入请求访问您的 GKE 集群
猜你喜欢
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 2023-01-08
相关资源
最近更新 更多