AKSにLocalDNSが登場——CoreDNSの集中負荷問題を解決

Microsoftは、Azure Kubernetes Service(AKS)向けの新機能「LocalDNS」をパブリックプレビューとして公開した。この機能はKubernetesクラスター内のDNS解決アーキテクチャを根本から改善するものだ。

LocalDNSとは何か

従来のAKSクラスターでは、すべてのDNSクエリがクラスター内の中央DNSサーバーであるCoreDNSに集中する構成となっていた。ノード数やPod数が増加するにつれてCoreDNSへの負荷は増大し、大規模クラスターではDNS解決のレイテンシ増加や、CoreDNSが単一障害点(SPOF)になるリスクが課題とされてきた。

LocalDNSはこの問題に対処するため、各ノードにDNSキャッシュプロキシをDaemonSetとして配置するアプローチを採用する。ノードローカルでDNSクエリをキャッシュ・処理することで、CoreDNSへのリクエストを大幅に削減できる。Kubernetes本家では「NodeLocal DNSCache」として知られるパターンで、AKSがマネージドサービスとして正式サポートする形だ。

得られるメリット

パフォーマンスの向上:ノードローカルでDNSキャッシュを保持するため、ネットワークホップが減少しDNS解決のレイテンシが低下する。頻繁にアクセスされるサービス名の解決は特に高速化が期待できる。

高可用性の実現:CoreDNSへの依存が軽減されることで、CoreDNS Podの障害や再起動時にもDNS解決が継続しやすくなる。大規模本番クラスターでのレジリエンス向上に直結する。

スケーラビリティの改善:クラスター拡張時にCoreDNSがボトルネックになりにくくなり、Pod数の増加にともなうDNS負荷増大を自然に分散できる。

セキュリティ上の制約:vnetDNSOverridesの転送制限

注目すべき点として、外部ドメインの名前解決をvnetDNSOverrides経由でカスタムDNSサーバーへ転送する構成は、セキュリティ上の理由から拒否されることが明記されている。これはDNSリバインディング攻撃などのリスクを防ぐための設計判断であり、外部DNS転送が必要なケースでは代替設計を検討する必要がある。

日本のAKSユーザーへの影響

多数のマイクロサービスが相互に通信するシステムや、高トラフィックなサービスを運用するケースでは、DNS解決のパフォーマンスがシステム全体のレイテンシに影響する。LocalDNSはそうした環境における「見えにくいボトルネック」の解消策として有効だ。

現在はパブリックプレビュー段階のため、本番環境への適用には動作検証が推奨される。Azureポータルまたはaz CLIからAKSクラスターの設定で有効化できる見込みだ。GAに向けた機能成熟が期待される。


元記事: Public Preview: LocalDNS for AKS