Résoudre les problèmes liés au code d’erreur OutboundConnFailVMExtensionError (50)

Cet article explique comment identifier et résoudre l’erreur OutboundConnFailVMExtensionError (également appelée code ERR_OUTBOUND_CONN_FAILd’erreur , numéro d’erreur 50) qui peut se produire si vous essayez de démarrer ou de créer et de déployer un cluster Microsoft Azure Kubernetes Service (AKS).

Conditions préalables

  • L’outil en ligne de commande Netcat (nc)

  • L’outil en ligne de commande dig

  • Outil URL du client (cURL)

Symptômes

Lorsque vous essayez de démarrer ou de créer un cluster AKS, le message d’erreur suivant s’affiche :

Impossible d’établir une connexion sortante à partir d’agents, consultez https://aka.ms/aks-required-ports-and-addresses pour plus d’informations.

Détails : Code="VMExtensionProvisioningError »

Message="Vm a signalé un échec lors du traitement de l’extension 'vmssCSE'.

Message d’erreur : « Échec de l’activation : échec de l’exécution de la commande : la commande s’est terminée avec sortie status=50\n[stdout]\n\n[stderr]\nnc : connexion à mcr.microsoft.com port 443 (tcp) a échoué : délai de connexion expiré\nLa commande s’est arrêtée avec un status non nul

Détails de l’erreur : « messages d’erreur vmssCSE : {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

Cause

L’extension de script personnalisé qui télécharge les composants nécessaires pour provisionner les nœuds n’a pas pu établir la connectivité sortante nécessaire pour obtenir des packages. Pour les clusters publics, les nœuds tentent de communiquer avec le point de terminaison Microsoft Container Registry (MCR) (mcr.microsoft.com) sur le port 443.

Il existe de nombreuses raisons pour lesquelles le trafic peut être bloqué. Dans l’une de ces situations, la meilleure façon de tester la connectivité consiste à utiliser le protocole SECURE Shell (SSH) pour se connecter au nœud. Pour établir la connexion, suivez les instructions fournies dans Se connecter à des nœuds de cluster Azure Kubernetes Service (AKS) à des fins de maintenance ou de résolution des problèmes. Ensuite, testez la connectivité sur le cluster en procédant comme suit :

  1. Après vous être connecté au nœud, exécutez les nc commandes et dig :

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

    Remarque

    Si vous ne pouvez pas accéder au nœud via SSH, vous pouvez tester la connectivité sortante en exécutant la commande az vmss run-command invoke sur le groupe de machines virtuelles identiques instance :

    # 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 vous essayez de créer un cluster AKS à l’aide d’un proxy HTTP, exécutez les nccommandes , curlet dig après vous être connecté au nœud :

    # 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
    

    Remarque

    Si vous ne pouvez pas accéder au nœud via SSH, vous pouvez tester la connectivité sortante en exécutant la az vmss run-command invoke commande sur le groupe de machines virtuelles identiques instance :

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

Solution

Le tableau suivant répertorie les raisons spécifiques pour lesquelles le trafic peut être bloqué et la solution correspondante pour chaque raison.

Problème Solution
Le trafic est bloqué par des règles de pare-feu ou un serveur proxy Dans ce scénario, un pare-feu ou un serveur proxy effectue un filtrage de sortie. Pour vérifier que tous les domaines et ports requis sont autorisés, consultez Contrôler le trafic de sortie pour les nœuds de cluster dans Azure Kubernetes Service (AKS).
Le trafic est bloqué par un groupe de sécurité réseau de cluster (NSG) Sur tous les groupes de sécurité réseau attachés à votre cluster, vérifiez qu’il n’existe aucun blocage sur le port 443, le port 53 ou tout autre port pouvant être utilisé pour se connecter au point de terminaison. Pour plus d’informations, consultez Contrôler le trafic de sortie pour les nœuds de cluster dans Azure Kubernetes Service (AKS).
L’enregistrement AAAA (IPv6) est bloqué sur le pare-feu Sur votre pare-feu, vérifiez qu’il n’existe rien qui empêche le point de terminaison de se résoudre dans Azure DNS.
Le cluster privé ne peut pas résoudre les ressources Azure internes Dans les clusters privés, l’adresse IP Azure DNS (168.63.129.16) doit être ajoutée en tant que serveur DNS amont si un DNS personnalisé est utilisé. Vérifiez que l’adresse est définie sur vos serveurs DNS. Pour plus d’informations, consultez Créer un cluster AKS privé et Qu’est-ce que l’adresse IP 168.63.129.16 ?

Informations supplémentaires

Exclusion de responsabilité sur les coordonnées externes

Microsoft fournit des informations de contacts externes afin de vous aider à obtenir un support technique sur ce sujet. Ces informations de contact peuvent être modifiées sans préavis. Microsoft ne garantit pas l’exactitude des informations concernant les sociétés externes.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.