Freigeben über


Erstellen eines Chaos-Experiments mit dem Azure-Portal, das einen Chaos Mesh-Fehler verwendet, um AKS-Pods zu entfernen

Sie können ein Chaos-Experiment verwenden, um zu überprüfen, ob Ihre Anwendung fehlerresistent ist, indem Sie diese Fehler in einer kontrollierten Umgebung verursachen. in diesem Artikel werden Sie periodische Ausfälle von Azure Kubernetes Service (AKS)-Pods in einem Namespace mithilfe eines Chaos-Experiments und Azure Chaos Studio verursachen. Die Durchführung dieses Experiments kann Ihnen helfen, sich gegen die Nichtverfügbarkeit von Diensten bei sporadischen Ausfällen zu schützen.

Chaos Studio verwendet Chaos Mesh, eine kostenlose Open-Source-Chaos-Engineering-Plattform für Kubernetes, um Fehler in einen AKS-Cluster zu injizieren. Chaos Mesh-Fehler sind service-direkte Fehler, für die Chaos Mesh auf dem AKS-Cluster installiert sein muss. Mit den gleichen Schritten können Sie ein Experiment für einen beliebigen AKS Chaos Mesh-Fehler einrichten und durchführen.

Voraussetzungen

Begrenzungen

  • Sie können Chaos Mesh-Fehler mit privaten Clustern verwenden, indem Sie VNet Injection in Chaos Studio konfigurieren. Alle Befehle, die an den privaten Cluster ausgegeben wurden, einschließlich der Schritte in diesem Artikel zum Einrichten von Chaos Mesh, müssen die Anleitungen für private Cluster befolgen. Empfohlene Methoden umfassen das Herstellen einer Verbindung von einem virtuellen Computer im selben virtuellen Netzwerk oder die Verwendung der Funktion AKS-Befehlsaufruf.
  • AKS Chaos Mesh-Fehler werden nur in Linux-Knotenpools unterstützt.
  • Wenn Ihr AKS-Cluster so konfiguriert ist, dass nur autorisierte IP-Bereiche zulässig sind, müssen Sie die IP-Bereiche von Chaos Studio zulassen. Sie können sie abrufen, indem Sie das ChaosStudio-Diensttag mit der Diensttagermittlungs-API oder mit herunterladbaren JSON-Dateien abfragen.

Chaos Mesh auf Ihrem AKS-Cluster einrichten

Bevor Sie Chaos Mesh-Fehler in Chaos Studio ausführen können, müssen Sie Chaos Mesh auf Ihrem AKS-Cluster installieren.

  1. Führen Sie die folgenden Befehle in einem Azure Cloud Shell-Fenster aus, in dem Sie als aktives Abonnement das Abonnement eingestellt haben, in dem Ihr AKS-Cluster bereitgestellt wird. Ersetzen Sie MyManagedCluster und MyResourceGroup durch die Namen Ihres Clusters und Ihrer Ressourcengruppe.

    az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
    
    helm repo add chaos-mesh https://charts.chaos-mesh.org
    helm repo update
    kubectl create ns chaos-testing
    helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
    
  2. Überprüfen Sie, ob die Chaos Mesh-Pods installiert sind, indem Sie den folgenden Befehl ausführen:

    kubectl get po -n chaos-testing
    

    Sie sollten eine ähnliche Ausgabe wie im folgenden Beispiel sehen (ein Chaos-Controller-Manager und ein oder mehrere Chaos-Dämonen):

    NAME                                        READY   STATUS    RESTARTS   AGE
    chaos-controller-manager-69fd5c46c8-xlqpc   1/1     Running   0          2d5h
    chaos-daemon-jb8xh                          1/1     Running   0          2d5h
    chaos-dashboard-98c4c5f97-tx5ds             1/1     Running   0          2d5h
    

Sie können auch die Installationsanweisungen auf der Chaos Mesh-Website verwenden.

Aktivieren Sie Chaos Studio auf Ihrem AKS-Cluster

Chaos Studio kann keine Fehler für eine Ressource einschleusen, es sei denn, diese Ressource wird zuerst in Chaos Studio hinzugefügt. Sie fügen eine Ressource in Chaos Studio hinzu, indem Sie ein Ziel und Fähigkeiten für die Ressource erstellen. AKS-Cluster verfügen nur über einen Zieltyp (service-direct), andere Ressourcen verfügen jedoch möglicherweise über bis zu zwei Zieltypen. Ein Zieltyp ist für dienstspezifische Fehler vorgesehen. Ein weiterer Zieltyp ist für Agent-basierte Fehler bestimmt. Jede Art von Chaos Mesh-Fehler wird als Fähigkeit dargestellt, z. B. PodChaos, NetworkChaos und IOChaos.

  1. Öffnen Sie das Azure-Portal.

  2. Suchen Sie in der Suchleiste nach Chaos Studio.

  3. Wählen Sie Ziele aus, und wechseln Sie zu Ihrem AKS-Cluster.

    Screenshot der Ansicht „Ziele“ im Azure-Portal.

  4. Aktivieren Sie das Kontrollkästchen neben Ihrem AKS-Cluster. Wählen Sie Ziele aktivieren aus, und wählen Sie dann im Dropdownmenü die Option Direkte Dienstziele aktivieren aus.

    Screenshot, der das Aktivieren von Zielen im Azure-Portal zeigt.

  5. Vergewissern Sie sich, dass die gewünschte Ressource aufgelistet ist. Wählen Sie Überprüfen und aktivieren und dann Aktivieren aus.

  6. Es wird eine Benachrichtigung angezeigt, die angibt, dass die ausgewählten Ressourcen erfolgreich aktiviert wurden.

    Screenshot: Benachrichtigung, die anzeigt, dass das Ziel erfolgreich aktiviert wurde.

Sie haben ihren AKS-Cluster jetzt erfolgreich zu Chaos Studio hinzugefügt. In der Ansicht Ziele können Sie auch die für diese Ressource aktivierten Fähigkeiten verwalten. Wählen Sie den Link Aktionen verwalten neben einer Ressource aus, um die für diese Ressource aktivierten Funktionen anzuzeigen.

Erstellen eines Experiments

Sie können jetzt Ihr Experiment erstellen. Ein Chaosexperiment definiert die Aktionen, die Sie gegen Zielressourcen ergreifen möchten. Die Aktionen werden in sequenziellen Schritten organisiert und ausgeführt. Das Chaosexperiment definiert auch die Aktionen, die Sie gegen Verzweigungen ausführen möchten, die parallel ausgeführt werden.

  1. Wählen Sie in Chaos Studio die Registerkarte Experimente aus. In dieser Ansicht können Sie alle Ihre Chaosexperimente anzeigen und verwalten. Wählen Sie Erstellen>Neues Experiment aus.

    Screenshot, der die Ansicht „Experimente“ im Azure-Portal zeigt.

  2. Geben Sie Abonnement, Ressourcengruppe und Ort ein, an dem Sie das Chaos-Experiment durchführen möchten. Geben Sie dem Experiment einen Namen. Wählen Sie Weiter: Experiment-Designer aus.

    Screenshot, der zeigt, wie Sie grundlegende Angaben zum Experiment hinzufügen.

  3. Sie befinden sich nun im Chaos Studio Experiment Designer. Mit dem Experiment-Designer können Sie Ihr Experiment durch Hinzufügen von Schritten, Verzweigungen und Fehlern aufbauen. Geben Sie Ihrem Schritt und der Verzweigung einen Anzeigenamen. Wählen Sie dann Aktion hinzufügen > Fehler hinzufügen aus.

    Screenshot, der den Experiment-Designers zeigt.

  4. Wählen Sie AKS Chaos Mesh Pod-Chaos aus der Dropdownliste aus. Füllen Sie das Feld Dauer mit der Anzahl der Minuten aus, die der Fehler dauern soll, und jsonSpec mit den folgenden Informationen:

    Formulieren Ihres Chaos Mesh jsonSpec:

    1. In der Dokumentation zu Chaos Mesh finden Sie einen Fehlertyp, z. B. den PodChaos-Typ.

    2. Formulieren Sie die YAML-Konfiguration für diesen Fehlertyp anhand der Chaos Mesh-Dokumentation.

      apiVersion: chaos-mesh.org/v1alpha1
      kind: PodChaos
      metadata:
        name: pod-failure-example
        namespace: chaos-testing
      spec:
        action: pod-failure
        mode: all
        duration: '600s'
        selector:
          namespaces:
            - default
      
    3. Entfernen Sie jegliches YAML außerhalb von spec (einschließlich des Eigenschaftsnamens der Spezifikation), und entfernen Sie den Einzug der Spezifikationsdetails. Der duration-Parameter ist nicht erforderlich, wird aber verwendet, wenn angegeben. Entfernen Sie ihn in diesem Fall.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. Verwenden Sie einen YAML-zu-JSON-Konverter wie diesen, um die Chaos Mesh YAML in JSON zu konvertieren und zu minimieren.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. Fügen Sie das minimierte JSON in das Feld jsonSpec im Portal ein.

  5. Wählen Sie Weiter: Zielressourcen aus.

    Screenshot, der Fehlereigenschaften zeigt.

  6. Wählen Sie Ihren AKS-Cluster aus, und wählen Sie Weiter aus.

    Screenshot vom Hinzufügen eines Ziels.

  7. Vergewissern Sie sich, dass Ihr Experiment korrekt aussieht, und wählen Sie dann Überprüfen + erstellen>Erstellen aus.

    Screenshot: Überprüfen und Erstellen eines Experiments.

Erteilen Sie Ihrem AKS-Cluster eine Experimentberechtigung

Wenn Sie ein Chaosexperiment erstellen, erzeugt Chaos Studio eine dem System zugewiesene verwaltete Identität, die Fehler gegen Ihre Zielressourcen ausführt. Diese Identität muss mit entsprechenden Rechten für die Zielressource ausgestattet sein, damit das Experiment erfolgreich durchgeführt werden kann.

  1. Wechseln Sie zu Ihrem AKS-Cluster, und wählen Sie Zugriffssteuerung (IAM) aus.

    Screenshot: Seite „AKS-Übersicht“.

  2. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen.

    Screenshot: Übersicht über die Zugriffssteuerung (IAM).

  3. Suchen Sie nach Azure Kubernetes Service Cluster Admin Role und wählen Sie die Rolle. Wählen Sie Weiter aus.

    Screenshot: Zuweisen der Administratorrolle für den AKS-Cluster.

  4. Wählen Sie Mitglieder auswählen aus, und suchen Sie nach Ihrem Experimentnamen. Wählen Sie Ihr Experiment aus, und klicken Sie auf Auswählen. Wenn mehrere Experimente mit demselben Namen im selben Mandanten vorhanden sind, wird der Name Ihres Experiments mithilfe zufällig hinzugefügter Zeichen gekürzt.

    Screenshot: Hinzufügen eines Experiments zu einer Rolle.

  5. Wählen Sie Überprüfen und zuweisen>Überprüfen und zuweisen aus.

Führen Sie Ihr Experiment durch

Sie sind nun bereit, Ihr Experiment durchzuführen. Um den Effekt anzuzeigen, empfehlen wir Ihnen, Ihre AKS-Clusterübersicht zu öffnen und auf einer separaten Browserregisterkarte zu Insights zu wechseln. Livedaten für die Anzahl der aktiven Pods zeigen die Auswirkungen der Ausführung Ihres Experiments.

  1. Wählen Sie in der Ansicht Experimente Ihr Experiment aus. Wählen Sie Start>OK aus.

    Screenshot: Starten eines Experiments.

  2. Wenn der Status zu Laufend wechselt, wählen Sie Details für die letzte Ausführung unter Historie aus, um Details zum laufenden Experiment zu sehen.

Nächste Schritte

Nachdem Sie nun ein AKS-Chaos-Mesh-Service-Direkt-Experiment durchgeführt haben, sind Sie bereit für Folgendes: