Базовое устранение неполадок при создании кластера AKS
В этой статье описаны основные методы устранения неполадок, которые можно использовать, если вы не можете создать или развернуть кластер Microsoft Служба Azure Kubernetes (AKS).
Предварительные требования
Azure CLI (версия 2.0.59 или более поздняя версия).
Средство Kubernetes kubectl . Чтобы установить kubectl с помощью Azure CLI, выполните команду az aks install-cli .
Просмотр ошибок из 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:
{
"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 и отображается ли он там? Если это верно, вы можете создать аналитические сведения о кластере, которые помогут вам устранить неполадки. Чтобы получить доступ к этой функции, выполните следующие действия.
В портал Azure найдите и выберите службы Kubernetes.
Выберите имя кластера AKS.
На панели навигации на странице кластера AKS выберите " Диагностика и решение проблем".
На странице "Диагностика и решение проблем" выберите ссылку "Аналитика кластера". Средство аналитики кластера анализирует кластер, а затем предоставляет список его результатов в разделе "Наблюдения и решения" на странице "Аналитика кластеров".
Выберите один из выводов, чтобы просмотреть дополнительные сведения о проблеме и ее возможных решениях.
Просмотр ресурсов в портал 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.