Solucionar problemas de plataforma para clusters Kubernetes habilitados para Azure Arc

Este documento fornece guias de solução de problemas para problemas com conectividade, permissões e agentes do Kubernetes habilitados para Azure Arc. Ele também fornece guias de solução de problemas para o Azure GitOps, que podem ser usados em clusters Kubernetes habilitados para Azure Arc ou Azure Kubernetes Service (AKS).

Para obter ajuda na solução de problemas relacionados a extensões, como GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, consulte Solucionar problemas de extensão para clusters Kubernetes habilitados para Azure Arc.

CLI do Azure

Antes de usar az connectedk8s comandos ou az k8s-configuration comandos da CLI, verifique se a CLI do Azure está definida para funcionar com a assinatura correta do Azure.

az account set --subscription 'subscriptionId'
az account show

Se vir um erro como cli.azext_connectedk8s.custom: Failed to download and install kubectl, execute az aks install-cli --install-location ~/.azure/kubectl-client/kubectl antes de tentar executar az connectedk8s connect novamente. Este comando instala o cliente kubectl, que é necessário para que o comando funcione.

Agentes do Azure Arc

Todos os agentes para Kubernetes habilitados para Azure Arc são implantados como pods no azure-arc namespace. Todos os pods devem estar funcionando e passando por seus exames de saúde.

Primeiro, verifique a versão do Azure Arc Helm Chart:

$ helm --namespace default status azure-arc
NAME: azure-arc
LAST DEPLOYED: Fri Apr  3 11:13:10 2020
NAMESPACE: default
STATUS: deployed
REVISION: 5
TEST SUITE: None

Se a versão do Gráfico de Leme não for encontrada ou estiver faltando, tente conectar o cluster ao Azure Arc novamente.

Se a liberação do Helm Chart estiver presente com STATUS: deployed, verifique o status dos agentes usando kubectl:

$ kubectl -n azure-arc get deployments,pods
NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cluster-metadata-operator    1/1     1            1           3d19h
deployment.apps/clusterconnect-agent         1/1     1            1           3d19h
deployment.apps/clusteridentityoperator      1/1     1            1           3d19h
deployment.apps/config-agent                 1/1     1            1           3d19h
deployment.apps/controller-manager           1/1     1            1           3d19h
deployment.apps/extension-events-collector   1/1     1            1           3d19h
deployment.apps/extension-manager            1/1     1            1           3d19h
deployment.apps/flux-logs-agent              1/1     1            1           3d19h
deployment.apps/kube-aad-proxy               1/1     1            1           3d19h
deployment.apps/metrics-agent                1/1     1            1           3d19h
deployment.apps/resource-sync-agent          1/1     1            1           3d19h

NAME                                              READY   STATUS    RESTARTS        AGE
pod/cluster-metadata-operator-74747b975-9phtz     2/2     Running   0               3d19h
pod/clusterconnect-agent-cf4c7849c-88fmf          3/3     Running   0               3d19h
pod/clusteridentityoperator-79bdfd945f-pt2rv      2/2     Running   0               3d19h
pod/config-agent-67bcb94b7c-d67t8                 1/2     Running   0               3d19h
pod/controller-manager-559dd48b64-v6rmk           2/2     Running   0               3d19h
pod/extension-events-collector-85f4fbff69-55zmt   2/2     Running   0               3d19h
pod/extension-manager-7c7668446b-69gps            3/3     Running   0               3d19h
pod/flux-logs-agent-fc7c6c959-vgqvm               1/1     Running   0               3d19h
pod/kube-aad-proxy-84d668c44b-j457m               2/2     Running   0               3d19h
pod/metrics-agent-58fb8554df-5ll67                2/2     Running   0               3d19h
pod/resource-sync-agent-dbf5db848-c9lg8           2/2     Running   0               3d19h

Todos os pods devem aparecer STATUS como Running com um ou 2/2 3/3 sob a READY coluna. Buscar logs e descrever os pods que retornam um Error ou CrashLoopBackOff. Se algum pod estiver preso no Pending estado, pode haver recursos insuficientes nos nós do cluster. Aumentar a escala do cluster pode fazer com que esses pods passem para o Running estado.

Falha no provisionamento de recursos/Erro de tempo limite do serviço

Se você vir esses erros, verifique o status do Azure para ver se há algum evento ativo que afete o status do serviço Kubernetes habilitado para Azure Arc. Em caso afirmativo, aguarde até que o evento de serviço seja resolvido e, em seguida, tente integrar novamente depois de excluir o recurso de cluster conectado existente. Se não houver eventos de serviço e você continuar a enfrentar problemas durante a integração, abra uma solicitação de suporte para que possamos investigar o problema.

Erro de sinistros de excesso

Se você receber uma reivindicação de excesso de idade, certifique-se de que sua entidade de serviço não faça parte de mais de 200 grupos do Microsoft Entra. Se esse for o caso, você deve criar e usar outra entidade de serviço que não seja membro de mais de 200 grupos, ou remover a entidade de serviço original de alguns de seus grupos e tentar novamente.

Uma declaração de excesso também pode ocorrer se você tiver configurado um ambiente de proxy de saída sem permitir o ponto de extremidade https://<region>.obo.arc.azure.com:8084/ para tráfego de saída.

Se nenhuma destas opções se aplicar, abra um pedido de suporte para que possamos analisar o problema.

Problemas ao conectar clusters do Kubernetes ao Azure Arc

A conexão de clusters ao Azure Arc requer acesso a uma assinatura do Azure e cluster-admin acesso a um cluster de destino. Se você não conseguir acessar o cluster ou se tiver permissões insuficientes, conectar o cluster ao Azure Arc falhará. Verifique se você atendeu a todos os pré-requisitos para conectar um cluster.

Gorjeta

Para obter um guia visual para solucionar problemas de conexão, consulte Diagnosticar problemas de conexão para clusters Kubernetes habilitados para Arc.

Problemas de resolução de DNS

Para obter ajuda com problemas relacionados à resolução de DNS em seu cluster, consulte Depurando resolução de DNS.

Problemas de conectividade de rede de saída

Problemas com a conectividade de rede de saída do cluster podem surgir por diferentes motivos. Primeiro, certifique-se de que todos os requisitos de rede foram atendidos.

Se você encontrar problemas de conectividade e o cluster estiver atrás de um servidor proxy de saída, verifique se você passou os parâmetros de proxy durante a integração do cluster e se o proxy está configurado corretamente. Para obter mais informações, consulte Conectar-se usando um servidor proxy de saída.

Poderá ver um erro semelhante ao seguinte:

An exception has occurred while trying to execute the cluster diagnostic checks in the cluster. Exception: Unable to pull cluster-diagnostic-checks helm chart from the registry 'mcr.microsoft.com/azurearck8s/helmchart/stable/clusterdiagnosticchecks:0.1.2': Error: failed to do request: Head "https://mcr.microsoft.com/v2/azurearck8s/helmchart/stable/clusterdiagnosticchecks/manifests/0.1.2": dial tcp xx.xx.xx.219:443: i/o timeout

Este erro ocorre quando o ponto de https://k8connecthelm.azureedge.net extremidade está bloqueado. Certifique-se de que sua rede permite conectividade com esse ponto de extremidade e atende a todos os outros requisitos de rede.

Não é possível recuperar o certificado MSI

Problemas na recuperação do certificado MSI são geralmente devido a problemas de rede. Verifique se todos os requisitos de rede foram atendidos e tente novamente.

Permissões de cluster insuficientes

Se o arquivo kubeconfig fornecido não tiver permissões suficientes para instalar os agentes do Azure Arc, o comando da CLI do Azure retornará um erro: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

Para resolver esse problema, verifique se o usuário que conecta o cluster ao Azure Arc tem a cluster-admin função atribuída.

Não é possível ligar o cluster do OpenShift ao Azure Arc

Se az connectedk8s connect estiver com o tempo limite e falhando ao conectar um cluster OpenShift ao Azure Arc:

  1. Verifique se o cluster OpenShift atende aos pré-requisitos da versão: 4.5.41+ ou 4.6.35+ ou 4.7.18+.

  2. Antes de executar az connectedk8s connnecto , execute este comando no cluster:

    oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
    

Tempos limite de instalação

Conectar um cluster Kubernetes ao Kubernetes habilitado para Azure Arc requer a instalação de agentes do Azure Arc no cluster. Se o cluster estiver sendo executado em uma conexão lenta com a Internet, a extração de imagem de contêiner para agentes pode levar mais tempo do que os tempos limite da CLI do Azure.

Erro de tempo limite do leme

Poderá ver o erro Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. Para resolver esse problema, tente as seguintes etapas:

  1. Execute o seguinte comando:

    kubectl get pods -n azure-arc
    
  2. Verifique se o clusterconnect-agent ou os config-agent pods estão aparecendo crashloopbackoffou se nem todos os contêineres estão em execução:

    NAME                                        READY   STATUS             RESTARTS   AGE
    cluster-metadata-operator-664bc5f4d-chgkl   2/2     Running            0          4m14s
    clusterconnect-agent-7cb8b565c7-wklsh       2/3     CrashLoopBackOff   0          1m15s
    clusteridentityoperator-76d645d8bf-5qx5c    2/2     Running            0          4m15s
    config-agent-65d5df564f-lffqm               1/2     CrashLoopBackOff   0          1m14s
    
  3. Se o azure-identity-certificate não estiver presente, a identidade gerenciada atribuída ao sistema não foi instalada.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: azure-identity-certificate
    

    Para resolver esse problema, tente excluir a implantação do Arc executando o az connectedk8s delete comando e reinstalando-o. Se o problema continuar a acontecer, pode ser um problema com suas configurações de proxy. Nesse caso, tente conectar seu cluster ao Azure Arc por meio de um proxy para conectar seu cluster ao Arc por meio de um proxy. Verifique também se todos os pré-requisitos de rede foram atendidos .

  4. Se o clusterconnect-agent e os config-agent pods estiverem em execução, mas o kube-aad-proxy pod estiver faltando, verifique suas políticas de segurança do pod. Este pod usa a azure-arc-kube-aad-proxy-sa conta de serviço, que não tem permissões de administrador, mas requer a permissão para montar o caminho do host.

  5. Se o kube-aad-proxy pod estiver preso no ContainerCreating estado, verifique se o certificado kube-aad-proxy foi baixado no cluster.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: kube-aad-proxy-certificate
    

    Se o certificado estiver ausente, exclua a implantação e tente integrar novamente, usando um nome diferente para o cluster. Se o problema persistir, abra uma solicitação de suporte.

Erro do módulo CryptoHash

Ao tentar integrar clusters Kubernetes à plataforma Azure Arc, o ambiente local (por exemplo, o console do cliente) pode retornar a seguinte mensagem de erro:

Cannot load native module 'Crypto.Hash._MD5'

Às vezes, os módulos dependentes não conseguem baixar com êxito ao adicionar as extensões connectedk8s e k8s-configuration por meio da CLI do Azure ou do Azure PowerShell. Para corrigir esse problema, remova manualmente e adicione as extensões no ambiente local.

Para remover as extensões, use:

az extension remove --name connectedk8s
az extension remove --name k8s-configuration

Para adicionar as extensões, use:

az extension add --name connectedk8s
az extension add --name k8s-configuration

Problemas de conexão de cluster

Se o cluster estiver protegido por um proxy ou firewall de saída, verifique se as conexões de soquete de rede estão habilitadas para *.servicebus.windows.net, o que é necessário especificamente para o recurso Conexão de Cluster. Além disso, certifique-se de que está a utilizar a versão mais recente da extensão CLI do Azure se tiver problemas ao utilizar a connectedk8s ligação de cluster.

Se os clusterconnect-agent e kube-aad-proxy pods estiverem ausentes, o recurso de conexão do cluster provavelmente estará desativado no cluster. Em caso afirmativo, az connectedk8s proxy não consegue estabelecer uma sessão com o cluster e poderá ver um erro ao ler Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

Para resolver esse erro, habilite o recurso de conexão de cluster no cluster:

az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP

Para obter mais informações, consulte Usar conexão de cluster para se conectar com segurança a clusters Kubernetes habilitados para Azure Arc.

Habilitar locais personalizados usando a entidade de serviço

Ao conectar seu cluster ao Azure Arc ou habilitar locais personalizados em um cluster existente, você poderá ver o seguinte aviso:

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

Esse aviso ocorre quando você usa uma entidade de serviço para fazer logon no Azure e a entidade de serviço não tem as permissões necessárias. Para evitar este erro, siga estes passos:

  1. Entre na CLI do Azure usando sua conta de usuário. Recupere a ID do objeto do aplicativo Microsoft Entra usado pelo serviço Azure Arc:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. Entre na CLI do Azure usando a entidade de serviço. Use o <objectId> valor da etapa anterior para habilitar locais personalizados no cluster:

    • Para habilitar locais personalizados ao conectar o cluster ao Arc, execute az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • Para habilitar locais personalizados em um cluster Kubernetes habilitado para Azure Arc existente, execute az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

Próximos passos