サービス ディスカバリと DNS

このトピックでは、GKE on AWS が AWS Virtual Private Cloud(VPC)とクラスタの両方のドメイン ネーム サービス(DNS)とやり取りする方法について説明します。

AWS VPC DNS

このセクションでは、GKE on AWS 用に AWS Virtual Private Cloud(VPC)を構成する方法について説明します。

VPC DNS の構成

GKE on AWS は、AWS VPC でさまざまな DNS 構成をサポートしています。VPC の DNS 設定は、DHCP オプション セットを作成するときに構成します。詳細については、VPC の DNS サポートをご覧ください。

次のオプションを構成できます。

DNS ホスト名
これは、パブリック IP アドレスを持つ EC2 インスタンスが、対応するパブリック DNS ホスト名を取得するかどうかを設定します。VPC の DHCP オプション セットの enableDNSHostnames フィールドを使用して、この値を設定します。詳細については、VPC DNS ホスト名VPC の DHCP オプション セットをご覧ください。
EC2 DNS ホスト名
EC2 インスタンスがデフォルトの DNS ホスト名とカスタム DNS ホスト名のどちらを取得するかを設定します。
DNS サーバー
VPC の DHCP オプション セットが AWS Route53 DNS サーバー(AmazonProvidedDNS オプションを使用)とホストされた DNS サーバーのどちらを使用するかを設定します。

サポートされている VPC DNS 構成

次の表に、GKE on AWS でサポートされる DNS 構成を示します。

DNS ホスト名を有効にする EC2 DNS ホスト名 DNS サーバー サポート対象
true デフォルト AWS Route53
false デフォルト AWS Route53
true カスタム AWS Route53
false カスタム AWS Route53
true カスタム ホスティング
false カスタム ホスティング
true デフォルト ホスティング ×
false デフォルト ホスティング ×

サービス ディスカバリ

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

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

service.namespace.svc.zone

ここで

  • service: サービスの名前
  • namespace: サービスの Namespace
  • zone: サービスの AWS ゾーン

ワークロードは、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
  • 外部名(example.net など)の場合は Amazon DNS サーバー

Calico

GKE on AWS は、Calico を使用してクラスタノード間の BGP ルーティングを確立します。

次のステップ