Kubernetes-Bereitstellungsstrategie
Finden Sie die optimale Kubernetes-Rolloutstrategie für Ihre Anwendung.
Kennen der Kubernetes-Bereitstellungsoptionen
Unabhängig davon, ob Sie die Markteinführungszeit verkürzen, resiliente Bereitstellungen ohne Ausfallzeiten erstellen, Apps und Features schneller oder häufiger freigeben oder mit größerer Flexibilität arbeiten möchten, ist die Wahl der richtigen Kubernetes-Bereitstellungsstrategie der Schlüssel zur Bereitstellung resilienter Anwendungen und Infrastrukturen. Jede Kubernetes-Bereitstellungsstrategie hat in Abhängigkeit von Ihren Zielen und Anforderungen ihre Vorteile.
Erstellen von Kubernetes-Bereitstellungen
Bevor Sie eine Kubernetes-Bereitstellungsstrategie implementieren, müssen Sie die Teile einer Kubernetes-Bereitstellung kennen und verstehen, wie sie alle zusammen wirken.
Inhalt einer Kubernetes-Bereitstellung
YAML-Datei
Der gewünschte Zustand für den von Ihnen beschriebenen Kubernetes-Cluster (die Konfiguration von Pods), der als Grundlage für eine Kubernetes-Bereitstellung dient.
Pods
Die Container, freigegebenen Ressourcen und die Umgebung, die Ihre Anwendung oder Ihr Workflow ausführen muss.
ReplicaSet
Gruppen von identisch konfigurierten Pods werden als ReplicaSets bezeichnet, die sicherstellen, dass die in der YAML-Datei für eine Kubernetes-Bereitstellung beschriebene Art und Anzahl von Pods zu jeder Zeit ausgeführt wird. Wenn ein Pod ausfällt, wird ein neuer erstellt.
Kube-controller-manager
Ändert den aktuellen Zustand des Clusters entsprechend dem in der YAML beschriebenen Zielzustand, erstellt neue Pods und ReplicaSets und aktualisiert oder entfernt bestehende Pods und ReplicaSets.
Kube-scheduler
Bestimmt, wie Ihre Pods und ReplicaSets auf Ihren Workerknoten bereitgestellt werden, und verteilt den Datenverkehr auf diese Knoten.
Rollout
Der Prozess der Neukonfiguration des Clusters von seinem aktuellen Zustand in den angestrebten Zustand – in den meisten Fällen ohne Ausfallzeiten.
Funktionsweise der Kubernetes-Rollouts
- Erstellen Sie eine YAML-Datei, die die gewünschte Zustandskonfiguration des Clusters beschreibt.
- Wenden Sie die YAML-Datei über kubectl (die Kubernetes-Befehlszeilenschnittstelle) auf den Cluster an.
- Kubectl sendet die Anforderung an den kube-apiserver, der die Anforderung authentifiziert und autorisiert, bevor die Änderung in einer Datenbank (etcd) aufgezeichnet wird.
- Der kube-controller-manager überwacht das System kontinuierlich auf neue Anforderungen und arbeitet daran, den Systemzustand mit dem gewünschten Zustand abzustimmen – dabei werden ReplicaSets, Bereitstellungen und Pods erstellt.
- Nachdem alle Controller ausgeführt wurden, sieht der kube-scheduler, dass sich Pods im Zustand "Ausstehend" befinden, da sie noch nicht für die Ausführung auf einem Knoten geplant sind. Der Planer findet geeignete Knoten für die Pods und kommuniziert dann mit dem Kubelet der einzelnen Knoten, um die Steuerung zu übernehmen und die Bereitstellung zu starten.
Anwendungsfälle für die Kubernetes-Bereitstellung
Erstellung
Führen Sie ein Rollout vollständig neuer Kubernetes-Pods und ReplicaSets durch.
Update
Deklarieren Sie einen neuen Zielzustand, und führen Sie kontrolliert einen Rollout für neue Pods und ReplicaSets aus.
Rollback
Setzen Sie die Kubernetes-Bereitstellung in einen früheren Zustand zurück. Dies ist hilfreich, wenn der aktuelle Zustand nicht stabil ist.
Skalierung
Erhöhen Sie die Anzahl der Pods und ReplicaSets für die Kubernetes-Bereitstellung, ohne sie zu ändern.
Kubernetes-Bereitstellungsstrategien
Die beste Kubernetes-Bereitstellungsstrategie für Ihr Szenario hängt von vielen Faktoren ab: akzeptable Ausfallzeiten (sofern überhaupt möglich), Ihre Bereitstellungsumgebung, Ihr Vertrauen in die Stabilität einer neuen Version oder Plattform, Testbedarf und erhoffter Erkenntnisgewinn, Ressourcenkosten, Verfügbarkeit und Unternehmensziele. Hier sind vier allgemeine Bereitstellungsstrategien, die Unternehmen in der Produktionsumgebung verwenden.
Gestaffelt
Die Standardmethode für den Kubernetes-Rollout ist die gestaffelte Bereitstellung. Bei dieser Bereitstellung werden die Pods langsam nacheinander ersetzt, um Ausfallzeiten zu vermeiden. Alte Pods werden erst dann zentral herunterskaliert, wenn neue Pods bereit sind. Wenn bei Ihrer Bereitstellung Probleme auftreten, können Sie die Kubernetes-Bereitstellung unterbrechen oder abbrechen, ohne den gesamten Cluster offline zu nehmen.
Blau/Grün
Bei einer blau/grünen Bereitstellung geben Sie eine neue Version (blau) Ihrer Anwendung oder Ihres Workflows frei, während die aktuelle Version (grün) noch ausgeführt wird. Auf diese Weise können Sie die blaue Version in der Produktionsumgebung testen, während gleichzeitig die Benutzer nur mit der grünen, stabilen Version in Kontakt kommen. Nach dem Test ersetzt die blaue Version schrittweise die grüne Version.
Canary
Ermöglichen Sie Ihren Kunden, Ihre Kubernetes-Bereitstellung zu testen, indem Sie die neue Version für eine kleine Gruppe von Kunden freigeben. Sie führen ein ReplicaSet der neuen Version zusammen mit der aktuellen Version aus und skalieren dann nach einer bestimmten Zeitspanne ohne Fehler die neue Version hoch, während Sie die alte Version entfernen.
A/B-Tests
Ähnlich wie die Canary-Kubernetes-Bereitstellungsstrategie richtet sich eine A/B-Teststrategie an eine bestimmte Kundengruppe. Eine A/B-Testbereitstellung zielt jedoch nicht nur auf die Stabilität einer Version ab – sie wird auch zum Testen verwendet, wie effektiv die Version beim Erreichen der Geschäftsziele ist. Die neue Version wird auf der Grundlage von Faktoren wie Cookies, Geolocation, Betriebssystem und Gerätetyp an die Benutzer verteilt und wird häufig zusammen mit der aktuellen Version ausgeführt, wobei die zentrale Hochskalierung erfolgt, wenn sich die neue Version bewährt hat.
Kubernetes-Bereitstellungstools
Sie können zwar die Befehlszeilen- oder YAML-Dateien zum Ausführen einer der genannten Kubernetes-Bereitstellungsstrategien verwenden, aber durch die Implementierung von Kubernetes-Bereitstellungstools und -Diensten wie den folgenden gewinnen Sie mehr Einfluss auf Ihre Cluster und Bereitstellungen.
Azure DevOps
Eine vollständige Anwendungslieferkette zur Automatisierung von Kubernetes-Bereitstellungen. Bringen Sie Geschwindigkeit und Sicherheit in Einklang, während Sie Code schneller und effizienter bereitstellen.
Helm
Ein Open-Source-Paketerstellungstool. Installieren, aktualisieren und verwalten Sie Kubernetes-Anwendungen mithilfe von Diagrammen, die Sie erstellen, versionieren, teilen und veröffentlichen.
Azure Kubernetes Service (AKS)
Ein sicherer und vollständig verwalteter Kubernetes-Dienst mit Hochverfügbarkeit. Stellen Sie Containeranwendungen in der Cloud bereit und verwalten Sie sie.