Jump to section

Was ist eine Kubernetes-Bereitstellung?

URL kopieren

Eine Kubernetes-Bereitstellung ist ein Ressourcenobjekt in Kubernetes, das deklarative Updates für Apps bereitstellt. Mit einer Bereitstellung können Sie den Lifecycle einer Anwendung beschreiben, zum Beispiel welche Bilder für die App verwendet werden, wie viele Pods erforderlich sind und wie sie aktualisiert werden sollen. 

Mit einem Kubernetes-Objekt können Sie dem Kubernetes-System mitteilen, wie Ihre Cluster Workload aussehen soll. Nachdem ein Objekt erstellt wurde, wird mit dem Cluster sichergestellt, dass es vorhanden ist und der gewünschte Status Ihres Kubernetes-Clusters aufrechterhalten wird. 

Die manuelle Aktualisierung containerisierter Anwendungen kann einen hohen Zeit- und Arbeitsaufwand mit sich bringen. Das Upgrade eines Service auf die nächste Version erfordert den Start der neuen Pod-Version, das Stoppen der alten Pod-Version, das Warten und das Sicherstellen, dass die neue Version erfolgreich gestartet wurde. Falls ein Fehler auftritt, ist manchmal auch ein komplettes Rollback zu einer vorherigen Version erforderlich.

Die manuelle Ausführung dieser Schritte kann zu menschlichen Fehlern führen und die ordnungsgemäße Erstellung von Skripten einen erheblichen Aufwand erfordern. Beides kann zu einem Engpass im Release Process führen. 

Eine Kubernetes-Bereitstellung automatisiert diesen Prozess und macht ihn wiederholbar. Bereitstellungen werden komplett vom Kubernetes-Backend verwaltet, und der gesamte Aktualisierungsprozess wird auf der Serverseite ausgeführt – ohne Interaktion durch den Client.

Mit einer Bereitstellung wird gewährleistet, dass die gewünschte Anzahl von Pods ausgeführt werden und jederzeit verfügbar sind. Dazu wird der Aktualisierungsprozess vollständig aufgezeichnet und mit Optionen zum Anhalten, Fortsetzen und Zurücksetzen auf Vorversionen versioniert.

Mit dem Kubernetes-Bereitstellungsobjekt können Sie:

  • ReplicaSet oder Pods bereitstellen
  • Pods und ReplicaSets aktualisieren
  • Rollbacks auf frühere Bereitstellungsversionen durchführen
  • Bereitstellungen skalieren
  • Bereitstellungen anhalten oder fortsetzen

Zur Verwaltung Ihrer Anwendungen mit einer Kubernetes-Bereitstellung gehört auch die Art und Weise, wie eine Anwendung aktualisiert werden soll. Ein Hauptvorteil einer Bereitstellung ist die Möglichkeit, eine Reihe von Pods vorhersehbar zu starten und zu stoppen.

Rolling Updates-Strategie

Eine Rolling Updates-Strategie ermöglicht einen kontrollierten, schrittweisen Austausch von Anwendungs-Pods. So wird sichergestellt, dass immer eine Mindestanzahl verfügbar ist.

Durch die Bereitstellung wird sichergestellt, dass standardmäßig jederzeit maximal 25 % der Pods verfügbar sind und nicht mehr als 25 % der für den gewünschten Status angegebenen Anzahl von Pods bereitgestellt werden. 

Alte Pods werden erst dann eliminiert, wenn genügend neue Pods verfügbar sind, um die Mindestverfügbarkeit beizubehalten. Dazu werden keine neuen Pods erstellt, bis genügend alte Pods entfernt wurden.

Mit dem Bereitstellungsobjekt können Sie die Zahl verfügbarer und überschüssiger Pods über die Felder „maxSurge“ und „maxUnavailable“ steuern.

Bei einer Rolling Updates-Strategie treten während der Aktualisierung keine Ausfallzeiten auf. Die Anwendung muss jedoch so aufgebaut sein, dass sie die Operationen zum Eliminieren und Erstellen von Pods tolerieren kann.

Während des Aktualisierungsprozesses werden zwei Versionen des Containers gleichzeitig ausgeführt, was zu Problemen für die Service-Konsumenten führen kann.

Neuerstellungsstrategie

Bei einer Neuerstellungsstrategie werden vor der Erstellung neuer Pods alle alten entfernt. Kubernetes beendet zuerst alle Container der aktuellen Version und startet dann alle neuen Container gleichzeitig, wenn die alten Container entfernt wurden. 

Bei einer Neuerstellungsstrategie sind Ausfallzeiten unvermeidlich, weil alle Container mit alten Versionen gestoppt werden und keine neuen Container für eingehende Anfragen bereit sind. 

Es werden jedoch nicht zwei Versionen der Container gleichzeitig ausgeführt, was den Vorgang für Service-Konsumenten möglicherweise einfacher macht.

Bereitstellungen werden durch Verfassen eines Manifests erstellt. Dieses wiederum wird dann mit „kubectl apply“ auf den Kubernetes-Cluster angewendet. Alternativ können Sie ein deklaratives Bereitstellungsmuster verwenden. Konfigurationsdateien für Kubernetes können mit YAML oder JSON geschrieben werden.

Bei der Entwicklung einer Bereitstellung beschreiben Sie den gewünschten Status, den Kubernetes dann entweder mithilfe einer Rolling Updates- oder einer Neuerstellungsstrategie implementiert. 

Durch die Verwendung eines deklarativen Bereitstellungsmusters können Sie mit Kubernetes-Bereitstellungen die Ausführung von Upgrade- und Rollback-Prozessen für eine Gruppe von Pods automatisieren. Kubernetes Patterns sind wiederverwendbare Designmuster für containerbasierte Anwendungen und Services.  

Sie können eine Bereitstellung aktualisieren, indem Sie Änderungen an der Pod-Vorlagenspezifikation vornehmen. Eine Änderung am Spezifikationsfeld löst automatisch ein Update-Rollout aus.

Der Rollout Lifecycle besteht aus den Status „Progressing“, „Complete“ und „Failed“. Eine Bereitstellung befindet sich im Status „Progressing“, wenn sie gerade Update-Aufgaben wie z. B. das Aktualisieren oder Skalieren von Pods durchführt. 

Der Status „Complete“ zeigt an, dass alle Aufgaben erfolgreich abgeschlossen wurden und sich das System im gewünschten Status befindet. Der Status „Failed“ ist das Ergebnis eines Fehlers, durch den die Aufgaben der Bereitstellung nicht abgeschlossen werden können. 

Sie können den Status einer Bereitstellung mit dem Befehl „kubectl rollout status“ überprüfen oder überwachen. 

Sie benötigen Hilfe beim Einstieg in Kubernetes? Erfahren Sie, wie Sie Container für die Bereitstellung auf einem Kubernetes- und Red Hat® OpenShift® Cluster entwickeln und verwalten können. In diesem Kurs können Sie Grundlagen der Container-Verwaltung entwickeln, und zwar durch praktische Anwendungen mit Containern und Kubernetes. 

Red Hat OpenShift 4 ist eine unternehmensfähige Kubernetes-Plattform. Damit erhalten Entwickler Self-Service-Umgebungen, in denen sie Anwendungen und automatisierte Full Stack-Operationen auf beliebigen Infrastrukturen entwickeln können.

Red Hat OpenShift integriert alle zusätzlichen Technologiekomponenten, die Kubernetes leistungsstark und unternehmenstauglich machen, darunter Registry, Networking, Telemetrie, Sicherheit, Automatisierung und Services.

 

Mit OpenShift können Entwickler neue containerisierte Apps erstellen, sie hosten und in der Cloud mit der Skalierbarkeit, Kontrolle und Orchestrierung bereitstellen, die man braucht, um aus einer guten Idee schnell und einfach ein neues Geschäft zu machen.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures