尽管 externalTrafficPolicy 设置为本地,但 Kubernetes 提供了内部源 IP

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

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

但是,nginx 看到本地源 IP,因此无法设置正确的 X-Real-IP header 。我尝试将 nginx 的 externalTrafficPolicy 值设置为“本地”,但 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 配置 weave尊重 externalTrafficPolicy 属性

关于尽管 externalTrafficPolicy 设置为本地,但 Kubernetes 提供了内部源 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812230/

相关文章:

kubernetes - 使用 GoLang 模板模拟默认的 Kubernetes CLI 输出

kubernetes - 将 master 添加到 Kubernetes 集群 : cluster doesn't have a stable controlPlaneEndpoint address

c - 使用带有 MPI 的 master-worker 时,哪个大小的 block 将产生最佳性能?

c# - .Net开源集群产品? ...像 Terracotta

security - GCP 库伯内斯 : Ingress and external load balancer with IAP lots of open ports scanning nmap

spring-boot - 从Spring Boot应用程序Kubernetes访问NFS卷挂载

bash - 需要对 kubectl stdin 和 pipeline 进行一些解释

windows-server-2003 - Windows Server 2003 NLB 停止时的 Drainstop 通知

nginx - nginx入口 Controller 正向源ip

kubernetes - Kubernetes ingress 支持通配符域吗?