Cree un experimento de caos que use un error de Chaos Mesh para acabar con los pods de AKS con Azure Portal

Puede usar un experimento de caos para comprobar que la aplicación es resistente a los errores provocando esos errores en un entorno controlado. En este artículo, provocará errores periódicos de pods de Azure Kubernetes Service (AKS) en un espacio de nombres mediante un experimento de caos y Azure Chaos Studio. La ejecución de este experimento puede ayudarle a defenderse contra la falta de disponibilidad del servicio cuando hay errores esporádicos.

Chaos Studio usa Chaos Mesh, una plataforma gratuita de ingeniería de caos de código abierto para Kubernetes, para insertar errores en un clúster de AKS. Los errores de Chaos Mesh son errores directos de servicio que requieren que Chaos Mesh esté instalado en el clúster de AKS. Puede usar estos mismos pasos para configurar y ejecutar un experimento para cualquier error de Chaos Mesh de AKS.

Requisitos previos

Limitaciones

  • Puede usar errores de Chaos Mesh con clústeres privados mediante la configuración de la inserción de red virtual en Chaos Studio. Los comandos emitidos en el clúster privado, incluidos los pasos de este artículo para configurar Chaos Mesh, deben seguir las instrucciones del clúster privado. Entre los métodos recomendados se incluyen la conexión desde una máquina virtual en la misma red virtual o mediante la característica de invocación de comandos de AKS.
  • Los errores de Chaos Mesh de AKS solo se admiten en grupos de nodos de Linux.
  • Actualmente, los errores de Chaos Mesh no funcionan si el clúster de AKS tiene cuentas locales deshabilitadas.
  • Si el clúster de AKS está configurado para permitir solo intervalos IP autorizados, debe permitir los intervalos IP de Chaos Studio. Puede encontrarlos consultando la etiqueta de ChaosStudioservicio con la API de detección de etiquetas de servicio o archivos JSON descargables.

Configuración de Chaos Mesh en el clúster de AKS

Para poder ejecutar errores de Chaos Mesh en Chaos Studio, debe instalar Chaos Mesh en el clúster de AKS.

  1. Ejecute los siguientes comandos en una ventana Azure Cloud Shell donde tenga la suscripción activa establecida para que sea la suscripción donde se implementa el clúster de AKS. Reemplace $RESOURCE_GROUP y $CLUSTER_NAME por el grupo de recursos y asigne un nombre al recurso del clúster.

    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. Ejecute el siguiente comando para comprobar que los pods de Chaos Mesh están instalados:

    kubectl get po -n chaos-testing
    

    Debería ver una salida similar al ejemplo siguiente (un chaos-controller-manager y uno o varios demonios de caos):

    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
    

También puede usar las instrucciones de instalación en el sitio web de Chaos Mesh.

Habilitación de Chaos Studio en el clúster de AKS

Chaos Studio no puede insertar errores en un recurso a menos que ese recurso se agregue primero a Chaos Studio. Para agregar un recurso a Chaos Studio, cree un destino y funcionalidades en el recurso. Los clústeres de AKS solo tienen un tipo de destino (directo de servicio), pero otros recursos pueden tener hasta dos tipos de destino. Un tipo de destino es para errores directos del servicio. Otro tipo de destino es para errores basados en agente. Cada tipo de error de Chaos Mesh se representa como una funcionalidad como PodChaos, NetworkChaos e IOChaos.

  1. Abra Azure Portal.

  2. Busque Chaos Studio en la barra de búsqueda.

  3. Seleccione Destinos y vaya al clúster de AKS.

    Screenshot that shows the Targets view in the Azure portal.

  4. Active la casilla situada junto al clúster de AKS. Seleccione Enable targets (Habilitar destinos) y, a continuación, seleccione Enable service-direct targets (Habilitar destinos directos de servicio) en el menú desplegable.

    Screenshot that shows enabling targets in the Azure portal.

  5. Confirme que el recurso deseado aparece en la lista. Seleccione Revisar y habilitary, después, Habilitar.

  6. Aparece una notificación que indica que los recursos seleccionados se habilitaron correctamente.

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

Ahora ha agregado correctamente el clúster de AKS a Chaos Studio. En la vista Destinos , también puede administrar las funcionalidades habilitadas en este recurso. Seleccione el vínculo Administrar acciones junto a un recurso para mostrar las funcionalidades habilitadas para ese recurso.

Creación de un experimento

Ahora puede crear el experimento. Un experimento de caos define las acciones que desea realizar en los recursos de destino. Las acciones se organizan y ejecutan en pasos secuenciales. El experimento de caos también define las acciones que desea realizar en las ramas, que se ejecutan en paralelo.

  1. Seleccione la pestaña Experimentos en Chaos Studio. En esta vista, puede ver y administrar todos los experimentos de caos. Seleccione Crear>Experimento.

    Screenshot that shows the Experiments view in the Azure portal.

  2. Rellene la Suscripción,el Grupo de recursos y la Ubicación donde desea implementar el experimento de caos. Ponga un nombre al experimento. Seleccione Siguiente: Diseñador de experimentos.

    Screenshot that shows adding basic experiment details.

  3. Ahora está en el diseñador de experimentos de Chaos Studio. El diseñador de experimentos permite compilar el experimento mediante la adición de pasos, ramas y errores. Asigne un nombre descriptivo a su paso y rama y seleccione Agregar acción > Agregar error.

    Screenshot that shows the experiment designer.

  4. Seleccione AKS Chaos Mesh Pod Chaos en la lista desplegable. Rellene Duración con el número de minutos que desea que el error dure y jsonSpec con la siguiente información:

    Para formular chaos Mesh jsonSpec:

    1. Consulte la documentación de Chaos Mesh para obtener un tipo de error, por ejemplo, el tipo PodChaos.

    2. Formule la configuración de YAML para ese tipo de error mediante la documentación de 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. Quite cualquier YAML fuera de (incluido el nombre de spec la propiedad de especificación) y quite la sangría de los detalles de la especificación. El duration parámetro no es necesario, pero se usa si se proporciona. En este caso, quítelo.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. Use un convertidor de YAML a JSON como este para convertir el YAML de Chaos Mesh a JSON y minimizarlo.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. Pegue el JSON minimizado en el campo jsonSpec del portal.

  5. Haga clic en Siguiente: Recursos de destino.

    Screenshot that shows fault properties.

  6. Seleccione el clúster de AKS y seleccione Siguiente.

    Screenshot that shows adding a target.

  7. Compruebe que el experimento es correcto y seleccione Revisar y crear>crear.

    Screenshot that shows reviewing and creating an experiment.

Concesión del permiso del experimento al clúster de AKS

Al crear un experimento de caos, Chaos Studio crea una identidad administrada asignada por el sistema que ejecuta errores en los recursos de destino. Esta identidad debe tener los permisos adecuados en el recurso de destino para que el experimento se ejecute correctamente.

  1. Vaya al clúster de AKS y seleccione Control de acceso (IAM) .

    Screenshot that shows the AKS Overview page.

  2. Seleccione Agregar>Agregar asignación de roles.

    Screenshot that shows the Access control (IAM) overview.

  3. Busque el rol de administrador de clúster de Azure Kubernetes Service y seleccione el rol. Seleccione Siguiente.

    Screenshot that shows assigning the AKS Cluster Admin role.

  4. Elija Seleccionar miembros y busque el nombre del experimento. Seleccione el experimento y elija Seleccionar. Si hay varios experimentos en el mismo inquilino con el mismo nombre, el nombre del experimento se trunca con caracteres aleatorios agregados.

    Screenshot that shows adding an experiment to a role.

  5. Seleccione Revisar y asignar>Revisar y asignar.

Ejecutar el experimento

Ya está listo para ejecutar el experimento. Para ver el efecto, se recomienda abrir la información general del clúster de AKS y ir a Ideas en una pestaña independiente del explorador. Los datos dinámicos del recuento de pods activos muestran el efecto de ejecutar el experimento.

  1. En la vista Experimentos , seleccione el experimento. Seleccione Iniciar>aceptar.

    Screenshot that shows starting an experiment.

  2. Cuando el estado cambie a En ejecución, seleccione Detalles para la ejecución más reciente en Historial para ver los detalles del experimento en ejecución.

Pasos siguientes

Ahora que ha ejecutado un experimento directo del servicio Chaos Mesh de AKS, está listo para: