2017-04-10 1 views
0

Um mit Kubernetes Skalierung zu üben, ich habe das folgende Szenario erstellt:Auto-Skalierung Schoten in Kubernetes je nach Anzahl der angeschlossenen Benutzer


Das Spiel:

  • Ich habe ein in Java geschriebenes Spiel mit 2 Spielern, einem Master (wählt eine Nummer unter 100) und einem Guesser (versucht die Nummer zu erraten).
  • Die Server-Instanz wird beendet, sobald der Guesser die Nummer korrekt erraten hat, oder einer der Spieler die Verbindung trennt.
  • Jede Server-Instanz erlaubt nur maximal 2 Verbindungen (Master, Guesser).

Kubernetes:

  • Jedes Mal, wenn der Server erreicht es Verbindungen maximal ist, möchte ich Kubernetes automatisch einen anderen Server-Instanz starten und verwenden, die neue Server-Instanz für neue Benutzer, die verbinden.

Meine Idee war Kubernetes-Client aus der Java-Server-Instanz zu verwenden, und aktualisieren Sie die Kubernetes Cluster von jeder Server-Instanz. In dieser Form würde ich den Cluster dezentral verwalten.

Was sind Ihre Gedanken dazu? Gibt es einen besseren Weg, um das zu erreichen? Kann ich zum Beispiel die Metadaten des Pods aktualisieren und dafür eine Form der automatischen Skalierung verwenden?

Antwort

0

Wahrscheinlich möchten Sie die Cluster-Autoscaling-Funktionalität von Kubernetes verwenden. Bitte beachten Sie die docs.

Ihr Ansatz, eine feste Benutzernummer als benutzerdefinierte Metrik zu verwenden, wird wahrscheinlich funktionieren, aber Sie sollten besser allgemeine Metriken wie die CPU-Auslastung auf Ihrem Knoten verwenden. Dazu definieren Sie den maximalen Verbrauch, den Ihre Container verwenden dürfen. Diese Informationen werden vom Autoscaling benötigt, um zu ermitteln, ob zusätzliche Pods auf einem Knoten geplant werden können.

Beachten Sie, dass zwei Ebenen der Skalierbarkeit berücksichtigt werden müssen. Die Pods und die Knoten. Das Autoscaling nimmt die von Ihnen definierte Metrik und plant bei Bedarf zusätzliche Pods. Da Ihre Knoten eine begrenzte Kapazität für die Anzahl der Pods haben, müssen Sie jetzt abhängig von der zugrunde liegenden Infrastruktur auch die Anzahl der Worker-Knoten skalieren. Wenn Sie beispielsweise auf AWS ausgeführt werden, benötigen Sie eine Autoscale-Gruppe. Die beste Möglichkeit, dies einzurichten, besteht darin, dass die AWS-Autoscale-Gruppe auf der Grundlage von eingereihten, geplanten Pods skaliert wird. Wenn sich also Pods in der Warteschlange befinden, die nicht geplant werden können, fügt Ihre Autoscale-Gruppe einen weiteren Knoten hinzu. Hier ist eine great article, die es erklärt.

Verwandte Themen