Freigeben über


Zuverlässigkeit in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) ist ein verwalteter Container-Orchestrierungsdienst, der die Bereitstellung, Verwaltung und Vorgänge von Kubernetes vereinfacht.

Wenn Sie Azure verwenden, ist Zuverlässigkeit eine gemeinsame Verantwortung. Microsoft bietet eine Reihe von Funktionen zur Unterstützung von Resilienz und Wiederherstellung. Sie sind dafür verantwortlich, zu verstehen, wie diese Funktionen in allen von Ihnen verwendeten Diensten funktionieren, und die Funktionen auswählen, die Sie benötigen, um Ihre Geschäftsziele und Uptime-Ziele zu erfüllen.

In diesem Artikel wird beschrieben, wie Sie Azure Kubernetes Service (AKS) für eine Vielzahl potenzieller Ausfälle und Probleme widerstandsfähig machen, einschließlich vorübergehender Fehler, Ausfall der Verfügbarkeitszone und Regionsausfälle. Außerdem wird beschrieben, wie Sie Sicherungen verwenden können, um aus anderen Arten von Problemen wiederherzustellen, und einige wichtige Informationen zum Azure Kubernetes Service (AKS) Service Level Agreement (SLA) hervorgehoben.

Bereitstellungsempfehlungen für die Produktion

Empfehlungen zum Bereitstellen zuverlässiger Produktionsworkloads in AKS finden Sie in den folgenden Artikeln:

Übersicht über die Zuverlässigkeitsarchitektur

Wenn Sie einen AKS-Cluster erstellen, erstellt und konfiguriert die Azure-Plattform automatisch Folgendes:

  • Eine Steuerungsebene mit dem API-Server usw., dem Planer und anderen Pods, die zum Verwalten Ihrer Workload erforderlich sind.

  • Ein Systemknotenpool für Ihr Abonnement, in dem Ihre Add-Ons und andere Pods gehostet werden, die im Kube-System-Namespace ausgeführt werden.

Nachdem diese anfängliche Einrichtung des Knotenpools abgeschlossen ist, können Sie Knotenpools für Ihre eigenen Benutzerworkloads hinzufügen oder löschen . AKS verwaltet Knotenpools nicht mit dem Ziel der Zuverlässigkeit, und Sie müssen sicherstellen, dass Ihre Workloads gegen Infrastrukturfehler widerstandsfähig sind.

Diagramm, das die Kubernetes-Steuerungsebenen und Knotenkomponenten einschließlich des Systemknotenpools und Benutzerknotenpools zeigt.

Resilienz ist eine gemeinsame Verantwortung von Ihnen und Microsoft. Als Computedienst verwaltet AKS einige Aspekte der Zuverlässigkeit Ihres Clusters, aber Sie sind für die Verwaltung anderer Aspekte verantwortlich.

  • Microsoft verwaltet die Steuerungsebene und andere verwaltete Komponenten von AKS.

  • Es liegt in Ihrer Verantwortung:

    • Definieren Sie, wie Komponenten, einschließlich Knotenpools und Lastenausgleichsgeräte, die an Dienste angeschlossen sind, so konfiguriert werden sollten, dass sie Ihren Zuverlässigkeitsanforderungen entsprechen. Nachdem Sie die Komponenten definiert haben, stellt Microsoft sie in Ihrem Auftrag bereit und verwaltet sie.

    • Verwalten Sie alle Komponenten außerhalb des AKS-Clusters, einschließlich Speicher und Datenbanken. Stellen Sie sicher, dass diese Komponenten Ihren Zuverlässigkeitsanforderungen entsprechen. Stellen Sie beim Bereitstellen Ihrer Workloads sicher, dass auch andere Azure-Komponenten für resilienz konfiguriert sind, indem Sie die bewährten Methoden für diese Dienste ausführen.

Resilienz für vorübergehende Fehler

Vorübergehende Fehler sind kurze, zeitweilige Fehler in Komponenten. Sie treten häufig in einer verteilten Umgebung wie der Cloud auf und sind ein normaler Bestandteil von Vorgängen. Vorübergehende Fehler korrigieren sich nach kurzer Zeit. Es ist wichtig, dass Ihre Anwendungen vorübergehende Fehler behandeln können. Dies geschieht in der Regel durch Wiederholen betroffener Anforderungen.

Alle in der Cloud gehosteten Anwendungen sollten die Anleitung zur vorübergehenden Fehlerbehandlung von Azure befolgen, wenn sie mit cloudgehosteten APIs, Datenbanken und anderen Komponenten kommunizieren. Weitere Informationen finden Sie unter Empfehlungen zur Behandlung vorübergehender Fehler.

Wenn Sie AKS verwenden, können vorübergehende Fehler aufgrund verschiedener Gründe auftreten, z. B. Anwendungsabstürzen, Podskalierung und Ausgleichsvorgänge, Knotenpatching und temporäre Infrastrukturfehler wie Hardware- oder Netzwerkprobleme.

Es ist unmöglich, alle vorübergehenden Fehler zu beseitigen, sodass Clients, die auf Ihre von AKS gehosteten Anwendungen zugreifen, darauf vorbereitet sein sollten, fehlgeschlagene Anforderungen erneut auszuführen und anderen empfehlungen für die vorübergehende Fehlerbehandlung zu folgen. Sie können die Wahrscheinlichkeit vorübergehender Fehler minimieren und die Ausfallzeiten vermeiden oder mindern, die sie verursachen können, indem Sie Kubernetes und Azure best practices in Ihrer Bereitstellung folgen.

  • Legen Sie Pod-Unterbrechungsbudgets (PDBs) in Ihrem Pod YAML fest, um anzugeben, wie viele Pods zu einem bestimmten Zeitpunkt in dem Zustand „Ready“ vorhanden sein müssen. Wenn Sie PDBs einstellen, stellt AKS eine minimale Verfügbarkeit von Replikaten sicher, während Operationen zum Absperren und Ausgleichen der Knoten ausgeführt werden. Wenn ein PDB während Prozessen wie Upgrades nicht erfüllt werden kann, funktioniert der Pod weiterhin, und der Vorgang schlägt möglicherweise fehl. Weitere Informationen finden Sie unter PDBs.
  • Verwenden Sie maxUnavailable, um die maximale Anzahl von Replikaten zu definieren, die zu einem bestimmten Zeitpunkt nicht verfügbar sein können. Wenn Sie z. B. einen rollierenden Neustart durchführen, stellt AKS sicher, dass nicht mehr als die durch maxUnavailable festgelegte Anzahl von Pods gleichzeitig geändert wird. Weitere Informationen finden Sie unter "maxUnavailable".
  • Befolgen Sie bewährte Methoden für die Bereitstellung. Pod-Replikate können auch aufgrund von Anwendungsproblemen fehlschlagen. Weitere Informationen finden Sie unter bewährte Methoden auf Bereitstellungsebene für die Zuverlässigkeit von AKS-Clustern.

Hinweis

Wenn Sie möchten, dass AKS Ihre Bereitstellungen auf Einhaltung bewährter Methoden überprüft und Sperr- oder Warnbenachrichtigungen bereitstellt, können Sie Bereitstellungsvorkehrungen verwenden. Bereitstellungsschutzmechanismen sind ein verwaltetes Angebot, das dazu beiträgt, bewährte Methoden für Produkte zu erzwingen, bevor Ihr Code im Cluster bereitgestellt wird.

Ausfallsicherheit bei Ausfällen von Verfügbarkeitszonen

Verfügbarkeitszonen sind physisch getrennte Gruppen von Rechenzentren innerhalb einer Azure-Region. Wenn eine Zone ausfällt, erfolgt ein Failover der Dienste zu einer der verbleibenden Zonen.

Wenn Sie einen AKS-Cluster in einer Region bereitstellen, die Verfügbarkeitszonen unterstützt, erfordern unterschiedliche Komponenten unterschiedliche Konfigurationstypen.

Die AKS-Steuerungsebene ist standardmäßig zonenresilient. Wenn eine Zone fehlschlägt, erfordert die Steuerungsebene keine Konfiguration oder Verwaltung, um Resilienz zu erzielen. Die Ausfallsicherheit der Steuerungsebene reicht jedoch nicht aus, damit Ihr Cluster betriebsbereit bleibt, wenn eine Zone fehlschlägt. Für den Systemknotenpool und alle von Ihnen bereitgestellten Benutzerknotenpools müssen Sie die Unterstützung der Verfügbarkeitszone aktivieren, um sicherzustellen, dass Ihre Workloads ausfallsicher für Verfügbarkeitszonenfehler sind.

Anforderungen

Regionsunterstützung: Sie können zonenresiliente AKS-Cluster in jeder Region bereitstellen, die Verfügbarkeitszonen unterstützt.

Überlegungen

Um die Zuverlässigkeit und Resilienz von AKS-Produktionsworkloads in einer Region zu verbessern, müssen Sie AKS für Zonenredundanz konfigurieren, indem Sie die folgenden Konfigurationen vornehmen:

  • Stellen Sie mehrere Replikate bereit. Kubernetes verteilt Ihre Pods basierend auf Knotenbezeichnungen auf Knoten. Um Ihre Workload über Zonen zu verteilen, müssen Sie mehrere Replikate Ihres Pods bereitstellen. Wenn Sie beispielsweise den Knotenpool mit drei Zonen konfigurieren, aber nur ein einzelnes Replikat Ihres Pods bereitstellen, ist Ihre Bereitstellung nicht zonensicher.

  • Aktivieren Sie die automatische Skalierung. Kubernetes-Knotenpools bieten manuelle und automatische Skalierungsoptionen. Mit der manuellen Skalierung haben Sie die Möglichkeit, Knoten nach Bedarf hinzuzufügen oder zu löschen. Ausstehende Pods warten darauf, dass Sie einen Knotenpool hochskalieren. Die verwaltete AKS-Skalierung verwendet den Cluster-AutoScaler oder die automatische Knotenbereitstellung (Node Autoprovisioning, NAP). AKS skaliert den Knotenpool basierend auf den Anforderungen des Pods im SKU-Kontingent und der Kapazität Ihres Abonnements hoch oder runter. Mit dieser Methode können Sie sicherstellen, dass Ihre Pods auf verfügbaren Knoten in den Verfügbarkeitszonen eingeplant werden.

  • Legen Sie Pod-Topologieeinschränkungen fest. Verwenden Sie Verteilungsregeln der Pod-Topologie, um die Verteilung von Pods über verschiedene Knoten oder Zonen zu steuern. Einschränkungen helfen Ihnen, HA, Resilienz und effiziente Ressourcennutzung zu erreichen. Wenn Sie Pods ausschließlich über Zonen verteilen möchten, können Sie Einschränkungen festlegen, um einen Pod in einen wartenden Zustand zu zwingen, um die gleichmäßige Verteilung von Pods über die Zonen hinweg zu erhalten. Weitere Informationen finden Sie unter Beschränkungen der Pod-Topologieverteilung.

  • Konfigurieren Sie zonenresiliente Netzwerke. Wenn Ihre Pods externen Datenverkehr bereitstellen, konfigurieren Sie Ihre Clusternetzwerkarchitektur mithilfe von Diensten wie Azure Application Gateway, Azure Load Balancer oder Azure Front Door.

  • Stellen Sie sicher, dass Abhängigkeiten zonensicher sind. Die meisten AKS-Anwendungen verwenden andere Dienste für Speicher, Sicherheit oder Netzwerk. Stellen Sie sicher, dass Sie die Empfehlungen zur Zonenresilienz für diese Dienste überprüfen.

Kosten

Es gibt keine zusätzlichen Gebühren, um die Unterstützung der Verfügbarkeitszone in AKS zu aktivieren. Sie bezahlen für die virtuellen Computer (VMs) und andere Ressourcen, die Sie in den Verfügbarkeitszonen bereitstellen.

Konfigurieren der Unterstützung von Verfügbarkeitszonen

  • Erstellen Sie einen neuen AKS-Cluster mit Unterstützung für Verfügbarkeitszonen: Informationen zum Konfigurieren der Verfügbarkeitszonenunterstützung finden Sie unter Erstellen eines Azure Kubernetes Service (AKS)-Clusters, der Verfügbarkeitszonen verwendet.
  • Migration: Sie können die Verfügbarkeitszonenunterstützung nicht aktivieren, nachdem Sie einen Cluster erstellt haben. Stattdessen müssen Sie einen neuen Cluster mit aktivierter Verfügbarkeitszone erstellen und den vorhandenen Cluster löschen.
  • Verfügbarkeitszonenunterstützung deaktivieren: Sie können die Unterstützung der Verfügbarkeitszone nach dem Erstellen eines Clusters nicht deaktivieren. Stattdessen müssen Sie einen neuen Cluster mit deaktivierter Verfügbarkeitszone erstellen und den vorhandenen Cluster löschen.

Verhalten, wenn alle Zonen fehlerfrei sind

In diesem Abschnitt wird beschrieben, was Sie erwarten müssen, wenn AKS-Cluster für die Unterstützung der Verfügbarkeitszone konfiguriert sind und alle Verfügbarkeitszonen betriebsbereit sind.

  • Datenverkehrsrouting zwischen Zonen: Wenn Sie einen AKS-Cluster bereitstellen, der Verfügbarkeitszonen verwendet, ist es wichtig, sicherzustellen, dass Ihre Netzwerkkomponenten auch zonensicher sind. Abhängig von den verwendeten Lastenausgleichsmodulen und anderen Netzwerkkomponenten müssen Sie möglicherweise explizit Komponenten konfigurieren, um den Datenverkehr an die richtigen Knoten in den richtigen Zonen weiterzuleiten und auf Zonenausfälle zu reagieren. Weitere Informationen finden Sie in den Überlegungen zur Zonenresilienz für AKS.

  • Datenreplikation zwischen Zonen: Wenn Sie eine zustandslose Workload ausführen, sollten Sie verwaltete Azure-Dienste wie Azure-Datenbanken, Azure-Cache für Redis oder Azure Storage verwenden, um die Anwendungsdaten zu speichern. Sie können diese Dienste verwenden, um sicherzustellen, dass Ihr Datenverkehr über Knoten und Zonen verschoben werden kann, ohne datenverlustlos zu sein oder die Benutzererfahrung zu beeinträchtigen. Sie können Kubernetes-Bereitstellungen, -Dienste und -Integritätstests verwenden, um statusfreie Pods zu verwalten und die gleichmäßige Verteilung über Zonen hinweg sicherzustellen.

    Wenn Sie den Zustand in Ihrem Cluster mithilfe von Azure-Datenträgern speichern müssen, verwenden Sie den zonenredundanten Azure-Speicher, um sicherzustellen, dass Ihre Daten in mehreren Verfügbarkeitszonen repliziert werden. Weitere Informationen finden Sie unter Auswählen des richtigen Datenträgertyps basierend auf den Anwendungsanforderungen.

Verhalten bei einem Zoneausfall

In diesem Abschnitt wird beschrieben, was Sie erwarten müssen, wenn ein Ausfall einer Verfügbarkeitszone auftritt, während AKS-Cluster mit Unterstützung der Verfügbarkeitszone konfiguriert sind.

  • Erkennung und Reaktion: Bei einem Zonenausfall wird für die Steuerungsebene automatisch ein Failover ausgeführt. Wenn Ihre Knotenpools Verfügbarkeitszonen verwenden und den bewährten Methoden der Zonenresilienz folgen, können Sie davon ausgehen, dass AKS Knoten und Replikate in den betriebsfähigen Zonen anzeigt. AKS führt diese Aufgabe automatisch aus, wenn Sie verwaltete Lösungen wie Cluster autoscaler oder NAP verwenden. Ohne automatische Skalierung verbleiben Knoten und Replikate im Status "Ausstehend ", und warten Sie, bis der Knotenpool manuell skaliert wird.

    AKS versucht auch, die Pods in den gesunden Zonen neu auszubalancieren. Wenn Sie den Knotenpool in einem Zonenausfallszenario manuell skalieren möchten, verbleiben Ihre Pods möglicherweise im Zustand Ausstehend, wenn in den fehlerfreien Zonen keine Knoten verfügbar sind. Das Skalieren in den verbleibenden Zonen unterliegt ebenfalls der Verfügbarkeit von Kontingenten und Kapazitäten für die VM-SKU, die Sie verwenden.

  • Benachrichtigung: Microsoft benachrichtigt Sie nicht automatisch, wenn eine Zone deaktiviert ist. Sie können jedoch Azure Resource Health verwenden, um den Status einer einzelnen Ressource zu überwachen, und Sie können Ressourcenintegritätswarnungen einrichten, um Sie über Probleme zu informieren. Sie können auch Azure Service Health verwenden, um die allgemeine Integrität des Diensts zu verstehen, einschließlich jeglicher Zonenfehler, und Sie können Dienststatuswarnungen einrichten, um Sie über Probleme zu informieren.

    Sie können auch die Integritätsmetriken für Ihre Knoten oder Pods verwenden, um die Integrität Ihrer Knoten und Pods zu überwachen.

  • Aktive Anforderungen: Bei aktiven Anforderungen kann es zu Unterbrechungen kommen. Einige Anfragen können fehlschlagen, und die Latenz kann sich erhöhen, während Ihre Workload in eine andere Zone verschoben wird.

  • Erwarteter Datenverlust: Wenn Sie den Zustand in Ihrem Cluster mithilfe von Azure-Datenträgern speichern und zonenredundanten Speicher verwenden, führt ein Zonenausfall voraussichtlich nicht zu Datenverlust.

  • Erwartete Ausfallzeiten: Wenn Sie die Zonenresilienz für Ihren Cluster und Ihre Pods ordnungsgemäß konfigurieren, sollte ein Zonenfehler keine Ausfallzeiten für Ihre AKS-Workload verursachen.

  • Datenverkehrsumleitung: Lastenausgleichsmodule leiten neue eingehende Anforderungen an Pods um, die auf fehlerfreien Knoten ausgeführt werden.

Weitere Informationen finden Sie in den Überlegungen zur Zonenresilienz für AKS.

Zonenwiederherstellung

Wenn die Verfügbarkeitszone wiederhergestellt wird, hängt das Failbackverhalten von der Komponente ab:

  • Steuerebene: AKS stellt die Steuerungsebenenvorgänge in allen Verfügbarkeitszonen automatisch wieder her. Es ist kein manueller Eingriff erforderlich.

  • Knotenpools und Knoten: Unmittelbar nach dem Failback verbleiben Knoten in den vorher gesunden Zonen und werden in der zurückgewonnenen Zone nicht wiederhergestellt. Wenn Sie jedoch das nächste Mal einen Knotenskalierungsvorgang ausführen, z. B. beim Skalieren des Knotenpools, kann der Knotenpool Knoten in der wiederhergestellten Zone erstellen.

  • Pods: Unmittelbar nach dem Failback werden Pods weiterhin auf denselben Knoten ausgeführt, auf denen sie bereits laufen. Wenn neue Pods erstellt oder vorhandene Pods neu erstellt werden, sind sie berechtigt, Knoten in der wiederhergestellten Zone zu verwenden.

  • Speicher: Jeder an Pods angefügte Speicher wird basierend auf der Funktionsweise des zonenredundanten Speichers wiederhergestellt.

Test auf Zonenversagen

Sie können Ihre Resilienz auf Verfügbarkeitszonenfehler testen, indem Sie die folgenden Methoden verwenden:

Widerstandsfähigkeit bei regionalen Ausfällen

AKS-Cluster sind auf eine Region begrenzte Ressourcen. Wenn die Region nicht verfügbar ist, ist Ihr AKS-Cluster ebenfalls nicht verfügbar.

Benutzerdefinierte Lösungen mit mehreren Regionen für Resilienz

Wenn Sie Ihre Kubernetes-Workload in mehreren Azure-Regionen bereitstellen müssen, haben Sie zwei Möglichkeiten, die Orchestrierung dieser Cluster zu verwalten.

  • Verwenden Sie Azure Kubernetes Fleet Manager , wenn Sie eine einfachere, verwaltete Erfahrung wünschen. Mit Azure Kubernetes Fleet Manager können Sie:

    • Verwalten Sie eine Reihe von AKS-Clustern als einzelne Einheit, und diese Cluster können über mehrere Azure-Regionen verteilt werden.

    • Automatisieren Sie bestimmte Aspekte der Clusterverwaltung, z. B. Cluster- und Knotenimageupgrades.

    • Verwenden Sie Datenverkehrsverteilungsfunktionen, um Datenverkehr über die Cluster zu verteilen und automatisch ein Failover auszuführen, wenn eine Region nicht verfügbar ist.

  • Orchestrieren Sie ein Failover mithilfe eines manuellen Aktiv/Aktiv- oder Aktiv/Passiv-Bereitstellungsmodells, wenn Ihre Workload eine differenziertere Kontrolle über die verschiedenen Komponenten interregionaler Failover erfordert. Weitere Informationen finden Sie in der Übersicht über HA und DR für AKS.

Sichern und Wiederherstellen

Azure Backup verfügt über eine Erweiterung, mit der Sie AKS-Clusterressourcen und persistente Volumes sichern können, die an den Cluster angefügt sind. Der Backup-Tresor kommuniziert über diese Erweiterung mit dem AKS-Cluster, um Sicherungs- und Wiederherstellungsvorgänge auszuführen.

Wenn sich Ihr AKS-Cluster in einer Region befindet, die gekoppelt ist, können Sie Sicherungen so konfigurieren, dass sie im georedundanten Speicher gespeichert werden. Sie können georedundante Sicherungen in der gekoppelten Region wiederherstellen.

Weitere Informationen finden Sie in den folgenden Artikeln:

Für die meisten Lösungen sollten Sie sich nicht ausschließlich auf Sicherungen verlassen. Verwenden Sie stattdessen die in diesem Handbuch beschriebenen anderen Funktionen, um Ihre Resilienzanforderungen zu unterstützen. Sicherungen schützen jedoch vor einigen Risiken, die andere Ansätze nicht vermeiden. Weitere Informationen finden Sie unter Was sind Redundanz, Replikation und Sicherung?.

Bemühen Sie sich, zustandslose Cluster zu verwenden, die die Notwendigkeit der Sicherung minimieren. Speichern Sie Daten in externen Speichersystemen und Datenbanken, anstatt innerhalb Ihres Clusters.

Resilienz gegenüber Wartungsarbeiten an Diensten

AKS führt Wartungen auf Ihrem Cluster durch, einschließlich Aktualisierungen der Cluster- und Knotenimages. Um sicherzustellen, dass Kubernetes die Mindestanzahl von Podinstanzen aufrechterhält, die erforderlich sind, um den Produktionsdatenverkehr auch während Upgrades zu bedienen, sollten Sie Ihre Pods so konfigurieren, dass Pod-Unterbrechungsbudgets verwendet werden.

Um Dienstunterbrechungen während kritischer Zeiträume zu reduzieren, bietet AKS Steuerelemente, sodass Sie geplante Wartungszeiten angeben können. Weitere Informationen finden Sie unter Verwendung der geplanten Wartung zum Planen und Steuern von Upgrades für Ihren Azure Kubernetes-Dienstcluster.

Service-Level-Vereinbarung

Der Service level agreement (SLA) für Azure-Dienste beschreibt die erwartete Verfügbarkeit jedes Diensts und die Bedingungen, die Ihre Lösung erfüllen muss, um diese Verfügbarkeitserwartungen zu erreichen. Weitere Informationen finden Sie unter SLAs für Onlinedienste.

AKS bietet drei Preisstufen für die Clusterverwaltung: Kostenlos, Standard und Premium. Mit der Stufe "Frei" können Sie AKS verwenden, um Ihre Workloads zu testen. Die Stufen "Standard" und "Premium" sind für Produktionsworkloads ausgelegt. Wenn Sie einen AKS-Cluster mit aktivierten Verfügbarkeitszonen bereitstellen, erhöht sich der im SLA definierte Verfügbarkeitsprozentsatz. Die SLA gilt jedoch nur, wenn Sie einen Cluster im Standard- oder Premium-Preisniveau bereitstellen.