Condividi tramite


Creare un esperimento chaos che usa un errore Chaos Mesh per uccidere i pod del servizio Azure Kubernetes con il portale di Azure

È possibile usare un esperimento chaos per verificare che l'applicazione sia resiliente agli errori causando tali errori in un ambiente controllato. In questo articolo si verificano errori periodici servizio Azure Kubernetes pod in uno spazio dei nomi usando un esperimento chaos e Azure Chaos Studio. L'esecuzione di questo esperimento consente di difendersi dall'indisponibilità del servizio in caso di errori sporadici.

Chaos Studio usa Chaos Mesh, una piattaforma di progettazione chaos gratuita e open source per Kubernetes, per inserire errori in un cluster del servizio Azure Kubernetes. Gli errori di Chaos Mesh sono errori diretti dal servizio che richiedono l'installazione di Chaos Mesh nel cluster del servizio Azure Kubernetes. È possibile usare questi stessi passaggi per configurare ed eseguire un esperimento per qualsiasi errore di Chaos Mesh del servizio Azure Kubernetes.

Prerequisiti

Limiti

  • È possibile usare gli errori di Chaos Mesh con cluster privati configurando l'inserimento di reti virtuali in Chaos Studio. Tutti i comandi eseguiti nel cluster privato, inclusi i passaggi descritti in questo articolo per configurare Chaos Mesh, devono seguire le indicazioni del cluster privato. I metodi consigliati includono la connessione da una macchina virtuale nella stessa rete virtuale o l'uso della funzionalità di richiamo dei comandi del servizio Azure Kubernetes .
  • Gli errori di Chaos Mesh del servizio Azure Kubernetes sono supportati solo nei pool di nodi Linux.
  • Attualmente, gli errori di Chaos Mesh non funzionano se il cluster del servizio Azure Kubernetes ha account locali disabilitati.
  • Se il cluster del servizio Azure Kubernetes è configurato per consentire solo intervalli IP autorizzati, è necessario consentire gli intervalli IP di Chaos Studio. È possibile trovarli eseguendo una query sul tag del ChaosStudioservizio con l'API di individuazione tag del servizio o file JSON scaricabili.

Configurare Chaos Mesh nel cluster del servizio Azure Kubernetes

Prima di poter eseguire gli errori di Chaos Mesh in Chaos Studio, è necessario installare Chaos Mesh nel cluster del servizio Azure Kubernetes.

  1. Eseguire i comandi seguenti in una finestra di Azure Cloud Shell in cui è impostata la sottoscrizione attiva come sottoscrizione in cui viene distribuito il cluster del servizio Azure Kubernetes. Sostituire $RESOURCE_GROUP e $CLUSTER_NAME con il gruppo di risorse e il nome della risorsa cluster.

    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. Verificare che i pod Chaos Mesh siano installati eseguendo il comando seguente:

    kubectl get po -n chaos-testing
    

    L'output dovrebbe essere simile all'esempio seguente (chaos-controller-manager e uno o più chaos-daemon):

    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
    

È anche possibile usare le istruzioni di installazione nel sito Web Chaos Mesh.

Abilitare Chaos Studio nel cluster del servizio Azure Kubernetes

Chaos Studio non può inserire errori su una risorsa, a meno che tale risorsa non venga aggiunta prima a Chaos Studio. È possibile aggiungere una risorsa a Chaos Studio creando una destinazione e funzionalità nella risorsa. I cluster del servizio Azure Kubernetes hanno un solo tipo di destinazione (service-direct), ma altre risorse potrebbero avere fino a due tipi di destinazione. Un tipo di destinazione è per gli errori diretti dal servizio. Un altro tipo di destinazione è per gli errori basati su agente. Ogni tipo di errore di Chaos Mesh è rappresentato come una funzionalità come PodChaos, NetworkChaos e IOChaos.

  1. Apri il portale di Azure.

  2. Cercare Chaos Studio nella barra di ricerca.

  3. Selezionare Destinazioni e passare al cluster del servizio Azure Kubernetes.

    Screenshot that shows the Targets view in the Azure portal.

  4. Selezionare la casella di controllo accanto al cluster del servizio Azure Kubernetes. Selezionare Abilita destinazioni e quindi Selezionare Abilita destinazioni dirette dal menu a discesa.

    Screenshot that shows enabling targets in the Azure portal.

  5. Verificare che la risorsa desiderata sia elencata. Selezionare Rivedi e abilita, quindi Abilita.

  6. Viene visualizzata una notifica che indica che le risorse selezionate sono state abilitate correttamente.

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

Il cluster del servizio Azure Kubernetes è stato aggiunto a Chaos Studio. Nella visualizzazione Destinazioni è anche possibile gestire le funzionalità abilitate in questa risorsa. Selezionare il collegamento Gestisci azioni accanto a una risorsa per visualizzare le funzionalità abilitate per tale risorsa.

Creare un esperimento

È ora possibile creare l'esperimento. Un esperimento chaos definisce le azioni da eseguire sulle risorse di destinazione. Le azioni sono organizzate ed eseguite in passaggi sequenziali. L'esperimento chaos definisce anche le azioni che si desidera eseguire sui rami, che vengono eseguite in parallelo.

  1. Selezionare la scheda Esperimenti in Chaos Studio. In questa visualizzazione è possibile visualizzare e gestire tutti gli esperimenti di caos. Selezionare Crea>nuovo esperimento.

    Screenshot that shows the Experiments view in the Azure portal.

  2. Compilare la sottoscrizione, il gruppo di risorse e la posizione in cui si vuole distribuire l'esperimento chaos. Assegnare un nome all'esperimento. Selezionare Avanti: Progettazione esperimenti.

    Screenshot that shows adding basic experiment details.

  3. Si è ora nella finestra di progettazione dell'esperimento di Chaos Studio. La finestra di progettazione dell'esperimento consente di compilare l'esperimento aggiungendo passaggi, rami e errori. Assegnare un nome descrittivo al passaggio e al ramo e selezionare Aggiungi azione > Aggiungi errore.

    Screenshot that shows the experiment designer.

  4. Selezionare Chaos Mesh Pod Chaos del servizio Azure Kubernetes dall'elenco a discesa. Compilare Duration con il numero di minuti per cui si vuole che l'errore sia ultimo e jsonSpec con le informazioni seguenti:

    Per formulare Chaos Mesh jsonSpec:

    1. Vedere la documentazione di Chaos Mesh per un tipo di errore, ad esempio il tipo PodChaos.

    2. Formulare la configurazione YAML per tale tipo di errore usando la documentazione di Chaos Mesh.

      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. Rimuovere qualsiasi YAML all'esterno di (incluso il nome della spec proprietà della specifica) e rimuovere il rientro dei dettagli della specifica. Il duration parametro non è necessario, ma viene usato se specificato. In questo caso, rimuoverlo.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. Usare un convertitore YAML-to-JSON simile a questo per convertire Chaos Mesh YAML in JSON e ridurlo al minimo.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. Incollare il codice JSON ridotto a icona nel campo jsonSpec nel portale.

  5. Selezionare Avanti: Risorse di destinazione.

    Screenshot that shows fault properties.

  6. Selezionare il cluster del servizio Azure Kubernetes e selezionare Avanti.

    Screenshot that shows adding a target.

  7. Verificare che l'esperimento sia corretto e selezionare Rivedi e crea crea>.

    Screenshot that shows reviewing and creating an experiment.

Concedere l'autorizzazione dell'esperimento al cluster del servizio Azure Kubernetes

Quando si crea un esperimento chaos, Chaos Studio crea un'identità gestita assegnata dal sistema che esegue errori sulle risorse di destinazione. Questa identità deve avere le autorizzazioni appropriate per la risorsa di destinazione affinché l'esperimento venga eseguito correttamente.

  1. Passare al cluster del servizio Azure Kubernetes e selezionare Controllo di accesso (IAM).

    Screenshot that shows the AKS Overview page.

  2. Seleziona Aggiungi>Aggiungi assegnazione ruolo.

    Screenshot that shows the Access control (IAM) overview.

  3. Cercare servizio Azure Kubernetes Ruolo Amministrazione cluster e selezionare il ruolo. Selezionare Avanti.

    Screenshot that shows assigning the AKS Cluster Admin role.

  4. Scegliere Seleziona membri e cercare il nome dell'esperimento. Selezionare l'esperimento e scegliere Seleziona. Se nello stesso tenant sono presenti più esperimenti con lo stesso nome, il nome dell'esperimento viene troncato con caratteri casuali aggiunti.

    Screenshot that shows adding an experiment to a role.

  5. Selezionare Rivedi e assegna rivedi e assegna>.

Eseguire l'esperimento

È ora possibile eseguire l'esperimento. Per visualizzare l'effetto, è consigliabile aprire la panoramica del cluster del servizio Azure Kubernetes e passare a Insights in una scheda del browser separata. I dati attivi per il conteggio dei pod attivi mostrano l'effetto dell'esecuzione dell'esperimento.

  1. Nella visualizzazione Esperimenti selezionare l'esperimento. Selezionare Start>OK.

    Screenshot that shows starting an experiment.

  2. Quando lo stato diventa In esecuzione, selezionare Dettagli per l'esecuzione più recente in Cronologia per visualizzare i dettagli dell'esperimento in esecuzione.

Passaggi successivi

Dopo aver eseguito un esperimento diretto del servizio Chaos Mesh del servizio Azure Kubernetes, è possibile: