Kubernetes: LoadBalancer verzögerte das Routing zu Pods nach RollingUpdate

Erstellt am 5. Dez. 2016  ·  3Kommentare  ·  Quelle: kubernetes/kubernetes

Ist das eine Bitte um Hilfe? (Wenn ja, sollten Sie unseren Leitfaden zur Fehlerbehebung und die Community-Supportkanäle verwenden, siehe http://kubernetes.io/docs/troubleshooting/.):
Nein

Nach welchen Schlüsselwörtern haben Sie in Kubernetes-Problemen gesucht, bevor Sie dieses eingereicht haben? (Wenn Sie Duplikate gefunden haben, sollten Sie stattdessen dort antworten.):

https://github.com/kubernetes/kubernetes/issues?page=3&q=is%3Aissue+is%3Aopen+loadbalancer+update&utf8=%E2%9C%93


Ist dies ein FEHLERBERICHT oder eine FEATURE-ANFRAGE? (wähle ein):
Fehlerbericht

Kubernetes-Version (verwenden Sie kubectl version ):
Auftraggeber 1.4.4
Cluster 1.4.6

Umgebung :

  • Cloud-Anbieter oder Hardwarekonfiguration : GKE
  • Betriebssystem (z. B. aus /etc/os-release):
  • Kernel (zB uname -a ):
  • Werkzeuge installieren :
  • Andere :
    3-Knoten-Cluster

Was ist passiert :
Wenden Sie ein fortlaufendes Update an, sehen Sie, wie die neuen Pods ausgeführt und bereit werden, die alten Pods werden beendet.
Führt zu Zeitüberschreitungen, wenn der Load Balancer erreicht wird. Warten Sie ein paar Minuten und der Datenverkehr wird korrekt weitergeleitet.

Was Sie erwartet haben :
Der Datenverkehr wird nahtlos zu den neuen Pods geleitet.

So reproduzieren Sie es (so minimal und genau wie möglich):
https://gist.github.com/1d668ba12b12f450e8feffb21383ba44

kubectl apply -f deployment.yaml
kubectl get svc , warte bis die externe IP kommt.
Achten Sie darauf, dass der Datenverkehr korrekt weitergeleitet wird.

Etwas bearbeiten (wie die Umgebungsvariable)
kubectl apply -f deployment.yaml
Warten Sie, bis alte Pods beendet sind. Beachten Sie Timeouts, bis sich der Load Balancer selbst aktualisiert.

Was wir sonst noch wissen müssen :

Hilfreichster Kommentar

Bestätigt. Die Kombination aus Entleerung und Bereitschaftsprüfung führte zu null Ausfallzeiten:
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Sorry für den fehlerhaften Bericht.

Alle 3 Kommentare

Ich denke, das Beenden von Pods führt standardmäßig zu fehlgeschlagenen Anfragen, da es in Kubernetes keinen „Verbindungsausgleich“ gibt – Sie müssten die Bereitschaftsprüfung der App „just in time“ manuell umschalten: https://github.com/RisingStack/ kubernetes-graceful-shutdown-example

Ich bin mir nicht sicher, ob dies Ihr Problem ist (sehen Sie die Quelle Ihres App-/Docker-Images nicht).

App-Quellcode:
https://gist.github.com/d68192f04e3ff50bf9bf7e90ee879077

Ich werde versuchen, den Quellcode zu ändern, um Anfragen zu entleeren. Macht Sinn, dass dies das Problem sein könnte.

Bestätigt. Die Kombination aus Entleerung und Bereitschaftsprüfung führte zu null Ausfallzeiten:
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Sorry für den fehlerhaften Bericht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen