Создание эксперимента хаоса, использующего ошибку "Сетка хаоса" для убийства модулей pod AKS с помощью портал Azure

Вы можете использовать эксперимент хаоса для проверки устойчивости приложения к сбоям, вызвав эти сбои в управляемой среде. В этой статье вы вызываете периодические Служба Azure Kubernetes сбои pod в пространстве имен с помощью эксперимента хаоса и Azure Chaos Studio. Выполнение этого эксперимента поможет защититься от недоступности службы, если возникают нерегулярные сбои.

В Студии Chaos Studio используется Платформа разработки хаоса с открытым исходным кодом для Kubernetes, чтобы внедрить ошибки в кластер AKS. Ошибки в сетке Хаоса — это прямые сбои службы , требующие установки Сетки Хаоса в кластере AKS. Эти же действия можно использовать для настройки и запуска эксперимента для любого сбоя сетки хаоса AKS.

Необходимые компоненты

Ограничения

  • С частными кластерами можно использовать ошибки Сетки Хаоса, настроив внедрение виртуальной сети в Chaos Studio. Все команды, выданные частному кластеру, включая действия, описанные в этой статье по настройке Chaos Mesh, должны выполнять инструкции по частному кластеру. Рекомендуемые методы включают подключение из виртуальной машины в той же виртуальной сети или использование функции вызова команды AKS.
  • Ошибки сетки хаоса AKS поддерживаются только в пулах узлов Linux.
  • В настоящее время ошибки Сетки Хаоса не работают, если в кластере AKS отключены локальные учетные записи.
  • Если кластер AKS настроен только для разрешения авторизованных диапазонов IP-адресов, необходимо разрешить диапазоны IP-адресов Студии Chaos Studio. Их можно найти, запросив ChaosStudioтег службы с помощью API обнаружения тегов службы или скачиваемых JSON-файлов.

Настройка Сетки Хаоса в кластере AKS

Прежде чем запускать ошибки Сетки Хаоса в Среде Chaos Studio, необходимо установить Сетку Хаоса в кластере AKS.

  1. Выполните следующие команды в окне Azure Cloud Shell , где у вас есть активная подписка, в которой развернут кластер AKS. $CLUSTER_NAME Замените $RESOURCE_GROUP и на группу ресурсов и имя ресурса кластера.

    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. Убедитесь, что модули pod Chaos Mesh установлены, выполнив следующую команду:

    kubectl get po -n chaos-testing
    

    Вы должны увидеть выходные данные, аналогичные следующему примеру (диспетчер-хаос-контроллер и один или несколько хаос-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
    

Инструкции по установке также можно использовать на веб-сайте Chaos Mesh.

Включение Chaos Studio в кластере AKS

Студия Chaos Studio не может вводить ошибки к ресурсу, если только этот ресурс не добавляется в Chaos Studio в первую очередь. Вы добавите ресурс в Chaos Studio, создав целевой объект и возможности ресурса. Кластеры AKS имеют только один целевой тип (service-direct), но другие ресурсы могут иметь до двух целевых типов. Один из целевых типов — для ошибок с прямой службой. Другой целевой тип — для сбоев на основе агента. Каждый тип ошибки "Сетка хаоса" представлен как возможность, например PodChaos, NetworkChaos и IOChaos.

  1. Откройте портал Azure.

  2. Найдите Студию Chaos Studio в строке поиска.

  3. Выберите целевые объекты и перейдите в кластер AKS.

    Screenshot that shows the Targets view in the Azure portal.

  4. Выберите проверка box рядом с кластером AKS. Выберите "Включить целевые объекты", а затем выберите "Включить целевые объекты для прямого обслуживания" в раскрывающемся меню.

    Screenshot that shows enabling targets in the Azure portal.

  5. Убедитесь, что указан нужный ресурс. Выберите "Рецензирование и включение", а затем включите.

  6. Появится уведомление, указывающее, что выбранные ресурсы были успешно включены.

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

Теперь вы успешно добавили кластер AKS в Chaos Studio. В представлении "Целевые объекты " можно также управлять возможностями, включенными в этом ресурсе. Выберите ссылку "Управление действиями" рядом с ресурсом, чтобы отобразить возможности, включенные для этого ресурса.

Создание эксперимента

Теперь можно создать эксперимент. Эксперимент хаоса определяет действия, которые необходимо предпринять для целевых ресурсов. Действия упорядочены и выполняются последовательно. Эксперимент хаоса также определяет действия, которые необходимо предпринять против ветвей, которые выполняются параллельно.

  1. Перейдите на вкладку "Эксперименты" в Chaos Studio. В этом представлении вы можете просматривать все эксперименты хаоса и управлять ими. Выберите "Создать>эксперимент".

    Screenshot that shows the Experiments view in the Azure portal.

  2. Заполните подписку, группу ресурсов и расположение, где нужно развернуть эксперимент хаоса. Присвойте эксперименту имя. Нажмите кнопку Далее: конструктор экспериментов.

    Screenshot that shows adding basic experiment details.

  3. Теперь вы находитесь в конструкторе экспериментов Chaos Studio. Конструктор экспериментов позволяет создавать эксперимент, добавляя шаги, ветви и ошибки. Присвойте понятное имя шагу и ветви и нажмите кнопку "Добавить действие>", чтобы добавить ошибку.

    Screenshot that shows the experiment designer.

  4. Выберите AKS Chaos Mesh Pod Chaos в раскрывающемся списке. Введите значение "Длительность" с количеством минут, в течение которого требуется, чтобы ошибка длилась и jsonSpec, используя следующие сведения:

    Чтобы сформулировать сетку jsonSpecХаоса:

    1. См. документацию по Сетке Хаоса для типа сбоя, например типа PodChaos.

    2. Сформулируйте конфигурацию YAML для этого типа сбоя с помощью документации по Сетке Хаоса.

      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. Удалите любой YAML за пределами spec (включая имя свойства спецификации) и удалите отступ сведений о спецификации. Параметр duration не нужен, но используется, если он указан. В этом случае удалите его.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. Используйте преобразователь YAML-to-JSON, как этот, для преобразования YAML-сетки Хаоса в JSON и свести к минимуму его.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. Вставьте свернутый JSON в поле jsonSpec на портале.

  5. Нажмите кнопку "Далее" — целевые ресурсы.

    Screenshot that shows fault properties.

  6. Выберите кластер AKS и нажмите кнопку "Далее".

    Screenshot that shows adding a target.

  7. Убедитесь, что эксперимент выглядит правильно и выберите "Просмотр и создание".>

    Screenshot that shows reviewing and creating an experiment.

Предоставление разрешения эксперимента кластеру AKS

При создании эксперимента хаоса Студия Chaos Studio создает управляемое удостоверение, назначаемое системой, которое выполняет ошибки в целевых ресурсах. Это удостоверение должно быть предоставлено соответствующим разрешениям целевому ресурсу для успешного выполнения эксперимента.

  1. Перейдите в кластер AKS и выберите элемент управления доступом (IAM).

    Screenshot that shows the AKS Overview page.

  2. Выберите Добавить>Добавить назначение ролей.

    Screenshot that shows the Access control (IAM) overview.

  3. Найдите роль Служба Azure Kubernetes Администратор кластера Администратор и выберите роль. Выберите Далее.

    Screenshot that shows assigning the AKS Cluster Admin role.

  4. Выберите элементы и найдите имя эксперимента. Выберите эксперимент и нажмите кнопку "Выбрать". Если в одном клиенте имеется несколько экспериментов с одинаковым именем, имя эксперимента усечено случайными символами.

    Screenshot that shows adding an experiment to a role.

  5. Выберите "Рецензирование" и "Назначить>проверку" и "Назначить".

Запуск эксперимента

Теперь вы готовы к выполнению эксперимента. Чтобы увидеть эффект, рекомендуется открыть обзор кластера AKS и перейти к Аналитика на отдельной вкладке браузера. Динамические данные для активного числа pod показывают эффект выполнения эксперимента.

  1. В представлении "Эксперименты" выберите эксперимент. Нажмите кнопку "Пуск>ОК".

    Screenshot that shows starting an experiment.

  2. Когда состояние изменяется на "Выполнение", выберите "Сведения" для последнего запуска в разделе "Журнал", чтобы просмотреть сведения о выполняемом эксперименте.

Следующие шаги

Теперь, когда вы выполнили прямой эксперимент службы akS Chaos Mesh, вы готовы: