Rolling Update: Wie erreicht man ein reibungsloses Anwendungs-Upgrade und -Downgrade?

Die Funktion „Anwendungsskalierung“ von Deployment ist ein allgemeiner Betriebs- und Wartungsvorgang. In Kubernetes können wir mit dem Befehl kubectl scale die Anzahl der Pods unter Deployment einfach anpassen. Da StatefulSet ein Sonderfall von Deployment ist, kann es auch verwendet werden Kubectl-Skalierung, um eine „Anwendungsskalierung“ zu erreichen.

Was sollte neben der „Anwendungsskalierung“ auch für andere Betriebs- und Wartungsvorgänge wie Anwendungsaktualisierung und Versions-Rollback getan werden? Dies sind auch Probleme, denen wir im täglichen Betrieb und der Wartung häufig begegnen.

In Kubernetes verwendet das Versionsupdate keine API-Objekte, sondern zwei Befehle: kubectl apply und kubectl rollout. Natürlich müssen sie auch mit YAML-Dateien wie Deployment und DaemonSet abgeglichen werden, die für die Bereitstellung von Anwendungen erforderlich sind.

In Kubernetes werden Anwendungen in Form von Pods ausgeführt, und Pods werden normalerweise von Objekten wie der Bereitstellung verwaltet, sodass die „Versionsaktualisierung“ der Anwendung tatsächlich den gesamten Pod aktualisiert.

Die in Kubernetes angewendete Versionsänderung stellt die Änderung des Pods in der Vorlage dar. Selbst wenn nur ein Feld in der Vorlage geändert wird, wird eine neue Version erstellt, was ebenfalls eine Versionsänderung darstellt.

 In der Ausgabe des Kubectl-Rollout-Status zerstört Kubernetes nicht alle alten Pods und erstellt neue Pods auf einmal, sondern erstellt nacheinander neue Pods und zerstört gleichzeitig alte Pods, um sicherzustellen, dass immer genügend Pods im System ausgeführt werden . Es wird keine „Fenster“-Unterbrechung des Dienstes geben.

Der Prozess der Erhöhung der Anzahl neuer Pods ähnelt ein wenig einem „Schneeballeffekt“, bei dem man bei Null anfängt und immer größer wird. Dies ist also das sogenannte „rollende Update“.

Während des Anwendungsaktualisierungsprozesses können Sie mit kubectl rollout pause das Update jederzeit anhalten, den Pod überprüfen und ändern oder testen und verifizieren. Wenn kein Problem vorliegt, können Sie mit kubectl rollout resume das Update fortsetzen.

Wenn Sie ein Rollback auf die vorherige Version durchführen möchten, können Sie den Befehl kubectl rollout undo verwenden oder den Parameter --to-revision hinzufügen, um ein Rollback auf eine beliebige historische Version durchzuführen.

Der Vorgang des Rückgängigmachens des Kubectl-Rollouts ist tatsächlich derselbe wie der des Kubectl-Anwendens. Die Ausführung erfolgt weiterhin als „Rolling Update“, es wird jedoch die Pod-Vorlage der alten Version verwendet, die Anzahl der Pods der neuen Version wird auf 0 reduziert und die alte Version verwendet Pods werden auf den angegebenen Wert erweitert.

Fügen Sie einfach neue Feldanmerkungen zu den Metadaten der Bereitstellung hinzu.

Die Bedeutung des Anmerkungsfelds ist „Anmerkung“ und „Kommentar“. In der Form ist es dasselbe wie bei Beschriftungen, die beide Schlüsselwerte sind und dem API-Objekt auch einige zusätzliche Informationen hinzufügen, die Verwendung ist jedoch sehr unterschiedlich .

  • Die durch Annotationen hinzugefügten Informationen werden im Allgemeinen für verschiedene Objekte in Kubernetes verwendet, was ein bisschen wie „erweiterte Attribute“ ist;
  • Labels sind hauptsächlich für Benutzer außerhalb von Kubernetes gedacht und werden zum Filtern und Filtern von Objekten verwendet.

Wenn Sie eine einfache Metapher verwenden, sind Anmerkungen die Produktanweisungen in der Schachtel und Etiketten sind die Etikettenaufkleber außerhalb der Schachtel.

Mithilfe von Annotationen kann Kubernetes API-Objekten beliebige zusätzliche Informationen hinzufügen, ohne die Objektstruktur zu zerstören oder neue Felder hinzuzufügen. Dies ist das typische OCP-„Öffnungs- und Schließprinzip“ im objektorientierten Design, wodurch Objekte skalierbarer und flexibler werden.

Dieser Artikel ist eine Lernnotiz für Tag 21 im Juli. Der Inhalt stammt aus „Kubernetes Introductory Practical Course“ von Geek Time . Dieser Kurs wird empfohlen.

Guess you like

Origin blog.csdn.net/key_3_feng/article/details/131859990