仮想ネットワーク外のエンドポイントへの接続のトラブルシューティング
この記事では、Microsoft Azure Kubernetes Service (AKS) クラスターから (つまり、パブリック インターネット経由で) 仮想ネットワークの外部にあるエンドポイントへの接続をトラブルシューティングする方法について説明します。
前提条件
クライアント URL (curl) ツール。
Kubernetes kubectl ツール、またはクラスターに接続するための同様のツール。 Azure CLI を使用して kubectl をインストールするには、 az aks install-cli コマンドを実行します。
トラブルシューティングのチェックリスト
問題は永続的ですか?
手順 1: 基本的なトラブルシューティングを行う
インターネット上のパブリック エンドポイントに接続できることを確認します。 手順については、「 送信 AKS クラスター接続の基本的なトラブルシューティングを参照してください。
手順 2: AKS クラスターの送信の種類を決定する
AKS クラスターの送信の種類を識別するには、 az aks show コマンドを実行します。
az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"
送信の種類が loadBalancer
の場合、 kubenet ネットワークを使用しない限り、ルート テーブルはありません。 kubenetを使用する場合は、既定のルート テーブルに、送信インターネット接続をブロックする追加の構成がないことを確認します。 Azure CNI、動的割り当て、Azure CNI オーバーレイなどの別のネットワークを使用する場合、既定ではルート テーブルは作成されません。 この場合は、NSG (ネットワーク セキュリティ グループ) に、送信インターネット接続をブロックするカスタム構成がないことを確認します。
送信の種類が userDefinedRouting
場合は、次の条件が満たされていることを確認します。
エグレス デバイス (ファイアウォールまたはプロキシ) に到達できます。
エグレス デバイスでは、クラスターからの 取得された送信トラフィック を許可します。
AKS クラスターで許可されている FQDN の一覧を取得するには、 az aks egress-endpoints list コマンドを実行します。
az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
送信の種類が managedNATGateway
の場合は、 az network nat gateway show コマンドを実行して、AKS サブネットが NAT ゲートウェイに関連付けられているかどうかを確認します。
az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"
AKS と共に NAT ゲートウェイを使用する方法の詳細については、「 Managed NAT ゲートウェイを参照してください。
手順 3: アプリケーション ポッドに接続するときに curl 出力を確認する
curl 応答コードは、問題の種類を特定するのに役立ちます。 応答コードが使用可能になったら、問題の動作をより深く理解してみてください。 HTTP 状態コードと問題の基になる動作の詳細については、次の表を参照してください。
情報元 | リンク |
---|---|
インターネット割り当て番号機関 (IANA) | ハイパーテキスト転送プロトコル (HTTP) 状態コード レジストリ |
Mozilla | HTTP 応答の状態コード |
Wikipedia | HTTP 状態コードの一覧 |
次の HTTP 状態コードは、一覧表示されている問題を示している可能性があります。
HTTP 状態コード | 問題 | 例 |
---|---|---|
4xx |
|
|
5xx |
問題がサーバーに影響します。 | アプリケーションがダウンしているか、ゲートウェイが動作していません。 |
curl を使用して、アプリケーション エンドポイントへの接続を試みることができます。 コマンドと出力の例を次に示します。
# 404 error code example
$ curl -vv <host IP address>/test.index
* Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact
手順 4: 送信トラフィックが仮想アプライアンスを一時的にバイパスした場合の動作を確認する
エグレス デバイス (仮想アプライアンス) が問題を引き起こすかどうかを迅速にテストするために、すべてのトラフィックがインターネットを通過することを一時的に許可できます。 このセットアップを構成するには、仮想アプライアンスを介して 0.0.0.0
/0
の既定の IP アドレスとポート ルートを変更し、代わりにインターネットを経由するようにします。
仮想アプライアンスをバイパスするときにエグレス デバイスが適切に動作する場合は、仮想アプライアンスのログを調べて、拒否されたパケットを確認し、それに応じて仮想アプライアンスに許可規則を追加します。
問題は断続的ですか。
多くの理由で断続的な送信の問題が発生する可能性があります。 断続的な送信接続の問題のトラブルシューティングを行うには、次の手順を試してください。
手順 1: ポッドまたはノード リソースが使い果たされているかどうかを確認する
次のコマンドを実行して、リソースの使用量を確認します。
kubectl top pods
kubectl top nodes
手順 2: オペレーティング システム ディスクが頻繁に使用されているかどうかを確認する
オペレーティング システム ディスクが頻繁に使用されているかどうかを確認するには、次の手順に従います。
Azure ポータルで仮想マシン スケール セット検索して選択。
スケール セットの一覧で、AKS クラスターに使用するスケール セットを選択します。
スケール セットのナビゲーション ウィンドウで、 Monitoring セクションに移動し、 Metrics を選択します。
次のフィールドを探して、スケール セットのディスク メトリックを Metrics セクションから表示します。
フィールド 値 スコープ VMSS 名 メトリックの名前空間 仮想マシンのホスト メトリック OS とデータ ディスクのメトリック
メトリックの詳細については、「 OS ディスクとデータ ディスクのメトリックを参照してください。
ディスク使用率に関する AKS の推奨事項を表示するには、次の手順に従います。
Azure ポータルでKubernetes サービス検索して選択。
Kubernetes サービスの一覧で、AKS クラスターの名前を選択します。
AKS クラスターのナビゲーション ウィンドウで、 Monitoring セクションに移動し、 Advisor の推奨事項を選択します。
ディスクの使用状況に関する推奨事項を確認します。
OS ディスクが頻繁に使用されている場合は、次の解決策を使用することを検討してください。
OS ディスク サイズを増やします。
これらの解決策で問題が解決しない場合は、ディスクに対して大量の読み取り/書き込み操作を行うプロセスを分析します。 次に、OS ディスクではなくデータ ディスクにアクションを移動できるかどうかを確認します。
手順 3: 送信元ネットワーク アドレス変換ポートが使い果たされているかどうかを確認する
アプリケーションが多数の送信接続を行っている場合、送信デバイスの IP アドレスで使用可能なポートの数が不足する可能性があります。 メトリック、アラート、リソース正常性を使用した Standardard ロード バランサーの診断に従って既存のロード バランサーの source ネットワーク アドレス変換 (SNAT) ポートの使用状況と割り当てを監視します。 監視して、 SNAT ポート枯渇のリスクを確認または判断します。
割り当てられた SNAT ポートの最大数に達しているか、超えていますか? その場合は、アプリケーションを確認して、既存の接続が再利用されているかどうかを判断できます。 詳細については、「 接続を効率的に使用するためのアプリケーションの設計を参照してください。
アプリケーションが正しく構成されていて、割り当てられたポートの既定の数よりも多くの SNAT ポートが必要な場合は、次の手順に従います。
エグレス デバイスでパブリック IP の数を増やします。 エグレス デバイスがロード バランサーの場合は、ロード バランサーでパブリック IP アドレスの数を増やすことができます。
サードパーティのお問い合わせ窓口に関する免責事項
サードパーティのお問い合わせ窓口に関する情報は、ユーザーの便宜のために提供されているものであり、 この連絡先情報は、予告なしに変更される可能性があります。 マイクロソフトは、掲載されている情報に対して、いかなる責任も負わないものとします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。