Поделиться через


Устранение неполадок с кодом ошибки OutboundConnFailVMExtensionError (50)

В этой статье описывается, как определить и устранить OutboundConnFailVMExtensionError ошибку (также известный как код ошибки, номер ERR_OUTBOUND_CONN_FAILошибки 50), которая может возникнуть при попытке запустить или создать и развернуть кластер Microsoft Служба Azure Kubernetes (AKS).

Предварительные требования

Симптомы

При попытке запустить или создать кластер AKS появляется следующее сообщение об ошибке:

Не удается установить исходящее подключение от агентов, см https://aka.ms/aks-required-ports-and-addresses . дополнительные сведения.

Сведения: Code="VMExtensionProvisioningError"

Message="виртуальная машина сообщила о сбое при обработке расширения vmssCSE.

Сообщение об ошибке: "Включить сбой: не удалось выполнить команду: команда завершилась с состоянием выхода=50\n[stdout]\n\n[stderr]\nnc: подключение к порту mcr.microsoft.com 443 (tcp) завершилось сбоем подключения: время ожидания подключения\nCommand завершилось с состоянием non-zero

Сведения об ошибке: "Сообщения об ошибках vmssCSE: {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

Причина

Расширению пользовательских скриптов, загружающие необходимые компоненты для подготовки узлов, не удалось установить необходимое исходящее подключение для получения пакетов. Для общедоступных кластеров узлы пытаются взаимодействовать с конечной точкой Реестра контейнеров Майкрософт (mcr.microsoft.comMCR) через порт 443.

Существует множество причин, по которым трафик может быть заблокирован. В любой из этих ситуаций лучший способ проверки подключения — использовать протокол Secure Shell (SSH) для подключения к узлу. Чтобы сделать подключение, следуйте инструкциям в разделе "Подключение к узлам кластера Служба Azure Kubernetes (AKS) для обслуживания или устранения неполадок. Затем проверьте подключение в кластере, выполнив следующие действия.

  1. После подключения к узлу выполните nc dig следующие команды:

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

    Примечание.

    Если вы не можете получить доступ к узлу через SSH, можно протестировать исходящее подключение, выполнив команду az vmss run-command invoke для экземпляра масштабируемого набора виртуальных машин:

    # 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. Если вы пытаетесь создать кластер AKS с помощью ПРОКСИ-сервера HTTP, запустите nccurlкоманду и dig команды после подключения к узлу:

    # 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
    

    Примечание.

    Если вы не можете получить доступ к узлу через SSH, можно проверить исходящее подключение, выполнив az vmss run-command invoke команду в экземпляре масштабируемого набора виртуальных машин:

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

Решение

В следующей таблице перечислены конкретные причины, по которым может быть заблокирован трафик, и соответствующее решение по каждой причине:

Проблема Решение
Трафик блокируется правилами брандмауэра, прокси-сервером или группой безопасности сети (NSG) Эта проблема возникает, когда необходимые порты AKS или полные доменные имена (FQDN) блокируются брандмауэром, прокси-сервером или NSG. Убедитесь, что эти порты и полные доменные имена разрешены. Чтобы определить, что заблокировано, проверьте подключение, предоставленное в предыдущем разделе причины . Дополнительные сведения о необходимых портах и полных доменных именах AKS см. в правилах исходящей сети и полного доменного имени для кластеров Служба Azure Kubernetes (AKS).
Запись AAAA (IPv6) заблокирована на брандмауэре. Убедитесь, что в брандмауэре нет ничего, что блокирует разрешение конечной точки в Azure DNS.
Частный кластер не может разрешать внутренние ресурсы Azure В частных кластерах IP-адрес Azure DNS (168.63.129.16) необходимо добавить в качестве вышестоящего DNS-сервера, если используется пользовательский DNS. Убедитесь, что адрес задан на DNS-серверах. Дополнительные сведения см. в разделе "Создание частного кластера AKS" и "Что такое IP-адрес 168.63.129.16?".

Дополнительная информация

Заявление об отказе от ответственности за контактные данные сторонней организации

Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.