如何使用 LoadBalancer 服务从 Azure Kubernetes 内部获取客户端 IP 地址

How to get client IP address from inside a Azure Kubernetes with a LoadBalancer service

我正在获取节点 IP 地址而不是客户端 IP。是否可以通过 LoadBalancer 类型的服务获取客户端 IP?或者我需要使用入口控制器吗?

apiVersion: v1
kind: Service
metadata:
  name: app-svc
  labels:
    name: app-svc
    environment: dev
spec:
  type: LoadBalancer
  loadBalancerIP: XXX.XXX.XXX.XXX
  ports:
    - name: http-port
      port: 80
      targetPort: 80
      protocol: TCP
  selector:
      name: app-deploy

您不需要任何 Ingress 控制器。但是需要在Microsoft Azure中将spec.externalTrafficPolicy Service字段的值设置为"Local"(默认为"Cluster")。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ...

参见Using source IP