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に向けた機能成熟が期待される。