0

我在阿里云上的 ManagedKubernetes 集群上有 1 个部署,服务 spec.type=LoadBalancer 我可以成功地使用该 IP 来处理传入流量

但是出站 ip 似乎仍然使用 NAT 网关 IP 进行具有 service spec.type=LoadBalancer 的部署

那么,如何将相同的 IP 用于使用 LoadBalancer 的部署的传出和传入流量?

4

1 回答 1

3

您可能会在这里找到您的解决方案:

https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-type-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
...
于 2019-03-06T11:49:24.890 回答