本主題說明 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
後續步驟
- 請參閱 AWS VPC 的 DNS 支援。
- 如要概略瞭解 Kubernetes 叢集如何使用 DNS,請參閱「服務和 Pod 的 DNS」。