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

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

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

  • Программа командной строки Netcat (nc)

  • Средство командной строки dig

  • Средство URL-адреса клиента (cURL)

Симптомы

При попытке запустить или создать кластер 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): истекло время ожидания подключения,\nКоманда завершилась с ненулевым состоянием

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

Причина

Расширение пользовательских скриптов, скачивающее необходимые компоненты для подготовки узлов, не может установить необходимое исходящее подключение для получения пакетов. Для общедоступных кластеров узлы пытаются связаться с конечной точкой Реестра контейнеров Майкрософт (MCR) (mcr.microsoft.com) через порт 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, выполните ncкоманды , curlи 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"
    

Решение

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

Проблема Решение
Трафик блокируется правилами брандмауэра или прокси-сервером В этом сценарии брандмауэр или прокси-сервер выполняет фильтрацию исходящего трафика. Сведения о том, разрешены ли все необходимые домены и порты, см. в статье Управление исходящим трафиком для узлов кластера в Служба Azure Kubernetes (AKS).
Трафик блокируется группой безопасности сети кластера (NSG) На всех группах безопасности сети, подключенных к кластеру, убедитесь, что для порта 443, порта 53 или любого другого порта, который, возможно, потребуется использовать для подключения к конечной точке. Дополнительные сведения см. в разделе Управление исходящим трафиком для узлов кластера в Служба 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.