我在阿里云上的 ManagedKubernetes 集群上有 1 个部署,服务 spec.type=LoadBalancer 我可以成功地使用该 IP 来处理传入流量
但是出站 ip 似乎仍然使用 NAT 网关 IP 进行具有 service spec.type=LoadBalancer 的部署
那么,如何将相同的 IP 用于使用 LoadBalancer 的部署的传出和传入流量?
我在阿里云上的 ManagedKubernetes 集群上有 1 个部署,服务 spec.type=LoadBalancer 我可以成功地使用该 IP 来处理传入流量
但是出站 ip 似乎仍然使用 NAT 网关 IP 进行具有 service spec.type=LoadBalancer 的部署
那么,如何将相同的 IP 用于使用 LoadBalancer 的部署的传出和传入流量?
您可能会在这里找到您的解决方案:
从 Kubernetes 1.5 开始,默认情况下发送到 Type=LoadBalancer 的服务的数据包经过源 NAT,因为处于就绪状态的所有可调度 Kubernetes 节点都符合负载平衡流量的条件。因此,如果数据包到达没有端点的节点,系统会将其代理到具有端点的节点,将数据包上的源 IP 替换为节点的 IP(如上一节所述)。您可以通过负载均衡器公开 source-ip-app 来测试它
$ kubectl expose deployment source-ip-app --name=loadbalancer --port=80 --target-port=8080 --type=LoadBalancer
service/loadbalancer exposed
$ kubectl get svc loadbalancer
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loadbalancer LoadBalancer 10.0.65.118 104.198.149.140 80/TCP 5m
$ curl 104.198.149.140
CLIENT VALUES:
client_address=10.240.0.5
...