Wir haben kürzlich einen Teil unserer Produktionsinfrastruktur nach Kubernetes verlegt. Viele Pods werden durch einen LoadBalancer
Service in AWS verfügbar gemacht. Dadurch wird eine ELB erstellt, jeder Knoten im Cluster bei der ELB registriert und ein Knotenport konfiguriert, um ELB-Ports Pods zuzuordnen. Unsere Anwendungen können eine Verbindung über den Load Balancer herstellen, aber die Anzahl BackendConnectionErrors
(wie von Cloudwatch gemeldet) ist 5-7x höher als die Anzahl der Anforderungen. Ich bin nicht sicher, wie ich das debuggen soll.
Die Anzahl der gemeldeten Backend-Verbindungsfehler korreliert nicht mit Fehlermetriken auf Anwendungsebene. Dies lässt mich zu dem Schluss kommen, dass es sich um ein Infrastrukturproblem handelt, das möglicherweise durch Wiederholungsversuche verstärkt wird. Ich weiß jedoch nicht, wie ich dieses Problem beheben soll.
Meine Hypothese ist eine oder beide:
- Einige seltsame AWS-Einstellungen, die in der ELB für die Verbindungsverwaltung fehlen
- Knoten im Cluster haben eine Systemeinstellung oder eine andere Netzwerkkonfiguration, die die Anzahl der Verbindungen blockiert, die über die ELB kommen
- Ein Zwischenprodukt der Netzwerkinfrastruktur, das die Verbindungen durcheinander bringt.
Meine Frage lautet: Wie kann ich einige TCP- / Netzwerkmetriken für die Instanzen im Cluster debuggen / verfolgen?
Weitere Informationen zu den betreffenden CloudWatch-Metriken .
quelle
Antworten:
Meine Lösung für dieses Problem bestand darin, meine Dienste zu überarbeiten. Das Setup in meiner Frage hatte einen K8
Service
mit ~ 10 Ports. Ich habe das Setup überarbeitet, um einen Port pro zu verwendenService
. Das Problem ging weg. Ich weiß aber nicht warum. Dies lässt mich etwas auf den Knoten selbst oder eine gewisse Komplexität beim Weiterleiten von Verbindungen zum richtigen Knotenport vermuten. Aus diesem Grund bin ich vorsichtig, wieder zu viele Ports freizulegen.quelle