Best Practices von Kubernetes. Kubernetes Zero Downtime Cluster Upgrade

Best Practices von Kubernetes. Erstellen kleiner Container
Best Practices für Kubernetes. Kubernetes-Organisation mit dem Kubernetes
Best Practices-Namespace. Kubernetes-Lebensfähigkeitstest mit Bereitschafts- und Lebendigkeitstests Kubernetes
Best Practices. Festlegen von Abfragen und Ressourcenbeschränkungen
Best Practices für Kubernetes. Richtig Beenden
Deaktivieren von Kubernetes Best Practices. Zuordnung externer Dienste

Jeder weiß, wie gut es ist, Ihre Anwendungen auf dem neuesten Stand zu halten. Kubernetes und Docker können den Aktualisierungsprozess erheblich vereinfachen, sodass Sie einen neuen Container mit aktualisierten Abhängigkeiten erstellen und problemlos bereitstellen können. Neben der Aktualisierung der Anwendungsabhängigkeiten aktualisiert Kubernetes ständig Funktionen und Sicherheitsrichtlinien.
Daher müssen die Basisknoten und die Infrastruktur von Kubernetes auf dem neuesten Stand sein. In dieser Serie erfahren Sie, wie die Google Kubernetes Engine den Kubernetes-Cluster problemlos aktualisieren kann.

Wenn Sie einen Cluster aktualisieren, müssen Sie die Assistenten und Knoten aktualisieren, und die Assistenten müssen zuerst aktualisiert werden. Mal sehen, wie beide Elemente mit der Google Kubernetes Engine aktualisiert werden. Dieses System aktualisiert den Assistenten automatisch, wenn Punktfreigaben freigegeben werden. In der Regel wird es jedoch nicht automatisch auf die neue Version aktualisiert, z. B. 1.7-1.8. Wenn Sie bereit sind, auf die neue Version zu aktualisieren, können Sie einfach in der GKE-Konsole auf den Link Verfügbares Upgrade aktualisieren klicken. Anschließend wird ein Dialogfeld auf dem Bildschirm angezeigt. Es enthält eine Warnung, dass das Ändern der Master-Version einige Minuten dauern kann. Während dieser Zeit können Sie diesen Cluster nicht bearbeiten, während Ihre Bereitstellungen und Dienste während des Upgrades des Assistenten weiterhin normal funktionieren. Die gesamte Infrastruktur, die die Kubernetes-API benötigt, funktioniert jedoch nicht.



Dies bedeutet, dass QPTL und alle Anwendungen, die die Kubernetes-API zum Abrufen von Clusterinformationen verwenden, deaktiviert werden und Sie keine Änderungen am Cluster vornehmen können.

Lassen Sie uns sehen, wie Sie dieses Problem lösen können, indem Sie den Assistenten ohne Ausfallzeiten aktualisieren.



Während der Standard-GKE-Zonencluster nur einen Assistenten unterstützt, können Sie regionale Cluster erstellen, die Hochverfügbarkeitsassistenten für mehrere Zonen bereitstellen. Stellen Sie daher beim Erstellen Ihres Clusters sicher, dass Sie eine regionale Option auswählen.

Ihre Knoten und Assistenten werden automatisch in drei Zonen erstellt, und die Assistenten verfügen über IP-Adressen mit Lastenausgleich. Dadurch läuft die Kubernetes-API während des Upgrades reibungslos.

Beim Aktualisieren von Knoten gibt es verschiedene Strategien, die Sie verwenden können. Ich möchte Ihre Aufmerksamkeit auf zwei Dinge richten - fortlaufende Aktualisierungen und Migration mithilfe von Knotenpools.

Der einfachste Weg, Kubernetes-Knoten zu aktualisieren, ist die Verwendung des fortlaufenden Updates, dem Standard-Update-Mechanismus, den GKE zum Aktualisieren Ihrer Knoten verwendet. Es funktioniert wie folgt.



Die Knoten der alten Version werden nacheinander außer Betrieb genommen, sodass alle Module nicht mehr in ihnen arbeiten. Anschließend werden diese Knoten gelöscht, und stattdessen werden nacheinander neue Knoten der aktualisierten Kubernetes-Version angezeigt. Nachdem ein Knoten zu arbeiten beginnt, fährt der andere mit dem Aktualisierungsprozess fort, und dies wird fortgesetzt, bis alle Knoten aktualisiert sind. Sie können GKE diesen Prozess für Sie verwalten lassen, indem Sie die automatische Aktualisierung von Knoten im Knotenpool aktivieren, indem Sie Aktiviert auswählen.



Wenn Sie dies nicht tun, werden Sie vom GKE-Dashboard gewarnt, wenn ein neues Update verfügbar ist. In diesem Fall müssen Sie zum Ausführen der Aktualisierung auf den Link Automatische Knotenaktualisierungen klicken und den Anweisungen folgen.



Gleichzeitig ist es sehr wichtig sicherzustellen, dass Ihre Pods mithilfe des Replikatsets, eines Stateful-Sets oder ähnlichem gesteuert werden. Dann werden die autonomen Herde nicht umstrukturiert.

Obwohl rollierende Updates mit GKE ziemlich einfach durchzuführen sind, weist es dennoch einige Nachteile auf. Eine davon ist, dass beim Upgrade die Kapazität Ihres Clusters um einen Knoten abnimmt. Dieser Nachteil kann leicht beseitigt werden, indem der Knotenpool skaliert wird, indem zusätzliche Kapazität hinzugefügt und nach dem Update reduziert wird.

Darüber hinaus erleichtert die vollautomatische Ausführung fortlaufender Aktualisierungen die Aktualisierung, lässt Ihnen jedoch weniger Kontrolle über den Prozess. Wenn etwas schief geht und Sie auf die alte Version zurücksetzen müssen, dauert es einige Zeit, bis die Aktualisierung beendet ist und bereits vorgenommene Änderungen verworfen wurden. Lassen Sie uns sehen, wie Sie Pools von mehreren Knoten verwenden können, um Ihren Cluster zu aktualisieren.



Anstatt den aktiven Knotenpool mithilfe fortlaufender Aktualisierungen zu aktualisieren, erstellen Sie einen vollständig neuen Knotenpool, warten, bis alle Knoten gestartet sind, und übertragen dann Workloads knotenweise. Wenn Sie diese Befehle selbst ausführen, erhalten Sie mehr Kontrolle über den Migrationsprozess, während GKE Ihre Knoten weiterhin verwaltet.
Angenommen, ein Kubernetes-Cluster besteht aus 3 virtuellen Maschinen. Sie können die Knoten mit dem Befehl get node anzeigen.



Um einen neuen Knotenpool mit dem Namen pool-two zu erstellen, müssen Sie den entsprechenden Befehl verwenden und ihn genauso einrichten wie den Befehl für den alten Pool.



Optional können Sie auch die GUI verwenden, um einen neuen Knotenpool zu erstellen. Weitere Informationen hierzu finden Sie unter dem Link zur Erstellung des Knotenpools unter diesem Video.

Wenn Sie die Anzahl der Knoten erneut überprüfen, finden Sie drei neue Knoten mit dem Pool-Zwei-Pool-Namen. Die Pods befinden sich jedoch weiterhin auf den alten Knoten.



Verschieben wir sie in einen neuen Knotenpool und verschieben jeweils einen Knoten im Rolling-Modus. Verwenden Sie dazu den Befehl cordon für jeden alten Knoten, um ihn zu schützen und die Bildung neuer Herde in ihm zu verhindern.



Sobald alle alten Knoten eingezäunt sind, wird die Erstellung von Herden nur in neuen Knoten geplant. Dies bedeutet, dass Sie Pods von alten Knoten entfernen können und Kubernetes automatisch plant, sie in neuen Knoten zu erstellen. Dann müssen Sie jeden Knoten „entleeren“, wodurch alle Herde im Knoten entfernt werden.



Nachdem Sie dies für einen Knoten getan haben, stellen Sie sicher, dass die neuen Pods bereit sind und bereits funktionieren, und fahren Sie dann mit dem nächsten Knoten fort. Wenn Sie während der Migration Probleme hatten, führen Sie uncordon für den alten Pool aus und führen Sie cordon und drain für den neuen Pool aus. In diesem Fall werden die Pods automatisch wieder in den alten Pool übertragen. Sobald alle Pods sicher übertragen wurden, können Sie den alten Pool löschen. Ersetzen Sie dazu den Standardpool durch den Pool, den Sie löschen möchten.



Mit der Google Kubernetes Engine können Sie Ihren Kubernetes-Cluster mit nur wenigen Klicks auf dem neuesten Stand halten. Ich empfehle dringend, regionale GKE-Cluster für Hochverfügbarkeitsassistenten und automatische Knotenaktualisierungen zu verwenden, um korrekte und problemlose Aktualisierungen sicherzustellen.

Wenn Sie zusätzliche Kontrolle über den Knotenaktualisierungsprozess benötigen, können Sie ihn mithilfe von Pools bereitstellen, ohne die Vorteile der von GKE bereitgestellten Verwaltungsplattform aufzugeben.

Wenn Sie GKE nicht verwenden, aktualisieren Sie die Knoten Ihres Clusters mithilfe der Rolling Update Rolling-Methode oder der Knotenpoolknoten. Denken Sie jedoch daran, dass Sie in diesem Fall manuell neue Knoten zum Cluster hinzufügen und selbst wichtige Aktualisierungen durchführen müssen, was möglicherweise nicht ganz einfach ist.

Wird sehr bald fortgesetzt ...


Ein bisschen Werbung :)


Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden Cloud-basiertes VPS für Entwickler ab 4,99 US-Dollar empfehlen , ein einzigartiges Analogon von Einstiegsservern, das von uns für Sie erfunden wurde: Die ganze Wahrheit über VPS (KVM) E5-2697 v3 (6 Kerne) 10 GB DDR4 480 GB SSD 1 Gbit / s ab 19 $ oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

Dell R730xd 2-mal günstiger im Equinix Tier IV-Rechenzentrum in Amsterdam? Nur wir haben 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2,6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbit / s 100 TV von 199 US-Dollar in den Niederlanden!Dell R420 - 2x E5-2430 2,2 GHz 6C 128 GB DDR3 2x960 GB SSD 1 Gbit / s 100 TB - ab 99 US-Dollar! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse C mit Dell R730xd E5-2650 v4-Servern für 9.000 Euro für einen Cent?

All Articles