Поделиться через


Устранение неполадок Служба Azure Kubernetes кластерах или узлах в состоянии сбоя

В этой статье описывается устранение неполадок кластера или узла Microsoft Служба Azure Kubernetes (AKS), который входит в состояние сбоя.

Основные причины

Ниже приведены распространенные причины сбоя кластера или пула узлов:

Причина Справочные материалы
Ошибка подготовки расширения пользовательского скрипта (CSE) виртуальной машины Устранение неполадок, вызванных ошибками CSE, не готовыми к работе с узлом
Ключи ресурсов Azure недоступны
Сбой выделения виртуальной машины из-за отсутствия зональной или региональной емкости
Сбой выделения виртуальной машины из-за превышения квоты ядра Ошибка квоты
Ограничения, введенные клиентом
Проблемы с рабочей нагрузкой

Базовое устранение распространенных ошибок, приводящих к сбою кластера или узла

В следующей таблице описаны некоторые распространенные ошибки, которые могут привести к возникновению сбоя кластера или узла, их описаниям и основным методам устранения этих ошибок.

Ошибка Описание Метод устранения неполадок
OutboundConnFailVMExtensionError Эта ошибка означает, что расширение виртуальной машины не удается установить или обновить из-за отсутствия исходящего подключения. Проверьте правила группы безопасности сети (NSG) и параметры брандмауэра виртуальной машины или масштабируемого набора виртуальных машин. Убедитесь, что масштабируемый набор виртуальных машин или виртуальных машин может получить доступ к этим конечным точкам: https://aka.ms/aks/outbound, , https://aka.ms/aks/sshhttps://aka.ms/aks/agentи https://aka.ms/aks/containerinsights.
Ошибка очистки Эта ошибка означает, что узел не удается выполнить очистку до операции обновления. Проверьте состояние и события pod на узле с помощью команд kubectl: kubectl get pods --all-namespaces -o wide и kubectl describe pod <pod-name> -n <namespace>. Найдите все модули pod, зависшие в завершенном или неизвестном состоянии, или с любыми ошибками или предупреждениями в событиях. Возможно, потребуется принудительно удалить модули pod или перезапустить службу kubelet на узле.
Ошибка SubscriptionNotRegistered Эта ошибка означает, что подписка не зарегистрирована для использования поставщика ресурсов AKS. Зарегистрируйте подписку az provider register --namespace Microsoft.ContainerService с помощью команды.
Ошибки RequestDisallowedByPolicy Эта ошибка означает, что операция блокируется политикой, применяемой к подписке или группе ресурсов. Просмотрите сведения о политике и области назначения политик. Чтобы разрешить операцию, может потребоваться изменить или исключить политику.
Ошибка QuotaExceeded Эта ошибка указывает, что операция превышает ограничение квоты для типа ресурса или региона. Проверьте текущее ограничение использования квоты и квоты для типа ресурса или региона с помощью портал Azure, Azure CLI или Azure PowerShell. Возможно, потребуется удалить некоторые неиспользуемые ресурсы или запросить увеличение квоты.
Ошибка PublicIPCountLimitReached Эта ошибка означает, что операция достигает максимального количества общедоступных IP-адресов, которые можно создать в подписке или регионе. Проверьте текущее использование общедоступного IP-адреса и ограничение для подписки или региона с помощью портал Azure, Azure CLI или Azure PowerShell. Возможно, потребуется удалить некоторые неиспользуемые общедоступные IP-адреса или запросить увеличение ограничения общедоступного IP-адреса.
Ошибка OverconstrainedAllocationRequest Эта ошибка означает, что операция не может выделить запрошенный размер виртуальной машины в регионе. Проверьте доступность размера виртуальной машины в регионе с помощью портал Azure, Azure CLI или Azure PowerShell. Может потребоваться выбрать другой размер виртуальной машины или другой регион.
Ошибка ReadOnlyDisabledSubscription Эта ошибка означает, что подписка в настоящее время отключена и установлена только для чтения. Проверьте и измените разрешения подписки, так как подписка может быть приостановлена из-за проблем с выставлением счетов, просроченных кредитов или нарушений политики.

Базовое устранение других возможных проблем, приводящих к сбою кластера или узла

В этой таблице описываются другие возможные проблемы, которые могут привести к входу кластера или узла в состояние сбоя, их описания и решения для устранения этих проблем.

Проблема Описание Решение
Размер подсети слишком мал Операция не может создать или обновить кластер, так как подсеть не имеет достаточно места для требуемого количества узлов. Удалите пул узлов и создайте новый с большим размером подсети с помощью портал Azure, Azure CLI или Azure PowerShell.
Виртуальная сеть заблокирована Операция не может общаться с сервером API кластера или плоскостью управления Kubernetes, так как брандмауэр или настраиваемая система доменных имен (DNS) блокирует исходящие подключения с узлов. Разрешите трафик узла в брандмауэре и настройте разрешение DNS в Azure с помощью портал Azure, Azure CLI или Azure PowerShell.
Проблемы PDB Операция не может обновить кластер, так как PDB остановил удаление одного или нескольких модулей pod. PDB — это ресурс, ограничивающий количество модулей pod, которые могут быть добровольно завершены в течение определенного периода. Временно удалите PDB, примирите кластер и снова добавьте PDB с помощью средства командной строки kubectl.
Проблемы с инфраструктурой Операция не может обновить кластер из-за внутренней проблемы со службой Azure Resource Manager (ARM), которая управляет ресурсами в Azure. Выполните выверку пула агентов для каждого пула узлов и выверку управляемого кластера с помощью Azure CLI или Azure PowerShell.
Ошибки сервера API Операция не может связаться с сервером API кластера или плоскостью управления Kubernetes из-за сбоя или ошибки. Сообщите об этом группе поддержки AKS и укажите соответствующие журналы и диагностические сведения. Журналы и диагностические сведения можно получить с помощью портал Azure, Azure CLI или Azure PowerShell.

Примечание.

  • Операция, указанная в предыдущей таблице, ссылается на любую операцию обновления (PUT), активированную с стороны клиента.
  • В Kubernetes есть компонент в контроллере. Это обеспечивает фактическое состояние мира, включая состояние кластера и потенциально внешние состояния, такие как запуск контейнеров для Kubelet или подсистем балансировки нагрузки для поставщика облачных служб. Он соответствует требуемому состоянию, указанному в объекте. Этот процесс выравнивания является ключевой функцией контроллера. Для AKS этот компонент гарантирует, что состояние кластера AKS соответствует требуемой конфигурации. Чтобы активировать его вручную, выполните команду az resource update --ids <AKS cluster id>. Идентификатор кластера AKS можно получить, выполнив команду az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Если существуют какие-либо различия между фактическими и требуемыми состояниями, выполните необходимые действия, чтобы исправить эти несоответствия.

Проверка состояния подготовки

Чтобы проверить состояние кластера, выберите "Проверка состояния подготовки". Затем отображается состояние подготовки кластера и пула агентов.

Снимок экрана: параметр

Сценарий 1. Кластер находится в состоянии сбоя

Чтобы устранить эту проблему, получите операцию, которая вызывает сбой и определите ошибку. Ниже приведены два распространенных сбоя операции, которые могут привести к сбою кластера:

  • Не удалось создать кластер
  • Не удалось выполнить обновление кластера

Если недавно созданный или обновленный кластер находится в состоянии сбоя, используйте следующие методы для устранения неполадок:

Просмотр журнала действий для отказоустойчивого кластера с помощью портал Azure

Чтобы просмотреть журналы действий для отказоустойчивого кластера из портал Azure, выполните следующие действия.

  1. В портал Azure перейдите на страницу групп ресурсов и выберите группу ресурсов, содержащую кластер.

  2. На странице обзора выберите имя кластера из списка ресурсов.

  3. На странице кластера выберите журнал действий в меню слева.

  4. На странице журнала действий можно фильтровать события по состоянию, timespan, событиям, инициированным и категории событий. Например, можно выбрать "Сбой" в раскрывающемся списке "Состояние ", чтобы просмотреть только события сбоя.

    Снимок экрана: фильтрация событий на странице

  5. Чтобы проверить сведения о событии, выберите имя события из списка. Откроется новая область с сводкой событий, свойствами и данными JSON. Вы также можете скачать данные JSON в виде файла.

  6. Чтобы проверить код ошибки и сообщение, связанное с событием, прокрутите вниз до раздела "Состояние " в сводке событий. Сведения об ошибках также можно найти в разделах свойств и данных JSON.

Просмотр журнала действий для отказоустойчивого кластера с помощью Azure CLI

Если вы предпочитаете использовать Azure CLI для просмотра журнала действий для отказоустойчивого кластера, выполните следующие действия.

  1. Установите Azure CLI на компьютере и войдите в систему с помощью учетной записи Azure.

  2. Выведите список групп ресурсов в подписке с помощью az group list команды и найдите имя группы ресурсов, содержащей кластер.

  3. Выведите список ресурсов в группе ресурсов с помощью az resource list команды с --resource-group параметром и найдите имя кластера.

  4. Вывод списка журналов действий кластера с помощью az monitor activity-log list команды с параметрами и --resource параметрами--resource-group. Можно также использовать --statusпараметры , и --start-time--end-time--caller--filter параметры для фильтрации событий по разным критериям. Например, можно использовать --status Failed для просмотра только неудачных событий.

  5. Отображение сведений о конкретном событии с помощью az monitor activity-log show команды с --resource-group--resourceпараметрами и --event-id параметрами. Идентификатор события можно найти в выходных данных предыдущей команды. Выходные данные включают сводку событий, свойства и данные JSON. Вы также можете использовать --output параметр для изменения формата выходных данных.

  6. Чтобы просмотреть код ошибки и сообщение, связанное с событием, найдите statusMessage поле в выходных данных команды. Сведения об ошибках также можно найти в разделах свойств и данных JSON.

    Снимок экрана: данные JSON.

Использование функции диагностики и решения проблем AKS для отказоустойчивого кластера

В портал Azure перейдите к ресурсу кластера AKS и выберите "Диагностика и решение проблем" в меню слева. Вы увидите список категорий и сценариев, которые можно выбрать для выполнения диагностических проверок и получения рекомендуемых решений.

В Azure CLI используйте az aks collect команду с --name параметрами для --resource-group сбора диагностических данных с узлов кластера. Можно также использовать --storage-account параметры и --sas-token параметры для указания учетной записи служба хранилища Azure, в которой будут отправляться данные. Выходные данные включают ссылку на колонку "Диагностика и решение проблем ", где можно просмотреть результаты и предлагаемые действия.

В колонке "Диагностика и решение проблем " можно выбрать "Проблемы кластера" в качестве категории. Если обнаружены какие-либо проблемы, вы увидите список возможных решений, которые можно выполнить для их устранения.

Снимок экрана: возможные решения на портале

Сценарий 2. Узел находится в состоянии сбоя

В редких случаях операция отсоединения дисков Azure может частично завершиться ошибкой, которая оставляет виртуальную машину узла в состоянии сбоя.

Чтобы устранить эту проблему, вручную обновите состояние виртуальной машины с помощью одного из следующих методов:

  • Для кластера, основанного на группе доступности, выполните следующую команду az vm update :

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • Для кластера, основанного на масштабируемом наборе виртуальных машин, выполните следующую команду az vmss update-instances :

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

Сценарий 3. Пул узлов находится в состоянии сбоя

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

Для устранения этой проблемы выполните следующие действия.

  1. Проверьте состояние пула узлов с помощью az aks nodepool show команды. Если состояние подготовки равно Failed, в выходных данных отображается сообщение об ошибке и код.
  2. Проверьте состояние масштабируемого набора виртуальных машин или группы доступности с помощью az vmss show команды или az vm availability-set show команды. Если состояние подготовки равно Failed, в выходных данных отображается сообщение об ошибке и код.
  3. Проверьте состояние отдельной виртуальной машины в пуле узлов с помощью az vmss list-instances команды или az vm list команды. Если любая виртуальная машина находится в состоянии Failed или Unhealthy находится в состоянии, в выходных данных отображается сообщение об ошибке и код.
  4. Проверьте журнал действий и параметр диагностики масштабируемого набора виртуальных машин или группы доступности, чтобы узнать, являются ли события или оповещения, указывающие на причину сбоя. Вы можете использовать портал Azure, Azure CLI или API Azure Monitor для доступа к журналу действий и параметру диагностики.
  5. Проверьте квоту и емкость региона и подписки, в которой развернут пул узлов. Для проверки квоты и емкости можно использовать az vm list-usage команду или портал Azure. Если достигнута квота или ограничение емкости, можно запросить увеличение или удаление некоторых неиспользуемых ресурсов.
  6. Проверьте назначения политик и ролей пула узлов. Вы можете использовать az policy команды и az role команды или портал Azure для проверки определений политик, назначений, соответствия и исключений. Вы также можете проверить назначения ролей и разрешения пула узлов с помощью az role assignment команды или портал Azure.
  7. Проверьте блокировки ресурсов пула узлов. Для проверки уровня блокировки, области и заметок можно использовать az lock команду или портал Azure. При необходимости можно также удалить или обновить блокировку.

Другие средства ведения журнала и диагностики

Если предыдущие методы устранения неполадок не устраняют проблему, можно использовать следующие средства ведения журнала и диагностики для сбора дополнительных сведений и определения первопричины:

  • Azure Monitor для контейнеров:

    Эта служба собирает и анализирует метрики и журналы из кластеров AKS и узлов. Azure Monitor для контейнеров может отслеживать работоспособность кластера и узла, производительность и доступность. Вы также можете использовать его для просмотра журналов контейнеров, журналов kubelet и журналов диагностики загрузки узла.

  • AKS Periscope

    Это средство собирает журналы узлов и модулей pod, сведения о сети и конфигурацию кластера из кластера AKS и отправляет их в учетную запись хранения Azure. Это средство поможет вам устранить распространенные проблемы с кластером, такие как разрешение DNS, сетевое подключение и состояние узла. Вы также можете использовать его для создания запроса на поддержку с собранными журналами, подключенными.

  • Диагностика AKS

    Это средство выполняет ряд проверок кластеров AKS и узлов, а также предоставляет рекомендации и шаги по исправлению распространенных проблем. Это средство поможет вам устранить проблемы, связанные с созданием кластера, обновлением, масштабированием, сетью, хранилищем и безопасностью. Его также можно использовать для создания запроса на поддержку с присоединенными результатами диагностики.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.