OutboundConnFailVMExtensionError エラー コードのトラブルシューティング (50)

この記事では、Microsoft Azure Kubernetes Service (AKS) クラスターをOutboundConnFailVMExtensionError起動または作成してデプロイしようとした場合に発生する可能性があるエラー (エラー コードERR_OUTBOUND_CONN_FAIL、エラー番号 50 とも呼ばれます) を特定して解決する方法について説明します。

前提条件

  • Netcat (nc) コマンド ライン ツール

  • dig コマンド ライン ツール

  • クライアント URL (cURL) ツール

現象

AKS クラスターを起動または作成しようとすると、次のエラー メッセージが表示されます。

エージェントからの送信接続を確立できません。詳細については、こちらをご覧 https://aka.ms/aks-required-ports-and-addresses ください。

詳細: Code="VMExtensionProvisioningError"

Message="VM は、拡張機能 'vmssCSE' を処理するときにエラーを報告しました。

エラー メッセージ: "Enable failed: failed to execute command: exit status=50\n[stdout]\n\n[stderr]\nnc: connect to mcr.microsoft.com port 443 (tcp) failed: 接続がタイムアウト\nコマンドが 0 以外の状態で終了しました

エラーの詳細: "vmssCSE エラー メッセージ: {vmssCSE exit status=50, output=pt/apt.conf.d/95proxy...}

原因

ノードをプロビジョニングするために必要なコンポーネントをダウンロードするカスタム スクリプト拡張機能では、パッケージを取得するために必要な送信接続を確立できませんでした。 パブリック クラスターの場合、ノードはポート 443 の Microsoft Container Registry (MCR) エンドポイント (mcr.microsoft.com) と通信しようとします。

トラフィックがブロックされる理由は多数あります。 このような状況では、接続をテストする最善の方法は、Secure Shell プロトコル (SSH) を使用してノードに接続することです。 接続を確立するには、「メンテナンスまたはトラブルシューティングのために Azure Kubernetes Service (AKS) クラスター ノードに接続する」の手順に従います。 次に、次の手順に従って、クラスター上の接続をテストします。

  1. ノードに接続したら、 コマンドと dig コマンドをnc実行します。

    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. HTTP プロキシを使用して AKS クラスターを作成する場合は、ノードに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"
    

ソリューション

次の表に、トラフィックがブロックされる可能性がある特定の理由と、それぞれの理由に対応するソリューションを示します。

問題 解決方法
ファイアウォール規則またはプロキシ サーバーによってトラフィックがブロックされる このシナリオでは、ファイアウォールまたはプロキシ サーバーがエグレス フィルター処理を行います。 必要なすべてのドメインとポートが許可されていることを確認するには、「Azure Kubernetes Service (AKS)のクラスター ノードのエグレス トラフィックを制御する」を参照してください。
クラスター ネットワーク セキュリティ グループ (NSG) によってトラフィックがブロックされる クラスターに接続されている NSG で、ポート 443、ポート 53、またはエンドポイントへの接続に使用する必要があるその他のポートでブロックされていないことを確認します。 詳細については、「Azure Kubernetes Service (AKS)のクラスター ノードのエグレス トラフィックを制御する」を参照してください。
AAAA (IPv6) レコードがファイアウォールでブロックされている ファイアウォールで、Azure DNS でエンドポイントの解決をブロックするものが何も存在しないことを確認します。
プライベート クラスターで内部 Azure リソースを解決できない プライベート クラスターでは、カスタム DNS を使用する場合は、アップストリーム DNS サーバーとして Azure DNS IP アドレス (168.63.129.16) を追加する必要があります。 アドレスが DNS サーバーに設定されていることを確認します。 詳細については、「プライベート AKS クラスターの作成」と「IP アドレス 168.63.129.16 とは」を参照してください。

詳細

サードパーティのお問い合わせ窓口に関する免責事項

Microsoft では、このトピックに関する追加情報を見つけるのに役立つサード パーティの連絡先情報を提供しています。 将来予告なしに変更されることがあります。 Microsoft は、第三者の連絡先情報の正確性を保証しません。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。