如何使用LoadBalancer IP作为Pod的出站/出站/出口IP

时间:2019-03-06 09:40:51

标签: kubernetes flannel alibaba-cloud project-calico

我在阿里云上的ManagedKubernetes集群上进行了1次部署,服务规范为type.LoadBalancer 我可以成功地将该IP用于传入流量

但是出站IP似乎仍在使用具有服务spec.type = LoadBalancer

的部署的NAT网关IP。

那么我如何为使用LoadBalancer的部署使用相同的IP进行传出和传入流量?

1 个答案:

答案 0 :(得分:3)

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

https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-type-loadbalancer

从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
...