在Kubernetes中对入口/出口使用静态IP

时间:2019-03-19 11:02:30

标签: kubernetes google-cloud-platform udp google-kubernetes-engine nat

我有一个要在Kubernetes集群中运行的程序。 该程序是使用非标准UDP协议的服务器。 该协议主要由短请求/应答对组成,类似于DNS。 与DNS的主要区别在于“服务器”和“客户端”都可以发送请求,即。通信可以由任何一方发起。

客户端是配置有服务器IP地址的嵌入式设备。 客户端将他们的请求发送到该IP。 他们还会检查传入消息是否源自此IP,并丢弃来自其他IP的消息。

我的问题是我如何使用Kubernetes来设置服务器,这样

  1. 服务器接受特定IP上的传入UDP消息。
  2. 服务器可以看到真实的客户端源IP。
  3. 服务器发送的任何答复(或其他消息)都具有与源相同的IP(以便客户端可以接受)。

我尝试过的不起作用的一件事是用Servicetype: LoadBalancer设置externalTrafficPolicy: Local(后者用于保留要求2的源IP)。 此设置满足上述要求1和2,但是由于出站消息不会通过负载平衡器,因此其源IP是运行服务器的Pod所在的任何节点的IP。

我正在Google Cloud Platform(GKE)上运行Kubernetes。

1 个答案:

答案 0 :(得分:0)

请按照以下说明验证解决方案:
1. Kubernetes..
c)具有 Type = LoadBalancer
的服务的源IP -将部署公开为:-type = LoadBalancer
-设置 service.spec.externalTrafficPolicy:'{“ spec”:{“ externalTrafficPolicy”:“ Local”}}'

使用示例“ echoserver”中描述的图像将返回我的公共地址。