Solucionar problemas do código de erro OutboundConnFailVMExtensionError (50)

Este artigo descreve como identificar e resolve o OutboundConnFailVMExtensionError erro (também conhecido como código ERR_OUTBOUND_CONN_FAILde erro , número de erro 50) que pode ocorrer se você tentar iniciar ou criar e implantar um cluster do AKS (Microsoft Serviço de Kubernetes do Azure).

Pré-requisitos

  • A ferramenta de linha de comando Netcat (nc)

  • A ferramenta dig command-line

  • A ferramenta URL do Cliente (cURL)

Sintomas

Ao tentar iniciar ou criar um cluster do AKS, você recebe a seguinte mensagem de erro:

Não é possível estabelecer a conexão de saída dos agentes, consulte https://aka.ms/aks-required-ports-and-addresses para obter mais informações.

Detalhes: Code="VMExtensionProvisioningError"

Message="A VM relatou uma falha ao processar a extensão 'vmssCSE'.

Mensagem de erro: "Falha na habilitação: falha ao executar o comando: o comando encerrado com a saída status=50\n[stdout]\n\n[stderr]\nnc: conecte-se à porta mcr.microsoft.com 443 (tcp) com falha: falha no tempo limite da conexão\nComando saiu com status não zero

Detalhes do erro: "mensagens de erro vmssCSE : {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

Motivo

A extensão de script personalizada que baixa os componentes necessários para provisionar os nós não pôde estabelecer a conectividade de saída necessária para obter pacotes. Para clusters públicos, os nós tentam se comunicar com o ponto de extremidade MCR (Registro de Contêiner da Microsoft) (mcr.microsoft.com) na porta 443.

Há muitas razões pelas quais o tráfego pode ser bloqueado. Em qualquer uma dessas situações, a melhor maneira de testar a conectividade é usar o protocolo Secure Shell (SSH) para se conectar ao nó. Para fazer a conexão, siga as instruções em Conectar-se aos nós de cluster do AKS (Serviço de Kubernetes do Azure) para manutenção ou solução de problemas. Em seguida, teste a conectividade no cluster seguindo estas etapas:

  1. Depois de se conectar ao nó, execute os nc comandos e dig :

    nc -vz mcr.microsoft.com 443 
    dig mcr.microsoft.com 443
    

    Observação

    Se você não puder acessar o nó por meio do SSH, poderá testar a conectividade de saída executando o comando az vmss run-command invoke na instância de Conjunto de Dimensionamento de Máquina Virtual:

    # Get the VMSS instance IDs.
    az vmss list-instances --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --output table
    
    # Use an instance ID to test outbound connectivity.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "nc -vz mcr.microsoft.com 443"
    
  2. Se você tentar criar um cluster do AKS usando um proxy HTTP, execute os nccomandos , curle dig depois de se conectar ao nó:

    # Test connectivity to the HTTP proxy server from the AKS node.
    nc -vz <http-s-proxy-address> <port>
    
    # Test traffic from the HTTP proxy server to HTTPS.
    curl --proxy http://<http-proxy-address>:<port>/ --head https://mcr.microsoft.com
    
    # Test traffic from the HTTPS proxy server to HTTPS.
    curl --proxy https://<https-proxy-address>:<port>/ --head https://mcr.microsoft.com
    
    # Test DNS functionality.
    dig mcr.microsoft.com 443
    

    Observação

    Se você não puder acessar o nó por meio do SSH, poderá testar a conectividade de saída executando o az vmss run-command invoke comando na instância Do Conjunto de Dimensionamento de Máquina Virtual:

    # Get the VMSS instance IDs.
    az vmss list-instances --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --output table
    
    # Use an instance ID to test connectivity from the HTTP proxy server to HTTPS.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "curl --proxy http://<http-proxy-address>:<port>/ --head https://mcr.microsoft.com"
    
    # Use an instance ID to test connectivity from the HTTPS proxy server to HTTPS.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "curl --proxy https://<https-proxy-address>:<port>/ --head https://mcr.microsoft.com"
    
    # Use an instance ID to test DNS functionality.
    az vmss run-command invoke --resource-group <mc-resource-group-name> \
        --name <vmss-name> \
        --command-id RunShellScript \
        --instance-id <vmss-instance-id> \
        --output json \
        --scripts "dig mcr.microsoft.com 443"
    

Solução

A tabela a seguir lista os motivos específicos pelos quais o tráfego pode ser bloqueado e a solução correspondente para cada motivo.

Problema Solução
O tráfego é bloqueado por regras de firewall ou por um servidor proxy Nesse cenário, um firewall ou um servidor proxy faz a filtragem de saída. Para verificar se todos os domínios e portas necessários são permitidos, consulte Controlar o tráfego de saída para nós de cluster em Serviço de Kubernetes do Azure (AKS).
O tráfego é bloqueado por um NSG (grupo de segurança de rede de cluster) Em quaisquer NSGs anexados ao cluster, verifique se não há bloqueio na porta 443, na porta 53 ou em qualquer outra porta que possa ter que ser usada para se conectar ao ponto de extremidade. Para obter mais informações, consulte Controlar o tráfego de saída para nós de cluster em Serviço de Kubernetes do Azure (AKS).
O registro AAAA (IPv6) é bloqueado no firewall No firewall, verifique se não existe nada que impeça a resolução do ponto de extremidade no DNS do Azure.
O cluster privado não pode resolve recursos internos do Azure Em clusters privados, o endereço IP DNS do Azure (168.63.129.16) deve ser adicionado como um servidor DNS upstream se o DNS personalizado for usado. Verifique se o endereço está definido em seus servidores DNS. Para obter mais informações, confira Criar um cluster aks privado e o que é o endereço IP 168.63.129.16?

Mais informações

Aviso de isenção de responsabilidade para contatos de terceiros

A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.

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.