このページでは、Google Kubernetes Engine(GKE)がサービス ディスカバリとクラスタ DNS を実装する方法について説明します。
サービス ディスカバリ
Kubernetes でのサービス ディスカバリは、Service の IP アドレスにマッピングされた自動生成サービス名で実装されます。Service 名は my-svc.my-namespace.svc.cluster.local
のように標準仕様に準拠しています。Pod は、example.com
のような名前を使用して外部サービスにアクセスできます。Kubernetes での DNS の仕組みについては、Service と Pod の DNS をご覧ください。
GKE のクラスタ DNS
新しい Autopilot クラスタは Cloud DNS を使用します。DNS プロバイダは変更できません。
サービスを GKE 用 Service Directory に登録することもできます。
GKE には、kube-dns または Cloud DNS で使用できるオプションのアドオンとして NodeLocal DNSCache も用意されています。
kube-dns
kube-dns は Standard クラスタのデフォルト DNS プロバイダであり、1.25.9-gke.400 と 1.26.4-gke.500 より前のバージョンを実行している Autopilot クラスタ用の唯一の DNS プロバイダです。
kube-dns は、kube-dns Pod をクラスタ内のノードにスケジュールする Deployment として動作します。
Cloud DNS
Cloud DNS は、バージョン 1.25.9-gke.400 以降とバージョン 1.26.4-gke.500 以降を実行する Autopilot クラスタ用の唯一の DNS プロバイダです。
Cloud DNS は、kube-dns などのクラスタホスト型の DNS プロバイダを使用せずに、Pod と Service の DNS 解決を行います。Cloud DNS コントローラは、ClusterIP、ヘッドレス、外部名サービス用の Cloud DNS に Pod と Service の DNS レコードを自動的にプロビジョニングします。
Cloud DNS の構成方法については、GKE 向け Cloud DNS の使用をご覧ください。
NodeLocal DNSCache
NodeLocal DNSCache は、すべてのクラスタノードで DNS キャッシュ Pod をスケジュールする DaemonSet として実行されます。この DNS キャッシュにより、DNS ルックアップのレイテンシが改善され、DNS ルックアップ時間がより安定するようになります。また、kube-dns や Cloud DNS に対する DNS クエリの数を削減できます。
NodeLocal DNSCache の構成方法については、NodeLocal DNSCache の設定をご覧ください。
単一クラスタの外部にあるサービス ディスカバリ
単一クラスタのスコープ外でサービス ディスカバリを構成するには、次のいずれかの方法を使用します。
GKE 用 Service Directory
GKE 用 Service Directory は、すべての Kubernetes Deployment にわたって単一のサービスビューを提供します。Service Directory は、GKE と非 GKE の両方のサービスを 1 つのレジストリに登録できます。以下をお求めの場合、Service Directory が特に便利です。
- Kubernetes アプリケーションと Kubernetes 以外のアプリケーションを相互に検出可能にするための単一レジストリ。
- マネージド サービス ディスカバリ ツール。
- 他のクライアントからアクセス可能なサービスのメタデータを保存する。
- サービスレベルごとにアクセス権限を設定する。
Service Directory サービスは、DNS、HTTP、gRPC で解決できます。Service Directory は Cloud DNS と統合され、Service Directory 内のサービスに一致する Cloud DNS レコードを作成できます。
詳細については、GKE 用 Service Directory の構成をご覧ください。
/etc/resolv.conf
ClusterFirst
DNS ポリシーを使用する Pod の場合、/etc/resolv.conf
の値は、クラスタで有効になっている機能によって異なります。
GKE 向け Cloud DNS | NodeLocal DNSCache | /etc/resolv.conf 値 |
---|---|---|
有効 | 有効 | 169.254.20.10 |
有効 | 無効 | 169.254.169.254 |
無効 | 有効 | kube-dns サービスの IP アドレス |
無効 | 無効 | kube-dns サービスの IP アドレス |
次のステップ
- GKE 向け Cloud DNS の使用方法を確認する。
- NodeLocal DNSCache を使用して、大量の DNS クエリを必要とするクラスタにスケーラブルな DNS 解決を提供する方法を学習する。