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

原文地址:https://www.cnblogs.com/IC1101/p/11736927.html