サービス ディスカバリと DNS の概要

このトピックでは、GKE on Azure が Domain Name Services(DNS)とやり取りする方法について説明します。

サービス ディスカバリ

サービス ディスカバリとは、ワークロードがサービスの IP アドレスの情報を使用せずにサービスを検出するプロセスです。このセクションでは、GKE on AWS がサービス ディスカバリとマネージド DNS を実装する方法について説明します。

Kubernetes は、次の仕様を使用するサービス名を自動的に生成します。

service.namespace.svc.cluster.local

ここで

  • service: サービスの名前
  • namespace: サービスの Namespace

ワークロードは、DNS 名を使用して外部サービス(example.net など)にもアクセスします。Kubernetes での DNS の動作の詳細については、Service と Pod の DNS をご覧ください。

CoreDNS

GKE on AWS は、CoreDNS を使用してクラスタ内の DNS 名を解決します。CoreDNS は、スケーリングされた冗長な Deployment として kube-system Namespace 内で実行されます。CoreDNS Deployment の Service が CoreDNS Pod をグループ化し、単一の IP アドレスを割り当てます。CoreDNS Deployment は、クラスタのサイズと使用状況に基づいてスケーリングされます。

NodeLocal DNSCache

GKE on AWS は NodeLocal DNSCache を使用して、DNS ルックアップのパフォーマンスを向上させます。NodeLocal DNSCache は、クラスタ内の各ノードで DaemonSet として動作します。Pod が DNS リクエストを行うと、そのリクエストはまず同じノードの DNS キャッシュに送信されます。キャッシュで DNS リクエストを解決できない場合、リクエストはキャッシュによって次のいずれかに転送されます。

  • 内部名(foo.bar.svc.cluster.local など)の場合は CoreDNS

次のステップ

  • Kubernetes クラスタで DNS が使用される仕組みの概要については、Service と Pod の DNS をご覧ください。