Читать книгу Kubernetes - Kelsey Hightower - Страница 16
1.2.2Einfaches Skalieren für Anwendungen und Cluster
ОглавлениеWenn Sie ganz konkret Ihren Service skalieren müssen, sorgt die immutable, deklarative Natur von Kubernetes dafür, dass dieses Skalieren trivial zu implementieren ist. Weil Ihre Container immutabel sind und die Anzahl der Instanzen einfach eine Zahl in einer deklarativen Konfiguration ist, geht es beim Hochskalieren Ihres Service schlicht darum, eine Zahl in einer Konfigurationsdatei zu ändern, diesen neuen deklarativen Status Kubernetes mitzuteilen und es sich dann um den Rest kümmern zu lassen. Alternativ können Sie auch ein Autoscaling einrichten und das Ganze von Kubernetes erledigen lassen.
Natürlich wird bei dieser Art von Skalierung davon ausgegangen, dass es in Ihrem Cluster Ressourcen gibt, die genutzt werden können. Manchmal müssen Sie aber auch das Cluster selbst skalieren. Auch hier hilft Kubernetes. Weil viele Maschinen in einem Cluster identisch mit anderen sind und die Anwendung selbst von den Maschinendetails durch die Container entkoppelt ist, geht es beim Hinzufügen von Ressourcen zum Cluster nur darum, eine neue Maschine der gleichen Klasse mit einem Image zu versehen und sie in das Cluster einzuhängen. Das lässt sich über ein paar einfache Befehle oder ein vorgefertigtes Image erreichen.
Eine der Herausforderungen beim Skalieren von Rechner-Ressourcen ist die Vorhersage der Verwendung. Lassen Sie Ihr Cluster auf einer Infrastruktur aus echten Rechnern laufen, wird die Zeit zum Bereitstellen einer neuen Maschine in Tagen oder Wochen gemessen. Sowohl bei einer »echten« wie auch bei einer Cloud-Infrastruktur ist die Vorhersage zukünftiger Kosten schwierig, weil es schwerfällt, das Wachstum und die Skalierungsanforderungen bestimmter Anwendungen zu prognostizieren.
Kubernetes kann das Vorhersagen zukünftiger Kosten vereinfachen. Um das zu verstehen, stellen Sie sich das Vergrößern von den drei Teams A, B und C vor. Aus Erfahrung wissen Sie, dass das Wachstum jedes Teams sehr variabel ist und sich daher schlecht vorhersagen lässt. Provisionieren Sie für jeden Service individuelle Maschinen, haben Sie keine andere Wahl, als Ihre Vorhersagen auf der maximal zu erwartenden Wachstumsrate für jeden Service basieren zu lassen, da die Rechner für das eine Team nicht für ein anderes Team eingesetzt werden können. Nutzen Sie stattdessen Kubernetes, um die Teams von den spezifischen Rechnern zu entkoppeln, können Sie das Wachstum basierend auf dem Gesamtwachstum aller drei Services vorhersagen. Durch das Kombinieren von drei variablen Wachstumsraten zu einer einzigen Rate reduzieren Sie statistisches Rauschen und sorgen für eine zuverlässigere Vorhersage des zu erwartenden Wachstums. Zudem bedeutet das Entkoppeln spezifischer Maschinen von den Teams, dass diese auch Anteile der Rechner mit anderen teilen können und damit den Overhead noch weiter verringern, der mit dem Vorhersagen der Wachstumsanforderungen von Rechenressourcen verbunden ist.