如果使用本地流量策略,Kubernetes 负载均衡器将停止服务流量

Kubernetes loadbalancer stops serving traffic if using local traffic policy

目前,我的一项服务设置为负载均衡器时遇到问题。我正在尝试像 docs 中所述那样保存源 IP。但是,当我将 externalTrafficPolicy 设置为本地时,我会丢失该服务的所有流量。是不是我遗漏了什么导致它像这样失败?

负载均衡器服务:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: loadbalancer
    role: loadbalancer-service
  name: lb-test
  namespace: default
spec:
  clusterIP: 10.3.249.57
  externalTrafficPolicy: Local
  ports:
  - name: example service
    nodePort: 30581
    port: 8000
    protocol: TCP
    targetPort: 8000
  selector:
    app: loadbalancer-example
    role: example
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: *example.ip*

可能是几件事。一些建议:

  1. 您的服务正在获取外部 IP,并且不知道如何根据 pod 的本地 IP 地址进行回复。
    • 尝试 运行 在您的 pod 上使用嗅探器查看您是否从外部源获取数据包。
    • 尝试检查您的应用程序日志。
  2. 负载均衡器中的健康检查失败。在 GCP 控制台上检查您的服务的负载均衡器。
    • 检查实例端口是否正在侦听。 (如果您的健康检查失败,可能不会)

希望对您有所帮助。