我在阿里云上的ManagedKubernetes集群上进行了1次部署,服务规范为type.LoadBalancer 我可以成功地将该IP用于传入流量
但是出站IP似乎仍在使用具有服务spec.type = LoadBalancer
的部署的NAT网关IP。那么我如何为使用LoadBalancer的部署使用相同的IP进行传出和传入流量?
答案 0 :(得分:3)
您可能会在这里找到解决方案:
从Kubernetes 1.5开始,默认情况下发送到Type = LoadBalancer的服务的数据包是源NAT,因为所有处于Ready状态的可调度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
...