工作负载还会使用 DNS 名称访问外部服务,例如 example.net。如需详细了解 Kubernetes 中 DNS 的行为,请参阅服务和 pod 的 DNS。
CoreDNS
GKE on AWS 使用 CoreDNS 解析集群中的 DNS 名称。CoreDNS 在 kube-system 命名空间中作为冗余的可扩缩 Deployment 运行。CoreDNS Deployment 具有一个 Service,它会对 CoreDNS pod 进行分组并为其提供单一 IP 地址。CoreDNS Deployment 会根据集群的大小和使用情况进行扩缩。
NodeLocal DNSCache
GKE on AWS 使用 NodeLocal DNSCache 来提升 DNS 查找性能。NodeLocal DNSCache 在集群中的每个节点上作为 DaemonSet 运行。当 pod 发出 DNS 请求时,该请求会首先转到与 pod 相同节点上的 DNS 缓存。如果该缓存无法解析该 DNS 请求,则会将该请求进行如下转发:
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-09-04。"],[],[],null,["# Service discovery and DNS overview\n\nThis topic describes how GKE on AWS interacts with Domain\nName Services (DNS) on both your AWS Virtual Private Cloud (VPC) and clusters.\n\nAWS VPC DNS\n-----------\n\nThis section describes how you can configure a VPC for GKE on AWS.\n\n### Configuring VPC DNS\n\nGKE on AWS supports a variety of DNS configurations in your AWS VPC.\nYou configure your VPC's DNS settings when you\n[Create a DHCP options set](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html#CreatingaDHCPOptionSet).\nFor more information, see\n[DNS support for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).\n\nYou can configure the following options:\n\nDNS Hostnames\n: This sets whether EC2 instances with public IP addresses get corresponding\n public DNS hostnames. You set this value using the `enableDNSHostnames`\n field in your VPC's DHCP option set. For more information, see\n [VPC DNS Hostnames](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-hostnames)\n and\n [DHCP options sets for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html).\n\nEC2 DNS Hostnames\n: This sets whether EC2 instances receive a default DNS hostname or a custom\n DNS hostname.\n\nDNS server\n: Whether your VPC's DHCP options set uses either the AWS Route53 DNS server\n (with the `AmazonProvidedDNS` option), or a hosted DNS server.\n\n#### Using hosted DNS\n\nTo use a hosted DNS, your\n[control plane](/kubernetes-engine/multi-cloud/docs/aws/reference/security-groups#control_plane_security_groups)\nand [node pool](/kubernetes-engine/multi-cloud/docs/aws/reference/security-groups#node_pool_security_groups)\nsecurity groups must allow outbound traffic on TCP and UDP port 53.\n\n#### Supported VPC DNS configurations\n\nThe following table includes DNS configurations supported by\nGKE on AWS:\n\nService discovery\n-----------------\n\nService discovery is the process where workloads discover services without\nknowing the service's IP address. This section describes how\nGKE on AWS implements service discovery and managed DNS.\n\nKubernetes automatically generates service names that use the following\n[specification](https://github.com/kubernetes/dns/blob/master/docs/specification.md):\n\n\u003cvar translate=\"no\"\u003eservice\u003c/var\u003e`.`\u003cvar translate=\"no\"\u003enamespace\u003c/var\u003e`.svc.cluster.local`\n\nWhere:\n\n- \u003cvar translate=\"no\"\u003eservice\u003c/var\u003e: your service's name\n- \u003cvar translate=\"no\"\u003enamespace\u003c/var\u003e: your service's Namespace\n\nWorkloads also access external services--- for example `example.net`---\nusing DNS names. For more information on the behavior of DNS in Kubernetes, see\n[DNS for Services and Pods](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/).\n\n### CoreDNS\n\nGKE on AWS uses\n[CoreDNS](https://kubernetes.io/blog/2018/07/10/coredns-ga-for-kubernetes-cluster-dns/)\nto resolve DNS names within clusters. CoreDNS runs as a redundant, scaled\n[Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)\nin the `kube-system`\nnamespace. The CoreDNS deployment has a\n[Service](/kubernetes-engine/docs/concepts/service) that groups the CoreDNS Pods\nand gives them a single IP address. The CoreDNS Deployment scales with the\ncluster's size and usage.\n\n### NodeLocal DNSCache\n\nGKE on AWS uses\n[NodeLocal DNSCache](https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/)\nto improve DNS lookup performance. NodeLocal DNSCache runs as a\n[DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)\non each node in your cluster. When a Pod makes a DNS request, the request first\ngoes to the DNS cache on the same node. If the cache can't resolve the DNS\nrequest, the cache forwards the request to either:\n\n- CoreDNS for an internal name--- for example `foo.bar.svc.cluster.local`\n- The [Amazon DNS server](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support), for an external name--- for example `example.net`\n\nWhat's next\n-----------\n\n- Read about AWS [DNS support for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).\n- For an overview of how DNS is used in Kubernetes clusters, see [DNS for Services and Pods](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/)."]]