ドメイン ネーム システム (DNS) 解決は Azure Kubernetes Service (AKS) の重要なコンポーネントであり、ポッドとサービスは IP アドレスではなく人間が判読できる名前を使用して通信できます。 AKS には、内部クラスター リソースと外部エンドポイントの両方にシームレスな名前解決を確保するための組み込みの DNS サービスが用意されています。 AKS での DNS のしくみを理解することは、クラスターオペレーターと開発者が信頼性の高い接続を確保し、パフォーマンスを最適化し、ネットワークの問題を効果的にトラブルシューティングするのに役立ちます。
Azure Kubernetes Service の CoreDNS
CoreDNS は Azure Kubernetes Service (AKS) の既定の DNS サービスであり、クラスターで実行されているワークロードの内部名前解決とサービス検出を提供します。 これは kube-system 名前空間内のポッドのセットとして動作し、Kubernetes ネットワークと緊密に統合されています。
AKS のポッドが DNS クエリ (別のサービスの名前の解決など) を発行すると、要求は CoreDNS ポッドにルーティングされます。 これらのポッドはクエリを処理し、適切な IP アドレスを返すか、外部ドメインのアップストリーム DNS サーバーに要求を転送します。
このアーキテクチャにより、マネージド環境での柔軟性と運用上の安全性のバランスが確保されます。 AKS で CoreDNS をカスタマイズする方法の詳細については、 CoreDNS カスタマイズ ガイドを参照してください。
CoreDNS プロジェクトについては、CoreDNS アップストリーム プロジェクト ページを参照してください。
Azure Kubernetes Service の LocalDNS
注
このドキュメントでは、LocalDNS の概要と AKS の利点について説明します。 セットアップ手順は含まれません。 LocalDNS の有効化と構成に関するガイダンスについては、 LocalDNS のハウツー ガイドを参照してください。
概要
LocalDNS は、Azure Kubernetes Service (AKS) の高度な機能であり、各ノードにドメイン ネーム システム (DNS) プロキシをデプロイして、回復性が高く待機時間の短い DNS 解決を提供します。 このプロキシは、DNS クエリをローカルで処理することで、CoreDNS アドオン ポッドへのトラフィックを減らし、クラスターの全体的な DNS の信頼性とパフォーマンスを向上させます。 LocalDNS は、DNS クエリ ボリュームが多い大規模なクラスターや環境で特に役立ちます。一元化された DNS 解決がボトルネックになる可能性があります。
LocalDNS が有効になっている場合、AKS はローカル DNS キャッシュを各ノードに systemd サービスとしてデプロイします。 ノード上のポッドは DNS クエリをこのローカル キャッシュに送信し、ネットワーク ホップを減らすことで迅速な解決を可能にします。 この方法では、テーブル conntrack 使用も最小限に抑え、テーブル枯渇のリスクを低減します。 さらに、アップストリーム DNS が使用できなくなった場合、LocalDNS は構成可能な期間、キャッシュされた応答の提供を継続でき、ポッドの接続性とサービスの信頼性を維持するのに役立ちます。
主要な機能
DNS 解決の待機時間の短縮: 各 AKS ノードは、LocalDNS
systemdサービスを実行します。 ノードで実行されているワークロードは、DNS クエリをこのサービスに送信します。これにより、ローカルで解決され、ネットワーク ホップが減り、DNS 参照が高速化されます。カスタマイズ可能な DNS 動作:
kubeDNSOverridesとvnetDNSOverridesを使用して、クラスター内の DNS 動作を制御できます。conntrack のレースと conntrack テーブルの枯渇を避けます。 ポッドは、新しい
conntrackテーブル エントリを作成せずに、同じノード上の LocalDNS サービスに DNS クエリを送信します。 接続追跡をスキップすると、 conntrack の競合 が減り、ユーザー データグラム プロトコル (UDP) DNS エントリがconntrackテーブルでいっぱいにならないようにします。 この最適化により、conntrackテーブルの枯渇と競合状態によって発生する接続の切断と拒否を防ぐことができます。TCP にアップグレードされた接続:
localdnsキャッシュからクラスターの CoreDNS サービスへの接続では、伝送制御プロトコル (TCP) が使用されます。 TCP を使用すると、接続の再調整が可能になり、サーバーが接続を閉じるときにconntrackテーブル エントリが削除されます (既定の 30 秒のタイムアウトがある UDP 接続とは異なります)。localdnsサービスは引き続き UDP トラフィックをリッスンするため、アプリケーションは変更を必要としません。キャッシュ: LocalDNS キャッシュ プラグインは、「serveStale」と「生存時間 (TTL)」の設定で構成できます。
serveStale、serveStaleDurationInSeconds、およびcacheDurationInSecondsパラメーターは、アップストリームの DNS 停止中でも、DNS の回復性を実現するように構成できます。プロトコル制御: ドメインごとに DNS クエリ プロトコル (PreferUDP や ForceTCP など) を設定できます。 この柔軟性により、特定のドメインの DNS トラフィックを最適化したり、ネットワーク要件を満たしたりできます。
その他の利点と考慮事項
| メリット | 考慮事項 |
|---|---|
| スケーラビリティの向上: 一元化された CoreDNS ポッドの負荷を軽減 | 最小限のリソース オーバーヘッド: 各ノードで少量の CPU とメモリを使用します |
| シームレスな統合: 既存のアプリケーション接続を変更する必要はありません | 構成の変更: 更新にはノード イメージのアップグレードが必要です。これにより、一時的な中断が発生する可能性があります |
| 無効な検索ドメインをブロックする: ノード レベルで無効な DNS クエリを防止します |
LocalDNS を使用すると、ワークロードに対する DNS 解決の高速化と信頼性の向上、DNS 関連の停止のリスクの軽減、AKS 環境内の DNS トラフィックの制御の強化を実現できます。
次のステップ
LocalDNS を有効にし、AKS クラスターでその設定を構成する方法については、 LocalDNS のハウツー ガイドを参照してください。
コア ネットワークの概念の詳細については、「AKS でのアプリケーションに対するネットワークの概念」を参照してください。