現象
次のいずれかのアクションを実行すると、"サーバーからのエラー: バックエンドのダイヤルエラー: tcp のダイヤル" エラー メッセージが表示されます。
-
kubectllogs、exec、attach、top、またはport-forwardのいずれかのコマンドを使用します。 - サードパーティの Kubernetes クライアント ツールを使用して、前のリスト アイテムのコマンドと同じ機能を実現します。
エラーが発生する理由
Kubernetes API サーバーは、いくつかのユース ケースで API 要求をアップストリーム コンポーネントに転送する必要があります。 このエラーは、API サーバーがアップストリーム コンポーネントへの TCP 接続を確立できない場合に発生します。 このようなアップストリーム コンポーネントの例としては、クラスター内にある kubernetes サービスや kubelet などがあります。
問題が解決しない場合は、ネットワークのブロックが原因である可能性があります。 責任あるネットワーク構成を特定するには、まず問題の範囲を特定します。
絞り込み: すべての kubectl サブコマンドが失敗していますか?
少なくとも kubectl exec、 kubectl logs <podname>、および kubectl top pods コマンドを実行してみてください。
kubectl logs <podname>またはkubectl execのみが失敗した場合は、ポッドを別のノードに配置することで問題が発生するかどうかを確認します。
kubectl top podsのみが失敗する場合は、問題がすべてのノードのポッドに対して発生するか、1 つのノード上のポッドに対してのみ発生するかを確認します。
原因 1: kubelet ポート (ノード:10250) がブロックされている
kubectl logsやkubectl execの実行によって発生するアクセスの問題など、ポッド固有のアクセスの問題は、API サーバーが Kubelet API にアクセスするためにポート 10250 のノードに到達できない場合に発生します。 これらの問題は、ネットワーク セキュリティ グループ (NSG) またはファイアウォールによってブロックされている接続によって発生する可能性があります。
この問題を解決するには、ノード サブネット上の NSG に、TCP ポート 10250 をブロックする可能性がある受信規則が含まれているかどうかを確認します。
原因 2: 特定のサービスが失敗する
Kubernetes は、kubectl top コマンドを実行するために、svc/metrics-server名前空間の下のkube-systemにアクセスします。 api サーバーが他のサービスにもアクセスできる admission webhooks などの他のシナリオがあります。 サービスの障害パターンによっては、エラー メッセージが異なる場合があることに注意してください。
問題のトラブルシューティングを行うには、エラー メッセージを確認して影響を受けるサービスを特定し、関連するポッド、サービス、エンドポイントの状態を確認します。
原因 3: 接続性またはトンネル障害
API Server VNet 統合が有効になっていない場合、AKS は、クラスター内のネットワークの場所に API サーバー要求をプロキシするトンネル ソリューションをデプロイします。 ほとんどの AKS クラスターでは、Konnectivity ソリューションが使用されます。 Konnectivity では、API サーバーで特別なポートを開く必要はありません。 詳細については、 AKS に必要なネットワーク規則を参照してください。
この問題を解決するには、konnectivity-agent名前空間のkube-systemが実行されていて、そのコンテナーが準備完了状態であるかどうかを確認します。 ポッドを削除して、新しいポッドの準備ができた後に接続が復旧するかどうかを確認します。
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
お問い合わせはこちらから
ご質問がある場合は、 Azure コミュニティサポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。