2016-08-06 38 views

Antwort

1

Im Moment macht der Dienst type: LoadBalancer einen Doppelsprung. Die externe Anforderung wird unter allen Knoten des Clusters ausgeglichen, und dann werden die tatsächlichen Service-Backends von Kube-Proxy ausgeglichen.

Kube-Proxy NATs die Anfrage. Z.B. Eine Clientanforderung von 1.2.3.4 an Ihren externen Load Balancer unter 100.99.98.97 wird im Knoten mit NAT zu 10.128.0.1->10.100.0.123 (private IP des Knotens zur Cluster-IP des Pods) verknüpft. Die "src ip", die Sie im Backend sehen, ist also die private IP des Knotens.

Es gibt eine feature planned mit einer entsprechenden design proposal für die Erhaltung von Client-IPs von LoadBalancer-Diensten.

+0

Und kube-Proxy hat kein Protokoll der eingehenden Anfragen, bevor es nats Dinge? :/ – yair

0

Sie könnten die real IP module für Nginx verwenden.

Fahren Sie mit internen GKE Netz als set_real_ip_from Richtlinie und Sie werden das echte Client-IP in Ihren Protokollen finden Sie unter:

set_real_ip_from 192.168.1.0/24;

Normalerweise würden Sie auf die nginx-Konfiguration hinzufügen:

  1. Die Loadbalancer IP
    dh die IP, die Sie in Ihren Protokollen anstelle des echten Client siehe IP derzeit

  2. Das Kubernetes-Netzwerk
    dh das Subnetz Ihre P ods sind in dem "Docker Subnetz"

+0

Ich habe das versucht, aber es scheint nicht zu funktionieren. Ich habe diese Direktiven nach 'http {'on nginx set_real_ip_von 127.0.0.1; set_real_ip_von 192.168.0.0/24; set_real_ip_von 10.0.0.0/8; real_ip_header X-Forwarded-For; real_ip_recursive ein; – melalj

+0

Ich habe meine Antwort aktualisiert. Ihre Subnetze sind höchstwahrscheinlich falsch. Können Sie weitere Details zu Ihrem Pod-Netzwerk angeben? Deine Konfiguration sollte der Realität entsprechen. 127.0.0.1 macht hier keinen Sinn, es sei denn, Sie haben tatsächlich einen Proxy, der zusammen mit einer anderen App in Ihren Pods läuft. –

+0

Ich habe versucht, es mit der Annahme aller IP zu testen: 'set_real_ip_from 0.0.0.0/0;' aber immer noch nicht Client-IP auf den Protokollen – melalj