Sind mehrere Prozesse / Threads in einem Kubernetes-Pod erforderlich?

8

Ich verwende uwsgi in einem Container, der in einem Kubernetes-Cluster gehostet wird. UWSGI unterstützt eine traditionelle Master / Slave-Architektur , um eine bessere Verfügbarkeit für die Anwendung zu bieten, aber meine Frage ist , sollte ich diese Funktion überhaupt nutzen?

Mit anderen Worten, wenn ich mehr Prozesse benötige, um Anfragen zu bearbeiten und zu berechnen, sollte ich die Anzahl der Pods im Cluster erhöhen oder sollte ich noch den Master / Slave-Modus von UWSGI verwenden, um auf die Anfragen zu antworten?

    
Afshin Mehrabani 15.08.2017, 11:20
quelle

3 Antworten

4

Seien Sie sich bewusst, dass Sie genügend Threads / Prozesse / Pods haben, um die Verfügbarkeit aufrechtzuerhalten, wenn Ihre Anwendung während der Bereitstellung jeder HTTP-Anfrage (z. B. Django) blockiert. Es wird eine Pod-Startzeit geben, wenn Sie eine horizontale Pod Autoscaling verwenden, und ich fand mit einer viel Verkehr Anwendung hatte ich viel bessere Verfügbarkeit mit uwsgi und die Anwendung innerhalb jedes Pod (gleicher Container), und einen separaten Nginx-Pod Reverse-Proxying und Request-Pooling, wenn alle uwsgi-Mitarbeiter beschäftigt waren.

YMMV, aber am Ende des Tages ist die Verfügbarkeit wichtiger als die Einhaltung der Faustregel für einen einzelnen Prozess. Verstehen Sie einfach die Nachteile, wie zum Beispiel weniger Isolation zwischen den Prozessen innerhalb des gleichen Containers. Protokolle stehen auf einer Containerbasis zur Verfügung, so dass keine Isolierung zwischen Objekten in demselben Container mithilfe der integrierten kubectl-Protokollfunktionalität besteht.

    
nckturner 16.08.2017, 05:45
quelle
3

Der empfohlene Weg, dies in Kubernetes zu verwalten, besteht darin, die Anzahl der PODs basierend auf den Arbeitslastanforderungen zu erhöhen.

    
sfgroups 15.08.2017 15:41
quelle
2

Wir verwenden ein Bereitstellungsmodell, in dem eine django-basierte App von gunicorn mit einigen Worker-Prozessen bereitgestellt wird. Wir haben weiter versucht, diesen Pod auf 2-3 Replikas zu skalieren und Leistungsverbesserungen gesehen zu haben.

Es kommt völlig darauf an, was für Ihre App funktioniert.

Der Vorteil der Skalierung von Pods besteht darin, dass Sie sie dynamisch konfigurieren können und somit keine Ressourcen verschwenden.

    
Shahidh 23.08.2017 19:58
quelle

Tags und Links