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


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

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

Примечание

Для AKSe версии 0.75.3 и выше приведенные aks-engine ниже команды будут начинаться с aks-engine-azurestack , а не aks-engine.

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

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

Инструкции по установке обработчика AKS с помощью GoFish см. здесь.

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

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

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

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

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

Извлечение журналов

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

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

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

Вам потребуется действительный закрытый ключ SSH для установки сеанса SSH на узлах кластера Linux. Учетные данные 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-logs для 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 Нет URL-адрес SAS учетной записи хранения Azure для отправки собранных журналов.

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

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

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

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

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

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

Сообщение о проблеме на сайте 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 из неработоспособного узла.

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