Solucionar problemas de plataforma para clusters do Kubernetes habilitados para Azure Arc
Este documento fornece guias de solução de problemas para problemas de conectividade, permissões e agentes do Kubernetes habilitado para Arc. Também fornece guias de solução de problemas para o Azure GitOps, que podem ser usados em clusters de Kubernetes habilitado para Azure Arc ou do AKS (Serviço de Kubernetes do Azure).
Para obter ajuda para solucionar problemas relacionados a extensões, como GitOps (Flux v2), Insights de Contêiner do Azure Monitor, Open Service Mesh, consulte Solucionar problemas de extensão para clusters do Kubernetes habilitados para Azure Arc.
CLI do Azure
Antes de usar os comandos az connectedk8s
ou az k8s-configuration
da CLI, verifique se a CLI do Azure está definida para funcionar na assinatura correta do Azure.
az account set --subscription 'subscriptionId'
az account show
Se você 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. Esse comando instala o cliente kubectl, que é necessário para que o comando funcione.
Agentes do Azure Arc
Todos os agentes do Kubernetes habilitado para o Azure Arc são implantados como pods no namespace azure-arc
. Todos os pods devem estar em execução e passando as verificações de integridade.
Primeiro, verifique a versão do Pacote do Helm do Azure Arc:
$ 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 Pacote do Helm não for encontrada ou estiver ausente, tente conectar o cluster ao Azure Arc novamente.
Se a versão do Pacote do Helm 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 ser mostrados STATUS
como Running
com um 3/3
ou 2/2
sob a READY
coluna. Busque logs e descreva os pods que retornam um Error
ou CrashLoopBackOff
. Se qualquer pods estiver preso no Pending
estado, pode haver recursos insuficientes em nós de cluster. Escalar verticalmente seu cluster pode fazer com que esses pods façam a transição para o estado Running
.
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á eventos ativos afetando o status do serviço do Kubernetes habilitado para Azure Arc. Nesse caso, aguarde até que o evento de serviço tenha sido resolvido e tente integrar novamente após excluir o recurso de cluster conectado existente. Se não houver eventos de serviço e você continuar enfrentando problemas durante a integração, abra um tíquete de suporte para que possamos investigar o problema.
Erro de declarações excedentes
Se você receber uma declaração excedente, verifique se a entidade de serviço não faz 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 excedente também poderá 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 o tráfego de saída.
Se nenhum deles se aplicar, abra uma solicitação de suporte para que possamos investigar 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
a um cluster de destino. Se você não conseguir acessar o cluster ou se tiver permissões insuficientes, a conexão do cluster ao Azure Arc falhará. Verifique se você atendeu a todos os pré-requisitos para conectar um cluster.
Dica
Para obter um guia visual para solucionar problemas de conexão, consulte Diagnosticar problemas de conexão para clusters do Kubernetes habilitados para Arc.
Problemas de resolução de DNS
Para obter ajuda com problemas relacionados à resolução DNS em seu cluster, confira Depurando a Resolução 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, verifique se 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 parâmetros de proxy durante a integração do cluster e se o proxy está configurado corretamente. Para obter mais informações, confira Conectar-se usando um servidor proxy de saída.
Você pode 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
Esse erro ocorre quando o ponto de extremidade https://k8connecthelm.azureedge.net
é bloqueado. Certifique-se de que sua rede permita conectividade com esse ponto de extremidade e atenda a todos os outros requisitos de rede.
Não é possível recuperar o certificado MSI
Problemas ao recuperar o certificado MSI geralmente ocorrem 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 função cluster-admin
atribuída.
Não é possível conectar o cluster do OpenShift ao Azure Arc
Se az connectedk8s connect
está atingindo o tempo limite e há uma falha nele ao conectar um cluster do OpenShift ao Azure Arc:
Garanta que o cluster do OpenShift atenda aos pré-requisitos da versão 4.5.41+, 4.6.35+ ou 4.7.18+.
Antes de executar
az connectedk8s connnect
, 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 do Kubernetes ao Kubernetes habilitado para Azure Arc requer a instalação de agentes do Azure Arc no cluster. Se o cluster for executado em uma conexão lenta com a Internet, o pull de imagem de contêiner para agentes poderá levar mais tempo do que o CLI do Azure tempo limite.
Erro de tempo limite do Helm
Você pode ver o erro Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition
. Para resolver esse problema, siga as etapas a seguir:
Execute o comando a seguir:
kubectl get pods -n azure-arc
Verifique se os pods
clusterconnect-agent
ouconfig-agent
estão mostrandocrashloopbackoff
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 não
azure-identity-certificate
estiver presente, a identidade gerenciada atribuída pelo sistema não foi instalada.kubectl get secret -n azure-arc -o yaml | grep name:
name: azure-identity-certificate
Para resolver este problema pode tentar excluir a implantação do Arc executando o comando
az connectedk8s delete
e, depois, reinstalá-lo. 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 os pods
clusterconnect-agent
econfig-agent
estiverem em execução, mas o podkube-aad-proxy
estiver ausente, verifique as políticas de segurança do pod. Esse pod usa a conta de serviçoazure-arc-kube-aad-proxy-sa
, que não tem permissões de administrador, mas exige a permissão para montar o caminho do host.Se o pod
kube-aad-proxy
estiver preso no estadoContainerCreating
, 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 continuar, abra uma solicitação de suporte.
Erro do módulo CryptoHash
Ao tentar integrar clusters do Kubernetes à plataforma do 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 são baixados com êxito quando as extensões connectedk8s
e k8s-configuration
são adicionadas por meio da CLI do Azure ou do Azure PowerShell. Para corrigir esse problema, remova as extensões manualmente e adicione-as 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 de saída ou firewall, verifique se as conexões de websocket estão habilitadas para *.servicebus.windows.net
, o que é necessário especificamente para o recurso Cluster Connect. Além disso, verifique se você está usando a versão mais recente da extensão connectedk8s
da CLI do Azure se estiver enfrentando problemas usando a conexão de cluster.
Se os pods clusterconnect-agent
e kube-aad-proxy
estiverem ausentes, o recurso de conexão de cluster provavelmente estará desabilitado no cluster. Nesse caso, az connectedk8s proxy
não estabelecerá uma sessão com o cluster e você poderá ver um erro com a mensagem 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 em seu cluster:
az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP
Para obter mais informações, consulte Usar a conexão de cluster para se conectar com segurança aos clusters do Kubernetes habilitados para Azure Arc.
Habilitar locais personalizados usando a entidade de serviço
Ao conectar o cluster ao Azure Arc ou ao habilitar as localizações personalizadas em um cluster existente, você pode 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 esse erro, siga estas etapas:
Entre na CLI do Azure com a 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 com a entidade de serviço. Use o valor
<objectId>
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 do 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óximas etapas
- Obtenha um passo a passo visual de como diagnosticar problemas de conexão.
- Exibir dicas de solução de problemas relacionadas a extensões de cluster.