服务发现和 DNS 概览

本主题介绍 GKE on Azure 如何与域名服务 (DNS) 进行交互。

服务发现

服务发现是指工作负载在不知道服务 IP 地址的情况下发现服务的过程。本部分介绍 GKE on Azure 如何实现服务发现和托管式 DNS。

Kubernetes 会自动生成使用以下规范的服务名称:

service.namespace.svc.cluster.local

其中:

  • service:您的服务的名称
  • namespace:服务的命名空间

工作负载还会使用 DNS 名称访问外部服务,例如 example.net。如需详细了解 Kubernetes 中 DNS 的行为,请参阅服务和 pod 的 DNS

CoreDNS

GKE on Azure 使用 CoreDNS 解析集群内的 DNS 名称。CoreDNS 在 kube-system 命名空间中作为冗余的可扩缩 Deployment 运行。CoreDNS Deployment 具有一个 Service,它会对 CoreDNS pod 进行分组并为其提供单一 IP 地址。CoreDNS Deployment 会根据集群的大小和使用情况进行扩缩。

NodeLocal DNSCache

GKE on Azure 使用 NodeLocal DNSCache 提高 DNS 查找性能。NodeLocal DNSCache 在集群中的每个节点上作为 DaemonSet 运行。当 pod 发出 DNS 请求时,该请求会首先转到与 pod 相同节点上的 DNS 缓存。如果该缓存无法解析该 DNS 请求,则会将该请求进行如下转发:

  • 如果是内部名称(例如 foo.bar.svc.cluster.local),则转发到 CoreDNS

后续步骤