使用负载平衡器时查看kubernetes日志中的客户端ip地址

使用负载平衡器时查看kubernetes日志中的客户端ip地址,kubernetes,kubernetes-ingress,google-kubernetes-engine,Kubernetes,Kubernetes Ingress,Google Kubernetes Engine,我在GKE上托管我的应用程序。服务器中安装的kubectl版本为v1.10.11-gke.1,nginx ingress为nginx-ingress-0.28.2 我想在日志中查看客户端IP地址。目前,我只能看到pod IP地址,例如: 2019-02-1415:17:21.000吃 10.60.1.1-[10.60.1.1]-[14/Feb/2019:12:17:21+0000]“获取/用户HTTP/2.0”4049“-”Mozilla/5.0(Macintosh; 我的服务由letsencr

我在GKE上托管我的应用程序。服务器中安装的kubectl版本为
v1.10.11-gke.1
,nginx ingress为
nginx-ingress-0.28.2

我想在日志中查看客户端IP地址。目前,我只能看到pod IP地址,例如:

2019-02-1415:17:21.000吃
10.60.1.1-[10.60.1.1]-[14/Feb/2019:12:17:21+0000]“获取/用户HTTP/2.0”4049“-”Mozilla/5.0(Macintosh;

我的服务由letsencrypt管理tls。如何在日志上获取客户端IP地址


我重现了您在测试中观察到的行为。在我自己的容器日志中,在使用nginx ingress controller运行的作业上,我们只能看到内部IP地址,假设nginx ingress controller服务YAML文件设置为:

externalTrafficPolicy: Cluster
将流量设置为“群集”意味着所有节点都可以接收请求。“群集会遮挡客户端源IP”,请求也可以发送到具有运行pod的节点

但是,如果您更改:

externalTrafficPolicy: Local
客户端源IP已公开。“本地”保留客户端源IP,但可能会导致不平衡的通信量传播。这是因为只有运行POD的节点才会被网络负载平衡器视为健康节点。请求将仅发送到健康节点

一些关于如何在容器中使用的背景说明,以及一些关于服务的源IP跃点的进一步阅读,对于理解正在发生的事情非常有用