Устранение неполадок с обработчиком AKS в Azure Stack Hub

При развертывании или работе с обработчиком AKS в Azure Stack Hub может возникнуть проблема. В этой статье рассматриваются действия по устранению неполадок при развертывании обработчика AKS. Соберите сведения о обработчике AKS, соберите журналы Kubernetes и просмотрите коды ошибок расширения пользовательских скриптов. Вы также можете открыть GitHub проблему для обработчика AKS.

Устранение неполадок с установкой обработчика AKS

Если при установке обработчика AKS произошел сбой, попробуйте установить его с помощью диспетчера пакетов GoFish. GoFish идентифицирует себя как Homebrew с кроссплатформенной поддержкой.

Инструкции по использованию GoFish для установки обработчика AKS см. в статье "Установка программы командной строки aks-engine"

Сбор журналов узлов и кластера

Инструкции по сбору журналов узлов и кластера см. в разделе "Получение журналов узлов и кластеров".

Предварительные требования

В этом руководстве предполагается, что вы уже скачали Azure CLI и обработчик AKS.

В этом руководстве также предполагается, что вы развернули кластер с помощью обработчика AKS. Дополнительные сведения см. в статье "Развертывание кластера Kubernetes с помощью обработчика AKS в Azure Stack Hub ".

Получение журналов

Эта aks-engine get-logs команда может быть полезна для устранения неполадок с кластером. Команда создает, собирает и скачивает набор файлов на рабочую станцию. Файлы включают конфигурацию узла, состояние кластера и конфигурацию, а также файлы журналов.

На высоком уровне: команда работает путем установки сеанса SSH в каждом узле, выполнения скрипта сбора журналов, который собирает и zip-файлы, а также скачивает файл .ZIP на локальный компьютер.

Аутентификация SSH

Чтобы установить сеанс SSH на узлах Linux кластера, вам потребуется действительный закрытый ключ SSH. Windows учетные данные хранятся в модели API и будут загружены из нее. Задайте windowsprofile.sshEnabled значение true, чтобы включить SSH в Windows узлах.

Отправка журналов в контейнер учетной записи хранения

После успешного получения журналов кластера обработчик AKS может сохранить их в контейнере учетной записи служба хранилища Azure, если задан необязательный параметр--upload-sas-url. Обработчик AKS ожидает, что имя контейнера будет частью предоставленного URL-адреса SAS. Ожидаемый формат : https://{blob-service-uri}/{container-name}?{sas-token}.

Примечание

служба хранилища учетные записи в пользовательских облаках с помощью поставщика удостоверений AD FS пока не поддерживаются.

Узлы не могут присоединиться к кластеру

По умолчанию aks-engine get-logs собирает журналы с узлов, которые успешно присоединились к кластеру. Чтобы собрать журналы с виртуальных машин, которые не смогли присоединиться к кластеру, установите флаг --vm-names:

--vm-name k8s-pool-01,k8s-pool-02

Использование для журналов get-engine aks-engine

Предположим, что у вас развернут кластер и модель API, которая изначально использовалась для развертывания этого кластера, хранится в _output/<dnsPrefix>/apimodel.jsonней, вы можете собирать журналы, выполняющие команду, например:

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

Параметры

Параметр Обязательно Описание
--location Да Расположение Azure группы ресурсов кластера.
--api-model Да Путь к созданной модели API для кластера.
--ssh-host Да Полное доменное имя или IP-адрес прослушивателя SSH, доступного ко всем узлам в кластере.
--linux-ssh-private-key Да Путь к закрытому ключу SSH, который можно использовать для создания удаленного сеанса на узлах Linux кластера.
--output-directory Нет Выходной каталог, производный от --api-model отсутствия.
--control-plane-only Нет Сбор журналов только с узлов уровня управления.
--vm-names Нет Собирают только журналы из указанных виртуальных машин (имена, разделенные запятыми).
--upload-sas-url Нет служба хранилища Azure URL-адрес SAS учетной записи для отправки собранных журналов.

Проверка кодов ошибок для расширения пользовательских скриптов

Обработчик AKS создает скрипт для каждого сервера Ubuntu в качестве ресурса для расширения пользовательских скриптов (CSE) для выполнения задач развертывания. Если скрипт выдает ошибку, он регистрирует ошибку./var/log/azure/cluster-provision.log Ошибки отображаются на портале. Код ошибки может быть полезен при анализе ситуации проблемы. Дополнительные сведения о кодах выхода CSE см. в разделе cse_helpers.sh.

Предоставление журналов Kubernetes сотруднику службы поддержки Майкрософт

Если после сбора и проверки журналов вы по-прежнему не можете устранить проблему, может потребоваться начать процесс создания запроса в службу поддержки и предоставить собранные журналы.

Оператор может объединять журналы, созданные вместе с другими системными журналами, которые могут потребоваться в службе поддержки Майкрософт. Оператор может сделать их доступными для корпорации Майкрософт.

Журналы Kubernetes можно предоставить несколькими способами:

  • Вы можете обратиться к оператору Azure Stack Hub. Оператор использует сведения из журналов, хранящихся в файле .ZIP, для создания обращения в службу поддержки.
  • Если у вас есть URL-адрес SAS для учетной записи хранения, в которой можно отправить журналы Kubernetes, можно включить следующую команду и пометить url-адресОМ SAS, чтобы сохранить журналы в учетной записи хранения:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    Инструкции см. в разделе "Отправка журналов в контейнер учетной записи хранения".
  • Если вы являетесь оператором облака, вы можете:

Сообщение о проблеме на сайте GitHub

Если не удается устранить ошибку развертывания, можно открыть GitHub проблему.

  1. Откройте проблему GitHub в репозитории обработчика AKS.

  2. Добавьте заголовок, используя следующий формат: ошибка CSE: exit code <INSERT_YOUR_EXIT_CODE>.

  3. Добавьте следующую информацию о проблеме:

    • Файл конфигурации кластера apimodel.json, из которого выполнялось развертывание. Перед публикацией в GitHub удалите все секреты и ключи.

    • Выходные данные следующей команды kubectlget nodes.

    • Содержимое /var/log/azure/cluster-provision.log неработоспособного узла.

Дальнейшие действия