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


Базовое устранение неполадок при создании кластера AKS

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

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

Просмотр ошибок из Azure CLI

Если операция завершается ошибкой при попытке создания кластеров с помощью Azure CLI, выходные данные отображают сведения об ошибке. Ниже приведен пример команды и выходных данных Azure CLI:

# Create a cluster specifying subnet

az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS

Пример выходных данных:

It is highly recommended to use USER assigned identity (option --assign-identity)when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y`

(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Код ошибки и сообщение об ошибке можно определить из выходных данных. В этом случае они:

  • Код ошибки: ControlPlaneAddOnsNotReady
  • Сообщение об ошибке: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj.

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

Просмотр сведений об ошибке в портал Azure

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

Снимок экрана: добавление фильтра.

На странице "Журнал действий" найдите записи журнала, в которых в столбце имени операции отображается создание или обновление управляемого кластера.

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

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

  • Создание или обновление таблицы маршрутов
  • Создание или обновление группы безопасности сети
  • Обновление создания назначаемого пользователем удостоверения
  • Создание или обновление подсистемы балансировки нагрузки
  • Создание или обновление общедоступного IP-адреса
  • Создание назначения ролей
  • Обновление группы ресурсов

В этих записях подоперирования значение состояния выполнено успешно, а событие, инициированное полем, имеет значение AzureContainerService.

Снимок экрана: представление в журнале действий.

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

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

Снимок экрана: подробный журнал в формате JSON.

Ниже приведен пример подробного журнала в формате JSON:

{
     "status": {
        "value": "Failed",
        "localizedValue": "Failed"
    },
    "subStatus": {
        "value": "",
        "localizedValue": ""
    },
    "submissionTimestamp": "2024-08-30T10:06:07Z",
    "subscriptionId": "<subscriptionId>",
    "tenantId": "<tenantId>",
    "properties": {
        "statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}

Просмотр аналитических сведений о кластере

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

  1. В портал Azure найдите и выберите службы Kubernetes.

  2. Выберите имя кластера AKS.

  3. На панели навигации на странице кластера AKS выберите " Диагностика и решение проблем".

  4. На странице "Диагностика и решение проблем" выберите ссылку "Аналитика кластера". Средство аналитики кластера анализирует кластер, а затем предоставляет список его результатов в разделе "Наблюдения и решения" на странице "Аналитика кластеров".

  5. Выберите один из выводов, чтобы просмотреть дополнительные сведения о проблеме и ее возможных решениях.

Просмотр ресурсов в портал Azure

В портал Azure может потребоваться просмотреть ресурсы, созданные при создании кластера. Как правило, эти ресурсы находятся в группе ресурсов, имя которой начинается в MC_. Группа ресурсов управляемого кластера может иметь имя, например MC_MyResourceGroup_MyManagedCluster_location-code>.< Однако имя может отличаться, если вы создали кластер с помощью настраиваемой группы ресурсов кластера.

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

Предупреждение

Рекомендуется не изменять ресурсы в группе ресурсов MC_ . Это действие может негативно повлиять на кластер AKS.

Чтобы просмотреть состояние масштабируемого набора виртуальных машин, можно выбрать имя масштабируемого набора в списке ресурсов для группы ресурсов. У него может быть значение Name, похожее на aks-nodepool1-12345678-vmss, и значение типа масштабируемого набора виртуальных машин. Состояние масштабируемого набора отображается в верхней части страницы обзора пула узлов, а дополнительные сведения отображаются в заголовке Essentials. Если развертывание не выполнено, отображается состояние "Сбой".

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

Column Пример значения
Состояние Сбой подготовки
Уровень Ошибка
Код ProvisioningState/failed/VMExtensionProvisioningError

Выберите строку, чтобы просмотреть поле "Сообщение ". Это содержит еще больше сведений об этом сбое. Например, поле "Сообщение " для примера строки начинается в следующем тексте:

Виртуальная машина сообщила о сбое при обработке расширения vmssCSE. Сообщение об ошибке: "Включить сбой: не удалось выполнить команду: команда завершилась с состоянием выхода=50 [stdout] [stderr] 0 0 0 0 --:

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

Примечание.

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

Использование команд Kubectl

Для устранения ошибок в кластере используйте команды kubectl, чтобы получить сведения о ресурсах, развернутых в кластере. Для этого сначала войдите в кластер AKS:

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

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

Просмотр узлов кластера (kubectl get nodes)

Чтобы определить состояние узлов кластера, просмотрите узлы, выполнив kubectl get nodes команду. В этом примере узлы не сообщают в кластере:

$ kubectl get nodes

No resources found

Просмотр модулей pod в пространстве имен системы (kubectl get pod)

Просмотр модулей pod в пространстве имен kube-system также является хорошим способом устранения неполадок. Этот метод позволяет просматривать состояние системных модулей Pod Kubernetes. В этом примере мы введем kubectl get pods команду:

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

Описание состояния модуля pod (kubectl описать pod)

Описывая состояние модулей pod, вы можете просмотреть сведения о конфигурации и любые события, произошедшие на модулях pod. Выполните команду kubectl describe pods.

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

В выходных данных команды вы увидите, что модуль pod не может развернуться на узле, так как узлы недоступны.

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

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