我正在使用Google容器引擎在docker容器中运行gunicorn + flask服务。我按照http://kubernetes.io/docs/hellonode/
上的教程设置了群集 iResult
环境变量始终包含Kubernetes群集中的内部地址。我要找的是REMOTE_ADDR
,但是请求标题中缺少它。是否可以将服务配置为在请求中保留外部客户端ip?
答案 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/
答案 1 :(得分:3)
我假设您通过将服务类型设置为LoadBalancer
来设置服务?现在客户端IP丢失时,传入网络负载均衡数据包通过Kubernetes路由的方式是一个不幸的限制。
您可以set up an Ingress
object将服务与Google Cloud HTTP(s) Load Balancer集成,而不是使用服务的LoadBalancer
类型,这会将X-Forwarded-For标头添加到传入请求。