Een chaos-experiment maken dat gebruikmaakt van een Chaos Mesh-fout om AKS-pods te doden met Azure Portal

U kunt een chaos-experiment gebruiken om te controleren of uw toepassing bestand is tegen fouten door deze fouten in een gecontroleerde omgeving te veroorzaken. In dit artikel veroorzaakt u periodieke AKS-podfouten (Azure Kubernetes Service) in een naamruimte met behulp van een chaos-experiment en Azure Chaos Studio. Door dit experiment uit te voeren, kunt u zich beschermen tegen niet-beschikbaarheid van services wanneer er sporadische fouten optreden.

Chaos Studio maakt gebruik van Chaos Mesh, een gratis opensource-platform voor chaos-engineering voor Kubernetes, om fouten in een AKS-cluster te injecteren. Chaos Mesh-fouten zijn service-directe fouten waarvoor Chaos Mesh moet worden geïnstalleerd op het AKS-cluster. U kunt dezelfde stappen gebruiken om een experiment in te stellen en uit te voeren voor elke AKS Chaos Mesh-fout.

Vereisten

Beperkingen

  • U kunt Chaos Mesh-fouten met privéclusters gebruiken door VNet-injectie in Chaos Studio te configureren. Alle opdrachten die zijn uitgegeven aan het privécluster, inclusief de stappen in dit artikel voor het instellen van Chaos Mesh, moeten de richtlijnen voor privéclusters volgen. Aanbevolen methoden omvatten het maken van verbinding vanaf een virtuele machine in hetzelfde virtuele netwerk of het gebruik van de functie voor het aanroepen van AKS-opdrachten.
  • AKS Chaos Mesh-fouten worden alleen ondersteund in Linux-knooppuntgroepen.
  • Chaos Mesh-fouten werken momenteel niet als het AKS-cluster lokale accounts heeft uitgeschakeld.
  • Als uw AKS-cluster is geconfigureerd om alleen geautoriseerde IP-bereiken toe te staan, moet u de IP-bereiken van Chaos Studio toestaan. U kunt deze vinden door een query uit te voeren op de ChaosStudioservicetag met de Service Tag Discovery-API of downloadbare JSON-bestanden.

Chaos Mesh instellen op uw AKS-cluster

Voordat u Chaos Mesh-fouten kunt uitvoeren in Chaos Studio, moet u Chaos Mesh installeren op uw AKS-cluster.

  1. Voer de volgende opdrachten uit in een Azure Cloud Shell-venster waarin u het actieve abonnement hebt ingesteld op het abonnement waarin uw AKS-cluster wordt geïmplementeerd. Vervang en vervang deze $CLUSTER_NAME door $RESOURCE_GROUP de resourcegroep en de naam van uw clusterresource.

    az aks get-credentials -g $RESOURCE_GROUP -n $CLUSTER_NAME
    
    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. Controleer of de Chaos Mesh-pods zijn geïnstalleerd door de volgende opdracht uit te voeren:

    kubectl get po -n chaos-testing
    

    U ziet uitvoer die lijkt op het volgende voorbeeld (een chaos-controller-manager en een of meer chaos-daemons):

    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
    

U kunt ook de installatie-instructies op de Chaos Mesh-website gebruiken.

Chaos Studio inschakelen op uw AKS-cluster

Chaos Studio kan geen fouten injecteren voor een resource, tenzij die resource eerst wordt toegevoegd aan Chaos Studio. U voegt een resource toe aan Chaos Studio door een doel en mogelijkheden voor de resource te maken. AKS-clusters hebben slechts één doeltype (service-direct), maar andere resources kunnen maximaal twee doeltypen hebben. Eén doeltype is voor service-directe fouten. Een ander doeltype is voor op agents gebaseerde fouten. Elk type Chaos Mesh-fout wordt weergegeven als een mogelijkheid zoals PodChaos, NetworkChaos en IOChaos.

  1. Open de Azure Portal.

  2. Zoek naar Chaos Studio in de zoekbalk.

  3. Selecteer Doelen en ga naar uw AKS-cluster.

    Screenshot that shows the Targets view in the Azure portal.

  4. Schakel het selectievakje naast uw AKS-cluster in. Selecteer Doelen inschakelen en selecteer vervolgens Service-directe doelen inschakelen in de vervolgkeuzelijst.

    Screenshot that shows enabling targets in the Azure portal.

  5. Controleer of de gewenste resource wordt weergegeven. Selecteer Controleren + Inschakelen en vervolgens Inschakelen.

  6. Er wordt een melding weergegeven die aangeeft dat de resources die u hebt geselecteerd, zijn ingeschakeld.

    Screenshot that shows the notification showing that the target was successfully enabled.

U hebt nu uw AKS-cluster toegevoegd aan Chaos Studio. In de weergave Doelen kunt u ook de mogelijkheden beheren die zijn ingeschakeld voor deze resource. Selecteer de koppeling Acties beheren naast een resource om de mogelijkheden weer te geven die voor die resource zijn ingeschakeld.

Een experiment maken

U kunt nu uw experiment maken. Een chaos-experiment definieert de acties die u wilt uitvoeren op doelbronnen. De acties worden geordend en uitgevoerd in opeenvolgende stappen. Het chaos-experiment definieert ook de acties die u wilt uitvoeren op vertakkingen, die parallel worden uitgevoerd.

  1. Selecteer het tabblad Experimenten in Chaos Studio. In deze weergave kunt u al uw chaosexperimenten bekijken en beheren. Selecteer Nieuw experiment maken>.

    Screenshot that shows the Experiments view in the Azure portal.

  2. Vul het abonnement, de resourcegroep en de locatie in waar u het chaos-experiment wilt implementeren. Geef uw experiment een naam. Selecteer Volgende: Experimentontwerper.

    Screenshot that shows adding basic experiment details.

  3. U bent nu in de ontwerpfunctie voor chaos studio-experimenten. Met de ontwerpfunctie voor experimenten kunt u uw experiment bouwen door stappen, vertakkingen en fouten toe te voegen. Geef een beschrijvende naam aan uw stap en vertakking en selecteer Fout toevoegen toevoegen>.

    Screenshot that shows the experiment designer.

  4. Selecteer AKS Chaos Mesh Pod Chaos in de vervolgkeuzelijst. Vul de duur in met het aantal minuten dat de fout moet duren en jsonSpec met de volgende informatie:

    Om uw Chaos Mesh jsonSpecte formuleren:

    1. Zie de Chaos Mesh-documentatie voor een fouttype, bijvoorbeeld het type PodChaos.

    2. Formuleer de YAML-configuratie voor dat fouttype met behulp van de Chaos Mesh-documentatie.

      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. Verwijder YAML buiten de spec (inclusief de naam van de specificatieeigenschap) en verwijder de inspringing van de details van de specificatie. De duration parameter is niet nodig, maar wordt gebruikt als deze is opgegeven. Verwijder deze in dit geval.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. Gebruik een YAML-naar-JSON-conversieprogramma zoals deze om de Chaos Mesh YAML te converteren naar JSON en deze te minimaliseren.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. Plak de geminimaliseerde JSON in het veld jsonSpec in de portal.

  5. Selecteer Volgende: Doelbronnen.

    Screenshot that shows fault properties.

  6. Selecteer uw AKS-cluster en selecteer Volgende.

    Screenshot that shows adding a target.

  7. Controleer of uw experiment er correct uitziet en selecteer Beoordelen en maken>.

    Screenshot that shows reviewing and creating an experiment.

Geef het experiment toestemming voor uw AKS-cluster

Wanneer u een chaos-experiment maakt, maakt Chaos Studio een door het systeem toegewezen beheerde identiteit waarmee fouten worden uitgevoerd op uw doelbronnen. Deze identiteit moet de juiste machtigingen krijgen voor de doelresource om het experiment te kunnen uitvoeren.

  1. Ga naar uw AKS-cluster en selecteer Toegangsbeheer (IAM).

    Screenshot that shows the AKS Overview page.

  2. Selecteer Toevoegen>Roltoewijzing toevoegen.

    Screenshot that shows the Access control (IAM) overview.

  3. Zoek naar Azure Kubernetes Service Cluster Beheer Rol en selecteer de rol. Selecteer Volgende.

    Screenshot that shows assigning the AKS Cluster Admin role.

  4. Kies Leden selecteren en zoek naar de naam van uw experiment. Selecteer uw experiment en kies Selecteren. Als er meerdere experimenten in dezelfde tenant met dezelfde naam staan, wordt uw experimentnaam afgekapt met willekeurige tekens toegevoegd.

    Screenshot that shows adding an experiment to a role.

  5. Selecteer Beoordelen + beoordelen toewijzen>+ toewijzen.

Uw experiment uitvoeren

U bent nu klaar om uw experiment uit te voeren. Als u het effect wilt zien, raden we u aan het overzicht van uw AKS-cluster te openen en naar Inzichten te gaan in een afzonderlijk browsertabblad. Livegegevens voor het aantal actieve pods tonen het effect van het uitvoeren van uw experiment.

  1. Selecteer uw experiment in de weergave Experimenten . Selecteer OK starten>.

    Screenshot that shows starting an experiment.

  2. Wanneer de status wordt gewijzigd in Actief, selecteert u Details voor de meest recente uitvoering onder Geschiedenis om details voor het actieve experiment weer te geven.

Volgende stappen

Nu u een AKS Chaos Mesh service-direct experiment hebt uitgevoerd, kunt u het volgende doen: