【问题标题】:Kubernetes gives an internal source IP although externalTrafficPolicy is set to Local尽管 externalTrafficPolicy 设置为 Local,但 Kubernetes 提供了一个内部源 IP
【发布时间】:2019-03-19 14:46:21
【问题描述】:

我们的 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 的裸机集群。

【问题讨论】:

  • 我发现需要使用NO_MASQ_LOCAL=1 配置编织以尊重externalTrafficPolicy 属性。
  • 我们遇到了同样的问题,唯一不同的是我们在 flannel 网络上,你知道如何关闭 flannel 上的伪装吗?
  • 对不起,法兰绒不知道

标签: kubernetes load-balancing kubernetes-ingress nginx-ingress weave


【解决方案1】:

我发现需要使用 NO_MASQ_LOCAL=1 配置 weave 以尊重 externalTrafficPolicy 属性

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 1970-01-01
      • 2018-04-30
      • 2018-03-23
      • 2020-06-15
      • 1970-01-01
      • 2021-12-30
      • 2011-09-04
      • 2021-01-18
      相关资源
      最近更新 更多