如何从Google Container Engine访问HTTP请求的客户端IP?

时间:2016-04-07 00:58:11

标签: google-cloud-platform kubernetes google-kubernetes-engine

我正在使用Google容器引擎在docker容器中运行gunicorn + flask服务。我按照http://kubernetes.io/docs/hellonode/

上的教程设置了群集

iResult环境变量始终包含Kubernetes群集中的内部地址。我要找的是REMOTE_ADDR,但是请求标题中缺少它。是否可以将服务配置为在请求中保留外部客户端ip?

2 个答案:

答案 0 :(得分:8)

如果有人对此感到困惑,那么有更好的方法。 您可以根据您的kubernetes版本使用以下注释:

service.spec.externalTrafficPolicy: Local 

on 1.7

service.beta.kubernetes.io/external-traffic: OnlyLocal

1.5-1.6

之前不支持

来源:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/

请注意有一些警告: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#caveats-and-limitations-when-preserving-source-ips

答案 1 :(得分:3)

我假设您通过将服务类型设置为LoadBalancer来设置服务?现在客户端IP丢失时,传入网络负载均衡数据包通过Kubernetes路由的方式是一个不幸的限制。

您可以set up an Ingress object将服务与Google Cloud HTTP(s) Load Balancer集成,而不是使用服务的LoadBalancer类型,这会将X-Forwarded-For标头添加到传入请求。