Solución de problemas del código de error OutboundConnFailVMExtensionError (50)

En este artículo se describe cómo identificar y resolver el OutboundConnFailVMExtensionError error (también conocido como código ERR_OUTBOUND_CONN_FAILde error, número de error 50) que puede producirse si intenta iniciar o crear e implementar un clúster de Microsoft Azure Kubernetes Service (AKS).

Requisitos previos

  • Herramienta de línea de comandos de Netcat (nc)

  • Herramienta de línea de comandos dig

  • Herramienta dirección URL de cliente (cURL)

Síntomas

Al intentar iniciar o crear un clúster de AKS, recibe el siguiente mensaje de error:

No se puede establecer la conexión saliente desde agentes, consulte https://aka.ms/aks-required-ports-and-addresses para obtener más información.

Detalles: Code="VMExtensionProvisioningError"

Message="Vm ha notificado un error al procesar la extensión "vmssCSE".

Mensaje de error: "Error al habilitar: no se pudo ejecutar el comando: comando terminado con exit status=50\n[stdout]\n\n[stderr]\nnc: connect to mcr.microsoft.com port 443 (tcp) failed: Connection timed out\nCommand exited with non-zero status

Detalles del error: "vmssCSE error messages : {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

Causa

La extensión de script personalizado que descarga los componentes necesarios para aprovisionar los nodos no pudo establecer la conectividad saliente necesaria para obtener paquetes. En el caso de los clústeres públicos, los nodos intentan comunicarse con el punto de conexión de Microsoft Container Registry (MCR) (mcr.microsoft.com) en el puerto 443.

Hay muchas razones por las que es posible que se bloquee el tráfico. En cualquiera de estas situaciones, la mejor manera de probar la conectividad es usar el protocolo Secure Shell (SSH) para conectarse al nodo. Para realizar la conexión, siga las instrucciones de Conexión a nodos de clúster de Azure Kubernetes Service (AKS) para mantenimiento o solución de problemas. A continuación, pruebe la conectividad en el clúster siguiendo estos pasos:

  1. Después de conectarse al nodo, ejecute los nc comandos y dig :

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

    Nota:

    Si no puede acceder al nodo a través de SSH, puede probar la conectividad saliente ejecutando el comando az vmss run-command invoke en la instancia del conjunto de escalado de máquinas virtuales:

    # 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. Si intenta crear un clúster de AKS mediante un proxy HTTP, ejecute los nccomandos , curly dig después de conectarse al nodo:

    # 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
    

    Nota:

    Si no puede acceder al nodo a través de SSH, puede probar la conectividad saliente ejecutando el az vmss run-command invoke comando en la instancia del conjunto de escalado de máquinas virtuales:

    # 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"
    

Solución

En la tabla siguiente se enumeran los motivos específicos por los que se puede bloquear el tráfico y la solución correspondiente para cada motivo.

Problema Solución
Las reglas de firewall o un servidor proxy bloquean el tráfico En este escenario, un firewall o un servidor proxy realiza el filtrado de salida. Para comprobar que se permiten todos los dominios y puertos necesarios, consulte Control del tráfico de salida de los nodos de clúster en Azure Kubernetes Service (AKS).
Un grupo de seguridad de red de clúster (NSG) bloquea el tráfico. En cualquier NSG que esté asociado al clúster, compruebe que no haya ningún bloqueo en el puerto 443, el puerto 53 o cualquier otro puerto que tenga que usarse para conectarse al punto de conexión. Para obtener más información, consulte Control del tráfico de salida para nodos de clúster en Azure Kubernetes Service (AKS).
El registro AAAA (IPv6) está bloqueado en el firewall En el firewall, compruebe que no existe nada que impida que el punto de conexión se resuelva en Azure DNS.
El clúster privado no puede resolver recursos internos de Azure En los clústeres privados, la dirección IP de Azure DNS (168.63.129.16) debe agregarse como un servidor DNS ascendente si se usa DNS personalizado. Compruebe que la dirección está establecida en los servidores DNS. Para obtener más información, consulte Creación de un clúster de AKS privado y ¿Qué es la dirección IP 168.63.129.16?

Más información

Aviso de declinación de responsabilidades sobre la información de contacto de terceros

Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Dicha información de contacto puede cambiar sin notificación previa. Microsoft no garantiza la precisión de esta información de contacto de terceros.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.