4

我们的 Kubernetes 集群包括一个 nginx 负载均衡器,它将请求转发到其他 pod。

但是,nginx 看到本地源 IP,因此无法设置正确的 X-Real-IP 标头。我尝试将 nginx 的 externalTrafficPolicy 值设置为“Local”,但 IP 没有改变。

nginx服务配置部分:

 "selector": {
  "app": "nginx-ingress",
  "component": "controller",
  "release": "loping-lambkin"
},
"clusterIP": "10.106.1.182",
"type": "LoadBalancer",
"sessionAffinity": "None",
"externalTrafficPolicy": "Local",
"healthCheckNodePort": 32718

结果:

GET / HTTP/1.1
Host: example.com:444
X-Request-ID: dd3310a96bf154d2ac38c8877dec312c
X-Real-IP: 10.39.0.0
X-Forwarded-For: 10.39.0.0

我们使用带有 metallb 的裸机集群。

4

2 回答 2

1

我发现需要配置 weaveNO_MASQ_LOCAL=1以尊重 externalTrafficPolicy 属性

于 2019-06-11T12:51:51.087 回答
0

这似乎是 LoadBalancer 类型服务的 IPVS 实现中的一个错误:https ://github.com/google/metallb/issues/290

于 2018-11-19T17:09:22.677 回答