如何在 google cloud k8 集群的容器内获取请求者的 IP 地址?

问题描述 投票:0回答:1

当我尝试打印

x-forwarded-for
值时,我得到的是集群内节点的 IP 地址,而不是请求客户端的 IP 地址。

我相信我当前的设置看起来像这样:

外部LB -> 入口 -> nginx -> 容器

如果我直接访问nginx,我会得到正确的ip地址。我的入口配置为

nginx.ingress.kubernetes.io/use-forwarded-headers: "true"

google-cloud-platform google-kubernetes-engine gcloud
1个回答
0
投票

有一个可用的解决方法,如本官方文档中所述,使用内部网络直通负载均衡器并将

externalTrafficPolicy
配置为
local
,您可以解决此问题。但有时不建议使用
externalTrafficPolicy: local
,因为这会导致负载平衡不太理想。

另请尝试以下提到的故障排除步骤,这对于解决此问题很有用:

  • 检查您正在使用的负载均衡器类型,如本文档中所述,只有应用程序负载均衡器支持

    x-forwarded-for
    协议,其余负载均衡器支持不同的协议。

  • 如果您使用应用程序负载均衡器,请检查您的所有 NGINX 配置是否正确。

尝试提供您的 NGINX 和 Kubernetes 清单或复制此问题的步骤,以便它将有助于提供详细的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.