服務探索和 DNS 總覽

本主題說明 GKE on AWS 如何與 AWS 虛擬私有雲 (VPC) 和叢集上的網域名稱服務 (DNS) 互動。

AWS 虛擬私有雲 DNS

本節說明如何為 AWS 上的 GKE 設定 VPC。

設定 VPC DNS

GKE on AWS 支援 AWS VPC 中的各種 DNS 設定。您可以在建立 DHCP 選項集時,設定 VPC 的 DNS 設定。詳情請參閱「VPC 的 DNS 支援」。

您可以設定下列選項:

DNS 主機名稱
這項設定會決定具有公開 IP 位址的 EC2 執行個體是否取得對應的公開 DNS 主機名稱。您可以使用 VPC 的 DHCP 選項集中的 enableDNSHostnames 欄位設定這個值。詳情請參閱「虛擬私有雲 DNS 主機名稱」和「虛擬私有雲的 DHCP 選項集」。
EC2 DNS 主機名稱
這項設定決定 EC2 執行個體要接收預設 DNS 主機名稱還是自訂 DNS 主機名稱。
DNS 伺服器
VPC 的 DHCP 選項集是否使用 AWS Route53 DNS 伺服器 (搭配 AmazonProvidedDNS 選項),或是代管的 DNS 伺服器。

使用代管 DNS

如要使用代管 DNS,控制平面節點集區安全群組必須允許 TCP 和 UDP 通訊埠 53 的輸出流量。

支援的虛擬私有雲 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:服務的命名空間

工作負載也會使用 DNS 名稱存取外部服務,例如 example.net。如要進一步瞭解 Kubernetes 中的 DNS 行為,請參閱「服務和 Pod 的 DNS」。

CoreDNS

GKE on AWS 使用 CoreDNS 解析叢集內的 DNS 名稱。CoreDNS 會以冗餘的調整式部署形式,在 kube-system 命名空間中執行。CoreDNS 部署作業會建立 Service,將 CoreDNS Pod 分組,並為這些 Pod 指派單一 IP 位址。CoreDNS 部署會根據叢集大小和用量進行擴充。

NodeLocal DNSCache

GKE on AWS 使用 NodeLocal DNSCache 提升 DNS 查詢效能。NodeLocal DNSCache 會在叢集的每個節點上以 DaemonSet 形式執行。當 Pod 發出 DNS 要求時,要求會先傳送至同一節點上的 DNS 快取。如果快取無法解析 DNS 要求,就會將要求轉送至下列其中一個位置:

  • 內部名稱的 CoreDNS,例如 foo.bar.svc.cluster.local
  • Amazon DNS 伺服器,適用於外部名稱,例如 example.net

後續步驟