【发布时间】:2019-07-17 14:49:04
【问题描述】:
我在 Kubernetes 中使用 ClusterIP 提供服务,并使用 nginx (https://github.com/helm/charts/tree/master/stable/nginx-ingress) 将这些服务公开给互联网。当我尝试在应用程序中获取客户端 IP 地址时,我正在获取集群的节点 IP。如何检索实际的客户端 IP?
我查看了服务中的"externalTrafficPolicy": "Local" 设置,但该服务类型必须是LoadBalancer。
我还尝试使用以下方法更新入口注释:
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,X-Forwarded-For,csrf-token"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://example.com"
但是,它仍然无法正常工作。请指教!
【问题讨论】:
-
如果您在
iptables模式下运行 kube-proxy,则从集群内发送到服务类型ClusterIP的数据包永远不会进行源 NAT’d per kubernetes.io/docs/tutorials/services/source-ip/…。 kube-proxy 是否在所有节点上以iptables模式运行?检查所有节点上curl localhost:10249/proxyMode的输出。 -
@VikramHosakote:我不知道 kube-proxy 是什么。以前从未设置过。
标签: nginx kubernetes