Kubernetes-Bereitstellungen: Ein umfassender Leitfaden

Kubernetes, ein Favorit in der Entwickler-Community, ist eine weit verbreitete Plattform für die Ausführung von Docker-Containern in Clustern. Diese leistungsstarke Plattform bietet verschiedene Methoden für die Bereitstellung und Aktualisierung von Anwendungen, die in Containern ausgeführt werden, und bietet damit ein hohes Maß an Flexibilität für verschiedene Szenarien. In Kubernetes werden Container in Pods ausgeführt, und ihre Bereitstellung wird von Kubernetes-Deployments definiert. Dieser Blogbeitrag behandelt Kubernetes-Deployments, ihre Typen, Bereitstellungsstrategien und Best Practices.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Was ist eine Kubernetes-Bereitstellung?

Ein Deployment in Kubernetes ist ein Ressourcenobjekt, das die Bereitstellung und den Lebenszyklus von containerisierten Anwendungen in Clustern verwaltet. Es stellt Updates für Anwendungen bereit und stellt sicher, dass die erforderliche Anzahl identischer Pods jederzeit ausgeführt wird und verfügbar ist. Außerdem bietet es deklarative Updates für Pods und ReplicaSets. Deployments sind eine wichtige Funktion in Kubernetes für die Automatisierung von Skalierung, Rolling Updates und Rollbacks.Die Bereitstellung ist ein Kubernetes-Objekt, das den gewünschten Zustand für Pods festlegt und ReplicaSets erstellt und verwaltet, um sicherzustellen, dass dieser Zustand aufrechterhalten wird. Ein ReplicaSet verwaltet Pods direkt, einschließlich ihres Zustands und ihrer Anzahl. Die Bereitstellung teilt Kubernetes mit, wie die Pod-Instanzen, die Container mit Anwendungen enthalten, geändert oder erstellt werden sollen. Der Zustand der Pod-Bereitstellung wird in einem Manifest beschrieben.Administratoren können die Anzahl der Replica-Pods effizient skalieren, aktualisierten Anwendungscode mit einem hohen Maß an Kontrolle ausrollen und bei Bedarf auf frühere Versionen von Bereitstellungen zurücksetzen. Zur Verwaltung von Kubernetes-Bereitstellungen verwenden Administratoren die Befehlszeile kubectl Tool unter Linux und anderen unterstützten Betriebssystemen. Jeder mit einer Bereitstellung erstellte Pod verfügt über ein ReplicaSet, das mit diesem Pod verbunden ist. Ein ReplicaSet wiederum verfügt über einen Zeiger auf die Bereitstellung, mit der dieses ReplicaSet erstellt wurde.

Grundlagen von Kubernetes-Bereitstellungen

Kubernetes-Bereitstellungen wurden entwickelt, um containerisierte Anwendungen in Clustern bereitzustellen und zu skalieren. Bereitstellungen bieten eine deklarative Möglichkeit, den gewünschten Zustand Ihrer Anwendung zu definieren und den Prozess zum Erreichen und Aufrechterhalten dieses Zustands zu automatisieren. Die grundlegenden Konzepte und Komponenten im Zusammenhang mit Kubernetes-Bereitstellungen sind:

  • Gewünschter ZustandDie Bereitstellung definiert den gewünschten Zustand einer Anwendung, wie beispielsweise die Anzahl der Replikate eines Pods, die zu verwendenden Container-Images und die jedem Pod zugewiesenen Ressourcen.
  • Deklarative Konfiguration. Bei Bereitstellungen wird in der Regel ein deklarativer Ansatz verwendet, bei dem Administratoren den Status in einer JSON- oder YAML-Datei festlegen. Während der imperative Ansatz es Administratoren ermöglicht, direkt festzulegen, was zu tun ist, können Administratoren beim deklarativen Ansatz in Kubernetes das gewünschte Ergebnis definieren, und Kubernetes erreicht dies mit seinen internen Mechanismen. Der Kubernetes-Deployment-Controller überwacht den Zustand von Knoten und Pods. Bei Echtzeitänderungen, wie z. B. einem Pod-Ausfall, kann dieser Pod ersetzt werden. Somit überwacht Kubernetes den Zustand des Clusters in Echtzeit und nimmt Anpassungen vor, um den gewünschten Zustand zu erreichen.
  • ReplikatsatzEine Bereitstellung verwaltet ein ReplicaSet. Das ReplicaSet erstellt und löscht Pods nach Bedarf, um die gewünschte Anzahl von Replikaten aufrechtzuerhalten. Durch diesen Ansatz kann Kubernetes sicherstellen, dass die angegebenen Pod-Replikate zu jedem Zeitpunkt ausgeführt werden.
  • Rollierende Updates. Bereitstellungen unterstützen rollierende Updates, mit denen Sie die Anwendung ohne Ausfallzeiten aktualisieren können. Kubernetes ersetzt nach und nach alte Pods durch neue Pods, wodurch sichergestellt wird, dass die containerisierte Anwendung während des Deployment-Update-Prozesses im verfügbaren Zustand bleibt.
  • RollbackWenn während eines Updates in Kubernetes ein Fehler auftritt, können Sie ein Rollback auf eine frühere Version der Bereitstellung durchführen und die Anwendung in einen bekannten fehlerfreien Zustand zurückversetzen.

Deklarative Konfiguration

In Kubernetes bedeutet ein deklarativer Ansatz, dass Sie den gewünschten Zustand des Systems festlegen und Kubernetes die erforderlichen Aktionen ergreift, um diesen Zustand zu erreichen und aufrechtzuerhalten. Sie beschreiben das Endziel mithilfe von Konfigurationsdateien (in der Regel in YAML oder JSON geschrieben), und Kubernetes sorgt kontinuierlich dafür, dass der tatsächliche Zustand mit dem gewünschten Zustand übereinstimmt.Der deklarative Ansatz wird in Kubernetes im Allgemeinen bevorzugt, da er die gewünschte Zustandskonsistenz aufrechterhalten, die Automatisierung erleichtern und eine bessere Zusammenarbeit und Versionskontrolle unterstützen kann. Der imperative Ansatz kann für schnelle, ad-hoc-Aufgaben nützlich sein, ist jedoch für das Management komplexer, langfristiger Anwendungsbereitstellungen weniger geeignet.

Wie Bereitstellungen, Pods und ReplicaSets zusammenarbeiten

In Kubernetes sind Deployments, Pods und ReplicaSets eng miteinander verbundene Komponenten, die gemeinsam die Bereitstellung, Skalierung und den Lebenszyklus von Anwendungen verwalten. Für eine korrekte Konfiguration ist es wichtig, die Beziehungen zwischen ihnen zu verstehen und zu wissen, wie sie in Kubernetes zusammenarbeiten.

  • A Pod ist das einfachste und kleinste Objekt in einem Kubernetes-Cluster und repräsentiert eine einzelne Instanz eines laufenden Prozesses. Ein Pod kann einen oder mehrere Container enthalten, die denselben Speicher und denselben Netzwerk-Namespace teilen. Pods sind von Natur aus kurzlebig, da sie nach Bedarf erstellt und gelöscht werden können, um den gewünschten Zustand zu erreichen, der durch übergeordnete Objekte wie Bereitstellungen festgelegt wird.
  • A Replikatsatz stellt sicher, dass zu jedem Zeitpunkt eine bestimmte Anzahl identischer Pods ausgeführt wird. Es verwaltet die Erstellung und Löschung von Pods, um die gewünschte Anzahl von Replikaten aufrechtzuerhalten. Jedes ReplicaSet verwendet Label-Selektoren, um die unter seiner Kontrolle stehenden Pods zu identifizieren und zu verwalten, wodurch sichergestellt wird, dass die richtigen Pods beibehalten werden. Sie können ReplicaSets zwar direkt erstellen und verwalten, in der Regel werden sie jedoch von Bereitstellungen verwaltet, die zusätzliche Funktionalitäten bieten.
  • A Bereitstellung ist ein übergeordnetes Kubernetes-Objekt, das ReplicaSets verwaltet und deklarative Aktualisierungen für Anwendungen bereitstellt. Mit Bereitstellungen können Administratoren den erforderlichen Status Ihrer Anwendung und andere Einstellungen definieren, wie oben erläutert.

Wenn Sie eine Bereitstellung erstellen oder aktualisieren, wird automatisch ein neues ReplicaSet erstellt, um die Pods gemäß den definierten Spezifikationen zu verwalten. Bei jeder Aktualisierung einer Bereitstellung wird ein neues ReplicaSet erstellt, um die neue Version der Pods zu verarbeiten, während das alte ReplicaSet so lange bestehen bleibt, bis die neuen Pods erfolgreich ausgerollt sind. Dadurch wird sichergestellt, dass Aktualisierungen auf kontrollierte Weise implementiert werden und die Verfügbarkeit der Anwendung erhalten bleibt.Die Bereitstellung verwaltet den Lebenszyklus von Pods indirekt über ihre ReplicaSets. Indem Sie den gewünschten Zustand in der Bereitstellung definieren, legen Sie die Eigenschaften und die Anzahl der Pods fest, die Sie ausführen möchten. Die Bereitstellung stellt dann diesen Zustand sicher, indem sie die entsprechenden ReplicaSets verwaltet, die wiederum die Pods verwalten.Pods sind also die Ausführungseinheiten, auf denen Container laufen, ReplicaSets stellen sicher, dass die erforderliche Anzahl von Pods läuft, und Bereitstellungen bieten ein deklaratives Management und Aktualisierung von Anwendungen durch die Steuerung von ReplicaSets. Diese hierarchische Struktur stellt sicher, dass Ihre Anwendungen skalierbar, mit Resilienz und einfach zu verwalten sind. Bereitstellungen abstrahieren die Komplexität der direkten Verwaltung von ReplicaSets und Pods und bieten eine leistungsstarke Möglichkeit, Anwendungsaktualisierungen und Skalierungen zu handhaben.

Details zur Bereitstellungskonfiguration

Die Verwendung von YAML für die Konfiguration der Bereitstellung in Kubernetes ist aufgrund seiner Lesbarkeit und Einfachheit gängige Praxis. Kubernetes unterstützt sowohl das YAML- als auch das JSON-Format für Konfigurationsdateien, aber YAML wird aufgrund seiner benutzerfreundlichen Syntax häufiger verwendet.YAML (YAML Ain’t Markup Language) ist ein Daten-Serialisierungsstandard, der sowohl für Menschen lesbar als auch einfach zu schreiben ist. Es wird häufig für Konfigurationsdateien und den Datenaustausch zwischen Sprachen mit unterschiedlichen Datenstrukturen verwendet. In Kubernetes wird YAML verwendet, um den gewünschten Zustand verschiedener Objekte zu definieren, darunter Bereitstellungen, Services, Pods und mehr.Wichtige Komponenten einer YAML-Bereitstellung-Datei:

  • apiVersion wird verwendet, um die API-Version (z. B. apps/v1) des Kubernetes-Objekts anzugeben.
  • Art gibt den Typ des Kubernetes-Objekts an (z. B. Bereitstellung).
  • Metadaten Enthält Metadaten über das Objekt, wie beispielsweise dessen Namen und Beschriftungen.
  • Spezifikation (Spezifikation) wird verwendet, um den gewünschten Zustand des Kubernetes-Objekts zu definieren, einschließlich:
    • Replikate Gibt die Anzahl der zu verwaltenden Pod-Replikate an.
    • Selektor legt fest, wie die von der Bereitstellung verwalteten Pods identifiziert werden sollen.
    • Vorlage definiert die Pod-Vorlage, einschließlich Metadaten und Spezifikationen für die Pods.
    • Container listet die Container innerhalb des Pods auf, darunter:
      • name: der Name des Containers
      • VIDEO: das zu verwendende Docker-Image
      • ports: die freizugebenden Ports

Die Unterschiede zwischen YAML und JSON für die Konfigurationssyntax von Kubernetes-Bereitstellungen sind:

  • YAML ist besser lesbar, da es Einrückungen und Schlüssel-Wert-Paare ohne Klammern oder eckige Klammern verwendet.
  • JSON verwendet eine strengere Struktur mit geschweiften Klammern ({}) und eckigen Klammern ([]), wodurch es für komplexe Konfigurationen weniger lesbar ist.

YAML wird in der Regel für Kubernetes-Bereitstellungen bevorzugt.

Beispiel für die Bereitstellung von YAML

Unten sehen Sie ein Beispiel für eine Kubernetes-Bereitstellung im YAML-Format mit detaillierten Konfigurationen für Pods und Container.apiVersion: apps/v1Art: BereitstellungMetadaten:  Name: Name der BereitstellungSpezifikation:  Replikate: 3  Selektor:    matchLabels:      App: App-Name  Vorlage:    Metadaten:      Etiketten:        App: App-Name    Spezifikation:      Container:      – Name: Containername        Bild: Bildname:1.0        ports:        – containerPort: 80        ressourcen:          Anfragen:            Speicher: „128 Mi“            CPU: „250 m“          Grenzen:            Speicher: „256 Mi“            CPU: „500 m“        Umgebung:        – Name: MY_ENV_VAR          Wert: „ein-Wert“        volumeMounts:        – mountPath: „/Pfad/Volume“          Name: Volumen-Name      volumes:      – Name: Volumen-Name        persistentVolumeClaim:          claimName: pvc-nameLassen Sie uns jeden Abschnitt im Detail erläutern, um ihn verständlicher zu machen. Durch die Konfiguration dieser Abschnitte können Sie eine robuste und skalierbare Bereitstellung von Anwendungen in Kubernetes definieren und sicherstellen, dass Ihre Pods und Container gemäß Ihren Anforderungen eingerichtet sind.

Wichtige Konfigurationsabschnitte

1. MetadatenMetadaten:  Name: Name der BereitstellungWo:name: Der Name der Bereitstellungs2. Spezifikation (Bereitstellungsspezifikation)Spezifikation:  Replikate: 3  Selektor:    matchLabels:      App: App-NameWo:replikate: die Anzahl der zu verwaltenden Pod-ReplikateSelektor: legt fest, wie die von der Bereitstellung verwalteten Pods mithilfe von Labels identifiziert werden3. Pod-Vorlage (Pod-Spezifikation)Vorlage:  Metadaten:    Etiketten:      App: App-Name  Spezifikation:    Container:    – Name: Containername      Bild: Bildname:1.0Wo:Metadaten: Etiketten zur Kennzeichnung der HülsenSpezifikation: Konfiguration für die Pods und ihre Container

Konfigurieren von Containern

In diesem Abschnitt sehen Sie die YAML-Abschnitte der Bereitstellungen zur Konfiguration von Containern.1. Container-ImageBild: Bildname:1.0Wo:VIDEO: Das zu verwendende Container-Image. Es kann einen Tag (z. B. 1.0) enthalten, um die Version anzugeben.2. Ports.ports:– containerPort: 80Wo:containerPort: Der Port, auf dem der Container auf Datenverkehr wartet3. Ressourcenanforderungen und -beschränkungenressourcen:  Anfragen:    Speicher: „128 Mi“    CPU: „250 m“  Grenzen:    Speicher: „256 Mi“    CPU: „500 m“Wo:Anfragen: die Anforderungen an die erforderlichen MindestressourcenGrenzen: Die maximalen Ressourcen, die der Container verwenden kann4. UmgebungsvariablenUmgebung:– Name: MY_ENV_VAR  Wert: „ein-Wert“Wo:Umgebung: definiert Umgebungsvariablen für den Container5. Volume-MountsvolumeMounts:– mountPath: „/Pfad/Volume“  Name: Volumen-NameWo:volumeMounts: gibt Volumes an, die innerhalb des Containers gemountet werden sollenmountPath: Der Pfad innerhalb des Containers, in dem das Volume gemountet wird.

Volumes konfigurieren

Das Volumes Der Abschnitt ist für die Konfiguration von Volumes zuständig.volumes:– Name: Volumen-Name  persistentVolumeClaim:    claimName: pvc-nameWo:volumes: definiert die verfügbaren Volumes, die gemountet werden könnenname: der Name des BandespersistentVolumeClaim: gibt einen PersistentVolumeClaim (PVC) an, der für das Volume verwendet werden soll

Erweiterte Konfigurationen

1. Lebendigkeits- und BereitschaftsprüfungenLebendigkeitsprüfung:  httpGet:    Pfad: /healthz    Port: 8080  Anfangsverzögerung in Sekunden: 3  Zeit in Sekunden: 3Bereitschaftssonde:  httpGet:    Pfad: /bereit    Port: 8080  Anfangsverzögerung in Sekunden: 5  Zeit in Sekunden: 10Wo:Lebendigkeitsprüfung: Überprüft, ob der Container aktiv ist.Bereitschaftssonde: wird verwendet, um zu überprüfen, ob der aktuelle Container bereit ist, Datenverkehr zu akzeptieren2. Befehl und ArgumenteBefehl: [„my-command“]Argumente: [„arg1“, „arg2“]Wo:Befehl: überschreibt den Standard-Einstiegspunkt des ContainersArgumente: gibt Argumente für den Befehl an3. ConfigMaps und GeheimnisseenvVon:– configMapRef:  Name: meine-Konfigurationskarte– secretRef:  Name: mein-GeheimnisWo:envVon: Importiert Umgebungsvariablen aus einer ConfigMap oder einem Secret.

Die Kubernetes-Bereitstellungsstrategie

Es gibt mehrere Kubernetes-Bereitstellungsstrategien (Typen), und Sie können die für Ihr aktuelles Szenario effektivste auswählen. Geschäftsanwendungen haben unterschiedliche Anforderungen an Betriebszeit und Verfügbarkeit. Durch die Auswahl der richtigen Strategie können Sie Ausfallzeiten und Dienstunterbrechungen vermeiden und Ressourcen effektiv nutzen. Nachfolgend finden Sie die gängigsten Kubernetes-Bereitstellungstypen.

Rolling Updates und Rollbacks

Eine rollierende Aktualisierung setzt die Migration von einer Version der Anwendung zu einer anderen voraus, wobei die neuere Version in der festgelegten Reihenfolge installiert wird. Ein neues ReplicaSet wird mit der neuen Version der Anwendung gestartet. Die Replikate der alten Version werden beendet. Dadurch werden die Pods der alten Version durch die neuen ersetzt. Die rollierende Aktualisierung ermöglicht einen reibungslosen Übergang von alten Versionen zu neuen, jedoch dauert der Vorgang einige Zeit.

Bereitstellung neu erstellen

Die derzeit ausgeführten Pods werden beendet und anschließend mit einer neuen Version neu erstellt. Diese Bereitstellungsstrategie wird häufig in Kubernetes-Umgebungen für Entwickler verwendet, in denen die Benutzeraktivität kein Problem darstellt. Es kommt zu Ausfallzeiten, wenn die alte Bereitstellung heruntergefahren wird, die Strategie zur Neuerstellung der Bereitstellung die neuen Bereitstellungsinstanzen initiiert und die Pods sowie den Status der Anwendung neu erstellt.

Blau-Grüne Bereitstellungen

Die Blue-Green-Bereitstellung ist eine weitere Möglichkeit, Anwendungen in Kubernetes zu aktualisieren, jedoch mit schneller Umstellung. Die Kubernetes Blue-Green-Bereitstellung setzt voraus, dass zwei Umgebungen ausgeführt werden: die alte (blaue) Version und die neue (grüne) Version. Beide werden „nebeneinander“ oder parallel bereitgestellt. Sobald die neue Version getestet und ihre ordnungsgemäße Funktion bestätigt wurde (sie funktioniert wie vorgesehen), wird die Versionsbezeichnung durch Aktualisieren des Service Selectors ersetzt. Diese Aktion wird für ein Kubernetes-Service-Objekt durchgeführt, das den Lastausgleich in einem Cluster übernimmt. Nach dem Testen wird der Datenverkehr sofort auf die neue Version umgeschaltet.Die Kubernetes Blue-Green-Bereitstellungsstrategie ermöglicht Administratoren eine schnelle Einführung ohne die Probleme, die durch unterschiedliche Versionen beim Übergang zwischen ihnen verursacht werden. Beachten Sie, dass die Ressourcenauslastung höher ist, da zwei Umgebungen für einen bestimmten Zeitraum parallel laufen.

Canary-Bereitstellungen

Die Kubernetes-Canary-Bereitstellung geht davon aus, dass nur eine kleine Gruppe von Benutzern auf die neue Version einer containerisierten Anwendung umgeleitet wird. Die neue Version läuft auf einer kleineren Teilmenge von Pods als die ältere Version, die bis zu diesem Zeitpunkt ausgeführt wurde. Der Hauptzweck von Canary-Bereitstellungen besteht darin, die Funktionalität neuer Anwendungsversionen in einer Produktionsumgebung zu testen. Wenn in der neuen Version keine Fehler auftreten, skalieren die Administratoren die neue Version hoch, und die vorherige Version wird in der entsprechenden Reihenfolge ersetzt.Wenn nach der Bereitstellung der neuen Version für eine kleine Gruppe von Benutzern etwas schief geht, können die Administratoren die Canary Deployments auf die ältere Version zurücksetzen. Der Vorteil besteht darin, dass die neue Funktionalität an einer kleinen Gruppe von Benutzern getestet werden kann, ohne dass negative Auswirkungen auf den Gesamtbetrieb des Systems zu befürchten sind.

Kubernetes-Bereitstellung neu erstellen

Bei Verwendung der Option „Bereitstellung neu erstellen“ werden alle Pods beendet und durch die neue Version ersetzt. Diese Strategie kann verwendet werden, wenn die alte und die neue Version nicht gleichzeitig ausgeführt werden können. Die Ausfallzeit hängt von der Zeit ab, die zum Herunterfahren der alten Anwendung und zum Starten der neuen Anwendung in Containern benötigt wird. Nach Fertigstellen des Vorgangs ist der Anwendungsstatus vollständig erneuert.

Skalierung und Management

Die Skalierung und das Management von Kubernetes-Bereitstellungen ist entscheidend, um sicherzustellen, dass Ihre containerisierten Anwendungen mit unterschiedlichen Workloads arbeiten und eine hohe Verfügbarkeit aufrechterhalten können. Kubernetes bietet robuste Mechanismen für die manuelle und automatisierte Skalierung sowie Tools für das effiziente Management von Bereitstellungen.

Manuelle Skalierung

Die manuelle Skalierung wird verwendet, um die Anzahl der Replikate (Instanzen) Ihrer Anwendung manuell mithilfe der kubectl Befehlszeilentool.

  • Skalierung:

    kubectl scale Bereitstellung deployment-name Replikate=10

    Dieser Befehl erhöht die Anzahl der Replikate für „my-deployment“ auf 10.

  • Skalierung:

    kubectl scale deployment deployment-name Replikate=2

    Dieser Befehl verringert die Anzahl der Replikate für „my-Bereitstellung“ auf 2.

Horizontaler Pod-Autoscaler (HPA)

Der Horizontal Pod Autoscaler (HPA) passt die Anzahl der Pod-Replikate automatisch anhand der beobachteten CPU-Auslastung oder anderer ausgewählter Metriken an.

  1. Der Befehl zum Erstellen einer HPA lautet:

    kubectl autoscale Bereitstellung Bereitstellung-Name CPU-Prozent=50 min=2 max=10

    Dieser Befehl richtet eine HPA für Bereitstellungsname die CPU-Auslastung bei etwa 50 % zu halten, mit Skalierung zwischen 2 und 10 Replikaten.

  2. Die HPA-Konfiguration in YAML ist eine fortgeschrittenere Methode. Ein Beispiel für eine YAML-Bereitstellungskonfiguration für horizontales Auto-Scaling wird im Folgenden erläutert.

    apiVersion: autoscaling/v1

    Typ: HorizontalPodAutoscaler

    Metadaten:

      Name: Deployment-HPA-Name

    Spezifikation:

      skalierungszielreferenz:

        apiVersion: apps/v1

        Art: Bereitstellung

        Name: Name der Bereitstellung

      minReplicas: 2

      maxReplicas: 10

      Ziel-CPU-Auslastung in Prozent: 50

    Wenden Sie die YAML-Konfiguration mit folgendem Befehl an:

    ubectl apply -f hpa.yaml

Vertikaler Pod-Autoscaler (VPA)

Der Vertical Pod Autoscaler (VPA) passt die Ressourcenanforderungen und -beschränkungen von Pods automatisch an die tatsächliche Nutzung an. Die VPA-Konfiguration in YAML lautet wie folgt:apiVersion: autoskalierung.k8s.io/v1Typ: VerticalPodAutoscalerMetadaten:  Name: Bereitstellungs-VPA-NameSpezifikation:  Zielreferenz:    apiVersion: „apps/v1“    Art: Bereitstellung    Name: Name der Bereitstellung  Aktualisierungsrichtlinie:    updateMode: „Auto“Um die YAML-Konfiguration anzuwenden, verwenden Sie den folgenden Befehl:kubectl apply -f vpa.yaml

Best Practices für Kubernetes-Bereitstellungen

Die korrekte Konfiguration von Kubernetes-Bereitstellungen gewährleistet eine erfolgreiche und zuverlässige Umgebung für die Ausführung containerisierter Anwendungen. Eine falsche Konfiguration oder eine falsche Strategie für das Management der Bereitstellungen kann unter anderem zu Ausfallzeiten und Datenverlusten führen. Die Best Practices für Kubernetes-Bereitstellungen tragen dazu bei, dass Ihre Anwendungen über eine hohe Resilienz, Skalierbarkeit und Wartungsfreundlichkeit verfügen.

  • Deklarative Konfiguration verwenden. Speichern Sie Ihre Kubernetes-Konfigurationen in versionskontrollierten Dateien im YAML/JSON-Format. Dies erleichtert das Verwalten von Änderungen und das Zurücksetzen bei Bedarf. Verwenden Sie kubectl apply -f diese Konfigurationen anzuwenden, da dies idempotente Operationen ermöglicht und sicherstellt, dass der Zustand des Clusters mit den Konfigurationsdateien übereinstimmt.
  • Namensraumisolierung verwendenVerwenden Sie Namespaces, um verschiedene Umgebungen (z. B. Entwicklung, Staging, Produktion) und Teams logisch voneinander zu trennen. Dies hilft Ihnen, Ressourcen und Berechtigungen effektiver zu verwalten.
  • Ressourcenanforderungen und -beschränkungenDefinieren Sie Ressourcenanforderungen und -beschränkungen für Ihre Pods, um sicherzustellen, dass sie über die erforderlichen Ressourcen verfügen, und um Ressourcenkonflikte zu vermeiden.
  • Lebendigkeits- und BereitschaftsprüfungenKonfigurieren Sie Liveness-Probes, um fehlerhafte Container neu zu starten, und Readiness-Probes, um den Datenverkehr zu Containern zu steuern.
  • Verwenden Sie Labels und Selektoren Ressourcen organisieren und auswählen. Labels können verwendet werden, um Ressourcen von Anwendungen, Umgebungen, Versionen usw. zu gruppieren.
  • Verwenden Sie ConfigMaps und Geheimnisse. Speichern Sie nicht sensible Konfigurationsdaten in ConfigMaps. Speichern Sie sensible Daten, einschließlich Passwörtern und API-Schlüsseln, in Secrets.
  • Überwachen und protokollieren Sie Ihre UmgebungImplementieren Sie eine Überwachung mit Tools wie Grafana und Prometheus, um die Leistung und den Zustand Ihrer containerisierten Anwendungen zu überprüfen. Verwenden Sie zentralisierte Protokollierungslösungen wie den ELK-Stack (Elasticsearch, Logstash, Kibana) oder Fluentd, um Protokolle zu sammeln und zu analysieren.
  • Befolgen Sie bewährte Best Practices für SicherheitImplementieren Sie Pod-Sicherheitsrichtlinien, um Sicherheitsstandards für Ihre Pods durchzusetzen. Verwenden Sie Netzwerkrichtlinien für Kubernetes-Bereitstellungen, um den Datenverkehr zwischen Pods zu steuern.
  • Bereiten Sie sich auf Backups und Disaster Recovery vorFühren Sie regelmäßige Backups Ihrer Kubernetes-Ressourcen und persistenten Daten durch. Planen und testen Sie Strategien zur Disaster Recovery, um sicherzustellen, dass Anwendungen und Dienste im Falle eines Ausfalls schnell wiederhergestellt werden können.

Schlussfolgerung

Kubernetes-Bereitstellungen spielen eine entscheidende Rolle beim Management des Lebenszyklus von Anwendungen innerhalb eines Kubernetes-Clusters. Sie bieten einen deklarativen Ansatz zur Definition des gewünschten Zustands von Anwendungen, einschließlich der Anzahl der Replikate, Container-Images und Konfigurationseinstellungen. Durch die Orchestrierung von ReplicaSets stellen Deployments sicher, dass die angegebene Anzahl von Pods ausgeführt wird, und führen Updates und Rollbacks automatisch auf kontrollierte und nahtlose Weise durch. Dies führt zu einer verbesserten Skalierbarkeit, Resilienz und einfachen Verwaltung von Anwendungen, wodurch Kubernetes-Deployments zu einem unverzichtbaren Werkzeug für die Bereitstellung und den Betrieb moderner Anwendungen werden.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Empfohlene Artikel