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:
Verifique se o cluster OpenShift atende aos pré-requisitos da versão: 4.5.41+ ou 4.6.35+ ou 4.7.18+.
Antes de executar
az connectedk8s connnect
o , 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:
Execute o seguinte comando:
kubectl get pods -n azure-arc
Verifique se o
clusterconnect-agent
ou osconfig-agent
pods estão aparecendocrashloopbackoff
ou 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
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 .Se o
clusterconnect-agent
e osconfig-agent
pods estiverem em execução, mas okube-aad-proxy
pod estiver faltando, verifique suas políticas de segurança do pod. Este pod usa aazure-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.Se o
kube-aad-proxy
pod estiver preso noContainerCreating
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:
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
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
- Para habilitar locais personalizados ao conectar o cluster ao Arc, execute
Próximos passos
- Obtenha um passo a passo visual de como diagnosticar problemas de conexão.
- Veja dicas de solução de problemas relacionadas a extensões de cluster.