我在阿里云上的ManagedKubernetes集群上部署了1个服务spec.type=LoadBalancer,我可以成功地将该IP用于传入流量
但对于具有服务spec.type=LoadBalancer的部署,出站ip似乎仍使用NAT网关IP
那么,对于使用LoadBalancer的部署,如何对传出和传入流量使用相同的IP?
发布于 2019-03-06 19:49:25
你可以在这里找到你的解决方案:
从Kubernetes1.5开始,默认情况下,发送到带有Type=LoadBalancer的服务的数据包是源NAT‘d,因为所有处于就绪状态的可调度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
...https://stackoverflow.com/questions/55019861
复制相似问题