Compartilhar via


Solução de problemas básicos de criação de cluster do AKS

Este artigo descreve os métodos básicos de solução de problemas a serem usados se você não conseguir criar ou implantar um cluster do AKS (Serviço de Kubernetes do Microsoft Azure) com êxito.

Pré-requisitos

Exibir erros da CLI do Azure

Se a operação falhar quando você tentar criar clusters usando a CLI do Azure, a saída exibirá informações de erro. Aqui está um exemplo de comando e saída da CLI do Azure:

# 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

Exemplo de saída:

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://zcusa.951200.xyz/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

Você pode identificar o código de erro e a mensagem de erro na saída. Neste caso, eles são:

  • Código de erro: ControlPlaneAddOnsNotReady
  • Mensagem de erro: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj.

Essas descrições geralmente contêm detalhes do que deu errado na criação do cluster e têm links para artigos que contêm ainda mais detalhes. Além disso, você pode usar nossos artigos de solução de problemas como referência, com base nos erros que a operação da CLI do Azure produz.

Exibir detalhes do erro no portal do Azure

Para investigar os erros de criação de cluster do AKS no portal do Azure, abra o Log de Atividades. Você pode filtrar os resultados para atender às suas necessidades. Para fazer isso, selecione Adicionar Filtro para adicionar mais propriedades ao filtro.

Captura de tela de como adicionar filtro.

Na página Log de Atividades , localize as entradas de log nas quais a coluna Nome da operação mostra Criar ou Atualizar Cluster Gerenciado.

A coluna Evento iniciado por mostra o usuário que executou a operação, que pode ser uma conta corporativa, uma conta de estudante ou uma identidade gerenciada do Azure.

Se a operação for bem-sucedida, o valor da coluna Status será Aceito. Você também verá entradas de suboperação para a criação dos componentes do cluster, como os seguintes nomes de operação:

  • Criar ou atualizar tabela de rotas
  • Criar ou atualizar o grupo de segurança de rede
  • Atualizar criação de identidade atribuída pelo usuário
  • Criar ou atualizar o balanceador de carga
  • Criar ou atualizar endereço IP público
  • Criar atribuição de função
  • Atualizar grupo de recursos

Nessas entradas de suboperação, o valor Status é Bem-sucedido e o campo Evento iniciado por é definido como AzureContainerService.

Captura de tela da exibição no Log de atividades.

E se ocorrer um erro? Nesse caso, o valor Status é Failed. Ao contrário das operações para criar componentes de cluster, você deve expandir as entradas de suboperação com falha para revisá-las. Os nomes de suboperação típicos são ações de política, como ação de política 'auditar' e ação de política 'auditIfNotExists'. Nem todas as suboperações falham necessariamente juntas. Você pode esperar ver alguns deles terem sucesso.

Selecione uma das suboperações com falha para investigá-la ainda mais. Selecione as guias Resumo, JSON e Histórico de Alterações para solucionar o problema. A guia JSON contém o texto de saída do erro no formato JSON e geralmente fornece as informações mais úteis.

Captura de tela do log detalhado no formato JSON.

Aqui está um exemplo do log detalhado no formato 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://zcusa.951200.xyz/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}

Exibir insights do cluster

O cluster foi criado no portal do Azure e está visível lá? Se isso for verdade, você poderá gerar insights de cluster que ajudarão você a solucionar problemas. Para acessar esse recurso, siga estas etapas:

  1. No portal do Azure, pesquise e selecione Serviços do Kubernetes.

  2. Selecione o nome do cluster do AKS.

  3. No painel de navegação da página do cluster do AKS, selecione Diagnosticar e resolver problemas.

  4. Na página Diagnosticar e resolver problemas, selecione o link Insights do cluster. A ferramenta de insights de cluster analisa seu cluster e fornece uma lista de suas descobertas na seção Observações e Soluções da página Insights de Cluster .

  5. Selecione uma das descobertas para exibir mais informações sobre um problema e suas possíveis soluções.

Exibir recursos no portal do Azure

No portal do Azure, talvez você queira exibir os recursos que foram criados quando o cluster foi criado. Normalmente, esses recursos estão em um grupo de recursos cujo nome começa em MC_. O grupo de recursos de cluster gerenciado pode ter um nome como MC_MyResourceGroup_MyManagedCluster_location-code>.< No entanto, o nome pode ser diferente se você tiver criado o cluster usando um grupo de recursos de cluster gerenciado personalizado.

Para localizar o grupo de recursos, pesquise e selecione Grupos de recursos no portal do Azure e, em seguida, selecione o grupo de recursos no qual o cluster foi criado. A lista de recursos é mostrada na página Visão geral do grupo de recursos.

Aviso

Recomendamos que você não modifique os recursos no grupo de recursos MC_ . Essa ação pode afetar negativamente o cluster do AKS.

Para examinar o status de um conjunto de dimensionamento de máquinas virtuais, você pode selecionar o nome do conjunto de dimensionamento na lista de recursos do grupo de recursos. Ele pode ter um valor Name semelhante a aks-nodepool1-12345678-vmss e um valor Type do conjunto de dimensionamento de máquinas virtuais. O status do conjunto de dimensionamento aparece na parte superior da página Visão geral do pool de nós e mais detalhes são mostrados no título Essentials. Se a implantação não foi bem-sucedida, o status exibido será Falha.

Para todos os recursos, você pode examinar os detalhes para entender melhor o motivo da falha na implantação. Para um conjunto de dimensionamento, você pode selecionar o texto de status Falha para exibir detalhes sobre a falha. Os detalhes estão em uma linha que contém as colunas Status, Nível e Código . O exemplo a seguir mostra uma linha de valores de coluna.

Coluna Valor de exemplo
Status Falha no provisionamento
Nível Erro
Código ProvisioningState/failed/VMExtensionProvisioningError

Selecione a linha para ver o campo Mensagem . Isso contém ainda mais informações sobre essa falha. Por exemplo, o campo Mensagem para a linha de exemplo começa no seguinte texto:

A VM relatou uma falha ao processar a extensão 'vmssCSE'. Mensagem de erro: "Falha na ativação: falha ao executar o comando: comando encerrado com status de saída = 50 [stdout] [stderr] 0 0 0 --:

Armado com essas informações, você pode concluir que as VMs no conjunto de dimensionamento falharam e geraram o status de saída 50.

Observação

Se a implantação do cluster não atingiu o ponto em que esses recursos teriam sido criados, talvez você não consiga examinar o grupo de recursos de cluster gerenciado no portal do Azure.

Usar comandos Kubectl

Para outra opção para ajudar a solucionar erros no cluster, use comandos kubectl para obter detalhes sobre os recursos que foram implantados no cluster. Para fazer isso, primeiro entre no cluster do AKS:

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

Dependendo do tipo de falha e de quando ela ocorreu, talvez você não consiga entrar no cluster para obter mais detalhes. Mas se o cluster foi criado e aparece no portal do Azure, você poderá entrar e executar comandos kubectl.

Exibir nós de cluster (kubectl get nodes)

Para determinar o estado dos nós do cluster, visualize os nós executando o kubectl get nodes comando. Neste exemplo, nenhum nó está relatando no cluster:

$ kubectl get nodes

No resources found

Exibir pods no namespace do sistema (kubectl get pods)

Visualizar os pods no namespace kube-system também é uma boa maneira de solucionar o problema. Esse método permite exibir o status dos pods do sistema Kubernetes. Neste exemplo, inserimos o kubectl get pods comando:

$ 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

Descrever o status de um pod (kubectl describe pod)

Ao descrever o status dos pods, você pode visualizar os detalhes da configuração e quaisquer eventos que tenham ocorrido nos pods. Executar o comando 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

Na saída do comando, você pode ver que o pod não pode ser implantado em um nó porque nenhum nó está disponível.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.