Der Zustand von dauerhaftem und temporärem Kubernetes

Ich kann es nicht glauben, wenn ich im Jahr 2024 höre, wie Plattformbetreiber oft davon reden, dass Kubernetes nur für temporäre Workloads geeignet sei – oder dass keine Datensicherung erforderlich sei, da „alle unsere Apps temporär sind“. In diesem Artikel erläutere ich Hintergrundinformationen dazu, wo sich Zustände in unseren Anwendungen befinden, was der Mythos „Kubernetes = temporär“ eigentlich ist und wie wichtig eine Datensicherung in allen Kubernetes-Umgebungen ist.

Dauerhaft oder temporär – die Grundlagen

„Temporär“ bezieht sich auf einen Workload, für den keine dauerhafte Persistenz erforderlich ist, sodass bei einem Neustart oder einer erneuten Bereitstellung des Workloads alle erfassten Daten oder geänderten Einstellungen verloren gehen. Verglichen mit ihren Vorgängern mit dauerhaften virtuellen Maschinen (VMs) sind Container von Natur aus temporär. Bei einem Neustart eines Containers weiß ein Benutzer, dass der Workload denselben beabsichtigten Workload wie bei der ursprünglichen Erstellung des Container-Images ausführt.

Der Logik folgend werden bei einem dauerhaften Workload Daten so beibehalten, dass bei einem Neustart darauf zugegriffen werden kann. Zu den häufigen dauerhaften Workloads gehören Datenbanken wie PostgreSQL, MySQL oder MongoDB.

Was ist also eine temporäre Anwendung?

Anwendungen bestehen in der Regel aus mehreren Workloads. Selbst monolithische, VM-basierte Anwendungen bestehen in der Regel aus separaten Frontend-, Geschäftslogik- und Datenbank-Workloads. Cloudbasierte, auf Microservices basierende Anwendungen bestehen in der Regel aus viel mehr separaten Workloads mit jeweils eigenen Funktionen – damit Unternehmen neue Features und Services schneller als je zuvor bereitstellen können.

Das bedeutet, dass die meisten temporären Anwendungen nicht vorhanden sind.

Ihre Lieblings-App für Essensbestellungen, eine To-Do-App auf Ihrem Telefon, ein Formular, das Sie ausfüllen, um einen Arzttermin zu vereinbaren – all dies wäre praktisch nutzlos, wenn es nicht einige dauerhafte Workloads gäbe, die für die speichernden kritischen Daten in jedem dieser Anwendungsfälle verantwortlich sind.

Bei Kubernetes ist es wichtig zu wissen, wo sich Ihre Anwendungsdaten oder Ihr Zustand befinden – innerhalb oder außerhalb des Clusters.

Wie sind wir hierher gelangt – Kubernetes = temporär?

Als Docker Anfang bis Mitte der 2010er Jahre zu einer De-facto-Container-Plattform für das Verpacken von Software wurde, war eine Lösung zur Orchestrierung von Containergruppen in großem Maßstab entscheidend, um den vollen operativen Nutzen aus der Umstellung auf Microservices zu ziehen – und Kubernetes stellte eine Lösung bereit. Deklarative Bereitstellungen, Hochverfügbarkeit und automatisierte Skalierung waren erhebliche Vorteile für temporäre Workloads, die problemlos beendet, neu gestartet und geklont werden konnten. Diese Workloads, die häufig mehr Computing für Frontend oder Anwendungsserver bereitstellen, können mit Datenservices außerhalb des Clusters verbunden werden. Die Lösung wurde von vielen als Erfolg gefeiert. Kubernetes war eindeutig eine Lösung für temporäre Workloads, richtig?

Doch in Kubernetes Version 1.0 gibt es neben all diesen großartigen Funktionalitäten für temporäre Workloads auch persistente Volumes – einen Kubernetes-nativen Mechanismus, mit dem persistenter Speicher an ephemeral Pods angefügt werden kann. Ganz klar war die Unterstützung dauerhafter Workloads von Anfang an eine Überlegung, und im Laufe der Zeit wurden einige nennenswerte Verbesserungen vorgenommen:

Diese Verbesserungen, kombiniert mit den Bemühungen vieler verschiedener Anbieter und Projektbeteiligter, haben ein umfangreiches Ökosystem geschaffen, in dem Benutzer frei entscheiden können, welche Datenservices ihren Anwendungszustand bereitstellen und wo diese Workloads ausgeführt werden.

Der Aufstieg von GitOps

In dieser Zeit kam in der Kubernetes-Community eine weitere Idee zur Verbesserung der Container-Orchestrierung auf: GitOps. Das Konzept ist einfach: Versionskontrolle als Quelle der Wahrheit verwenden und alles speichern, was für die Bereitstellung einer Anwendung erforderlich ist, einschließlich Code und Kubernetes-Ressourcen. Jedes Mal, wenn Code in das Repository zusammengeführt wird, um eine Änderung vorzunehmen, aktualisiert ein Controller die Bereitstellung, damit der beschriebene gewünschte Zustand in Git widergespiegelt wird. GitOps-Implementierungen können einen Mechanismus für die Änderungskontrolle bieten, die Möglichkeit, eine ganze Umgebung mit einem einzigen Klick neu bereitzustellen, und eine Möglichkeit, fehlerhafte Änderungen rückgängig zu machen – manchmal.

Nur weil Kubernetes  dauerhafte Workloads ausführen kann, sollten Sie das also auch tun?

Bei der Erstellung einer Anwendung für einen Machbarkeitsnachweis entscheiden sich Entwickler häufig für eine in der Cloud gehostete, verwaltete Datenbank (DBaaS), um ihre persistenten Daten außerhalb des Kubernetes-Clusters zu hosten. DBaaS-Lösungen bieten entwicklerfreundliche APIs und eine schnelle Wertschöpfung für Benutzer, unabhängig von ihrer Erfahrung in der Datenbankverwaltung. Doch wie so oft: das Einfachste ist nicht immer das Beste. Betrachten wir die Gründe, die es bei der Ausführung dauerhafter Workloads innerhalb oder außerhalb des Clusters zu berücksichtigen gilt:

Die Anpassung der Laufzeit von temporären und dauerhaften Workloads in Kubernetes kann die Flexibilität hinsichtlich der Anwendungsausführung erhöhen. Es kann auch zusätzlichen Self-Service für DevOps bieten, Kosten senken und Tools und Prozesse rationalisieren. Dadurch ist es möglich, die GitOps-Methodik auf alle Teile einer Anwendung anzuwenden. Es ist daher keine Überraschung, dass Datenbanken laut dem jüngsten Datadog-Report zur realen Container-Nutzung weiterhin die beliebteste Kategorie containerisierter Workloads sind.

So schützen Sie Ihre Kubernetes-Daten

Die dauerhafte Seite

Wenn Sie bereits davon überzeugt sind, dass dauerhafte Workloads auf Kubernetes der richtige Weg in die Zukunft sind, wissen Sie wahrscheinlich, dass für die Sicherung und Disaster Recovery dieser Anwendungen ein spezielles Tool erforderlich ist. Jede Anwendung besteht aus vielen verschiedenen Kubernetes-Ressourcen (ConfigMaps, Secrets, Deployments usw.) sowie persistenten Volume-Daten. Darüber hinaus müssen all diese Daten ordnungsgemäß erkannt, per Snapshot erstellt und an einen sicheren Ort außerhalb des Clusters exportiert werden.

Hier kommt Veeam Kasten for Kubernetes ins Spiel, eine Kubernetes-native Lösung für Datensicherung und Anwendungsmobilität. Kasten bietet Unternehmen eine benutzerfreundliche, skalierbare und sichere Möglichkeit zur Erstellung unveränderlicher Backups und zur schnellen und zuverlässigen Wiederherstellung ganzer Anwendungen.

Kasten bietet eine deklarative, Kubernetes-native API zum Definieren von Richtlinien, Ausführen von Aktionen und mehr, sodass die Datensicherung eng in jede GitOps-Implementierung integriert werden kann. Das gilt für eine Vielzahl von Anwendungsfällen, von der Bereitstellung und Konfiguration von Kasten in einem neuen Cluster bis hin zur Erweiterung von GitOps durch Automatisierung von Backups vor dem Rollout von Code-Updates. GitOps selbst bietet die Möglichkeit, Konfigurationsänderungen auf eine Kubernetes-Ressource zurückzusetzen. Sollten durch eine dieser fehlerhaften Änderungen jedoch die Daten eines persistenten Volumes beeinträchtigt werden (z. B. durch eine falsche Schemaänderung oder das Löschen einer Tabelle), benötigen Sie ein aktuelles Backup, das schnell wiederhergestellt werden kann.

Die temporäre Seite

Sie möchten Ihre bevorzugte DBaaS-Datenbank noch nicht gegen eine neue in Kubernetes gehostete und vom Betreiber verwaltete Datenbank eintauschen? Kasten hält Ihnen immer noch den Rücken frei. Betrachten wir, warum die Datensicherung auf Kubernetes nach wie vor so wichtig ist:

Team Kubernetes-Datensicherung

Kubernetes unterstützt inzwischen alle Arten von Workloads – ungeachtet der hartnäckigen Überzeugung, Kubernetes sei nur für temporären Workloads geeignet. Da Unternehmen versuchen, den größtmöglichen Nutzen aus ihren cloudbasierten Investitionen zu ziehen, ist ein anhaltender Trend hin zur Ausführung dauerhafter Workloads unumgänglich. Höhere Leistung und Mobilität, vereinfachtes Copy-Data-Management, Polyglot Persistence und Kosteneinsparungen sind alles Vorteile, die nur darauf warten, realisiert zu werden.

Ob Sie dauerhafte oder temporäre Workloads ausführen – die Datensicherung bleibt von entscheidender Bedeutung. Veeam Kasten for Kubernetes ist eine Kubernetes-native Lösung für die Sicherung von Anwendungen und Daten, Disaster Recovery, Anwendungsmobilität und Schutz vor Ransomware. Darüber hinaus können GitOps-Methoden verbessert werden, indem die Datensicherung in die Anwendungsbereitstellung integriert wird. Schließlich kann die Einführung von dauerhaften Workloads auf Kubernetes nicht nur Umsatzchancen eröffnen, sondern Unternehmen auch mehr Flexibilität, Self-Service, Kosteneffizienz und optimierte Abläufe bringen.

Testen Sie unsere Veeam Kasten Free-Lösung oder unsere Enterprise-Testversion , um jetzt zu starten.

Exit mobile version