Creare un esperimento chaos che usa un errore Chaos Mesh per terminare 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 dei pod del servizio Azure Kubernetes 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

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 MyManagedCluster e MyResourceGroup con il nome del cluster e del gruppo di risorse.

    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. 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 che mostra la visualizzazione Destinazioni nel portale di Azure.

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

    Screenshot che mostra l'abilitazione delle destinazioni nel portale di Azure.

  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 che mostra la notifica che mostra che la destinazione è stata abilitata correttamente.

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 che mostra la visualizzazione Esperimenti nel portale di Azure.

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

    Screenshot che mostra l'aggiunta di dettagli dell'esperimento di base.

  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 che mostra la finestra di progettazione dell'esperimento.

  4. Selezionare Chaos Mesh Pod Chaos del servizio Azure Kubernetes nell'elenco a discesa. Compilare Durata con il numero di minuti per cui si vuole far durare l'errore 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 del spec (incluso il nome della proprietà della specifica) e rimuovere il rientro dei dettagli della specifica. Il parametro duration 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 che mostra le proprietà di errore.

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

    Screenshot che mostra l'aggiunta di una destinazione.

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

    Screenshot che mostra la revisione e la creazione di un esperimento.

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 che mostra la pagina Panoramica del servizio Azure Kubernetes.

  2. Seleziona Aggiungi>Aggiungi assegnazione ruolo.

    Screenshot che mostra la panoramica del controllo di accesso (IAM).

  3. Cercare ruolo di amministratore del cluster del servizio Azure Kubernetes e selezionare il ruolo. Selezionare Avanti.

    Screenshot che mostra l'assegnazione del ruolo di amministratore del cluster del servizio Azure Kubernetes.

  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 che mostra l'aggiunta di un esperimento a un ruolo.

  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 Informazioni dettagliate in una scheda del browser separata. I dati attivi per il numero di pod attivi mostrano l'effetto dell'esecuzione dell'esperimento.

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

    Screenshot che mostra l'avvio di un esperimento.

  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: