我在 GKE/Kubernetes 中运行一项服务,该服务在 Staric IP 地址上公开单个 UDP 端口。(我已经从 GCE 中的临时 IP 地址提升了静态 IP 地址。)如果我使用以下字段部署它,则服务是可访问的。
spec:
type: LoadBalancer
loadBalancerIP: <static-ip-address>
但是,我不打算运行我的服务的多个副本,而且我什至不确定 GKE 的负载均衡器是否与 UDP 一起使用,因此我想尝试不使用。
以下替代配置尚不起作用。有了它,服务就会启动,但在不同的 IP 地址上,因此无法根据需要从外部访问。
spec:
type: NodePort
externalIPs:
- <static-IP-address>
那么,在没有负载平衡器的情况下,在“自己的”静态 IP 地址上运行外部可见的服务是可能的,如果是这样的话怎么办?
更新进一步的进展表明工作平衡器也适用于 UDP,但它似乎仍然是多余的。
L3/4 负载均衡器将接收传入的 UDP 数据包并选择一个后端将它们发送到。如果你只有一个后端,那么所有的数据包都会在那里结束。一旦您有多个后端,那么您将需要了解负载均衡器是否平衡了数据包流的各个数据包(基于 {source ip, dest ip, source port, dest port, protocol} 的 5 元组)。您应该阅读本节以了解 GCP 的 UDP 负载平衡是如何工作的。