このトピックでは、GKE on AWS が AWS Virtual Private Cloud(VPC)とクラスタの両方のドメイン ネーム サービス(DNS)とやり取りする方法について説明します。
AWS VPC DNS
このセクションでは、GKE on AWS に 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 サーバーのどちらを使用するかを設定します。
ホスト型 DNS の使用
ホスト型 DNS を使用するには、コントロール プレーンとノードプールのセキュリティ グループが TCP と UDP ポート 53 アウトバウンド トラフィックを許可する必要があります。
サポートされている 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.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 - 外部名(
example.net
など)の場合は Amazon DNS サーバー
次のステップ
- AWS における VPC 向けの DNS サポートについて確認する。
- Kubernetes クラスタで DNS が使用される仕組みの概要を確認する。Service と Pod の DNS をご覧ください。