Kubernetes中 获取真实请求IP


本来以为获取请求者的ip,直接从请求头获取“X-Forwarded-For”字段就可以了,没想到,获取的是一个K8S的容器地址。

原因:

负载均衡默认的externalTrafficPolicy配置为Cluster。此路由模式会隐藏真实客户IP,但是能实现Pod级别的负载均衡。

解决办法:

路由策略externalTrafficPolicy设置为Local;
kind: Service
metadata:
  name: example-service
spec:
  selector:
    app: example
  ports:
    - port: 8765
      targetPort: 9376
  externalTrafficPolicy: Local
  type: LoadBalancer

解决办法的缺点:

无法实现Pod级别的负载均衡,只能在Node级别实现负载均衡。

参考:

从service的externalTrafficPolicy到podAntiAffinity
preserving-the-client-source-ip


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM