6月9日,GKE 的产品总监通过博客向外宣布发布 Container-native Cloud DNS—— Cloud DNS 与 GKE 的原生集成,通过 Cloud DNS 提供集群内 DNS 解决方案, 可扩展、全功能的 DNS服务。

在使用 Cloud DNS 为集群 DNS 提供服务时,引入了以下几个新功能:

  • 无需集群内的 DNS Pods 进行托管;
  • DNS 解析本地到每个 GKE 节点,以实现高吞吐量,水平可扩展的 DNS 性能;
  • 针对 GKE 服务的多区域、跨集群的服务发现;
  • 与 GoogleCloud 的操作套件集成,用于 DNS 监控和日志记录;

Container-native Cloud DNS 通过消除集群为管理 DNS 分配资源的需要,减轻了集群管理员的操作负担。它还可以透明地扩展—所以我们无需担心由于名称解析需求增加而产生的瓶颈。

另外,它为集群外的 GKE 应用程序提供公共和私有 DNS 解析功能。这种灵活性开辟了许多服务发现用例,减少了集群边界带来的摩擦。最后,现有的 Cloud DNS 工具、监控和日志可以扩展到 GKE 内部的所有 DNS 解析,而且无需单独的容器和虚拟机监控系统。

总之,Cloud DNS 提供了一个高可用性、全球分布式的 DNS 基础设施,完全由谷歌管理。使用 Cloud DNS,每个新的服务都会创建一条 DNS 记录,且可以使用云 DNS 数据平面在 GKE 节点上本地解析。本地缓存和解析确保 DNS 请求不需要经过网络,从而显著提高性能。

(图1)

在该图中,Service backend 选择正在运行的 backend Pod。clouddns-controller 为 Service backend 创建 DNS 记录。

Pod frontend 向 169.254.169.254 处的 Compute Engine 本地元数据服务器发送服务 backend IP 地址的 DNS 请求。

Cloud DNS 数据平面在每个 Compute Engine 虚拟机 (VM) 实例中本地运行。根据 Kubernetes 服务的类型,Cloud DNS 会将服务名称解析为其虚拟 IP 地址或端点 IP 地址列表。

Pod frontend 解析 IP 地址后,Pod 可以将流量发送到 Service backend 以及 Service 后面的任何 Pod。

集群范围 DNS

通过一种称为集群范围 DNS 的新操作模式,每个 GKE 集群都有自己的私有 DNS 区域。用户只能解析该 DNS 区域范围内的服务,集群外的 VM 或 Pod 无法看到该集群的 DNS 记录。这允许使用kube-dns 的 GKE 集群透明地迁移到 Cloud DNS,而无需进行应用程序更改。记录会自动在 Cloud DNS 与 ClusterIP 或 Pod ip 之间同步,具体取决于服务类型。

(图2)

VPC 范围的 DNS

由于其全球性、多区域的规模,Cloud DNS 使 GKE 的一种新的运营模式称为 VPC 范围的 DNS。这使得 GKE DNS 记录可以在整个 VPC 内解析,真正实现全局、多集群的服务。
通过自定义集群 DNS 域的新功能,GKE 现在可以为每个集群提供唯一的域,允许他们可以通过不同集群的 GKE 集群、不属于 GKE 的VM ,甚至可以通过 VPN 访问本地客户端进行唯一的解析。

VPC 范围的 DNS 在网络中的所有 GKE 集群和客户端上创建一个单一的服务发现域。这种无缝的服务发现是完全自动的,并且可以很容易地在每个集群的基础上启用。通过全球服务发现、每个节点上的本地 DNS 解析,以及与 GCP 的运营套件和可观的集成,Container-native Cloud DNS 极大地改善了运营商的体验,同时极大地提高了应用程序性能。如果想试使用可以访问:

https://cloud.google.com/kubernetes-engine/docs/how-to/cloud-dns


返回全部