我在 GKE/Kubernetes 中运行一项服务,该服务在静态 IP 地址上公开单个 UDP 端口。(我已将 GCE 中的临时 IP 地址提升为静态 IP 地址。)如果我使用以下字段部署它,则可以访问该服务。
spec:
type: LoadBalancer
loadBalancerIP: <static-ip-address>
但是,我不打算运行我的服务的多个副本,甚至不确定 GKE 的负载均衡器是否可以与 UDP 一起使用,因此我想尝试一下不使用 UDP。
以下替代配置尚未生效。使用此配置,服务可以启动,但 IP 地址不同,因此无法按预期从外部访问。
spec:
type: NodePort
externalIPs:
- <static-IP-address>
那么,在没有负载均衡器的情况下,在“自己的”静态 IP 地址上运行外部可见的服务是否可行?如果可行,如何操作?
更新进一步的进展表明工作平衡器也适用于 UDP,但它仍然显得多余。
答案1
L3/4 负载均衡器将接收传入的 UDP 数据包并选择一个后端来发送它们。如果您只有一个后端,那么所有数据包都会到达那里。一旦您有多个后端,那么您将需要了解负载均衡器是否平衡数据包流的单个数据包(基于 5 元组 {源 IP、目标 IP、源端口、目标端口、协议})。您应该阅读本节了解 GCP 的 UDP 负载平衡如何工作。