Azure Kubernetes 服务中的 DNS 解析 (AKS)

域名系统(DNS)解析是 Azure Kubernetes 服务(AKS)中的一个关键组件,使 Pod 和服务能够使用人工可读名称而不是 IP 地址进行通信。 AKS 提供内置的 DNS 服务,以确保内部群集资源和外部终结点的无缝名称解析。 了解 AKS 中的 DNS 的工作原理可帮助群集操作员和开发人员确保可靠的连接性、优化性能并有效地排查网络问题。

Azure Kubernetes 服务中的 CoreDNS

CoreDNS 是 Azure Kubernetes 服务(AKS)中的默认 DNS 服务,为群集中运行的工作负荷提供内部名称解析和服务发现。 它在 kube-system 命名空间中作为一组 Pod 运行,并与 Kubernetes 网络紧密集成。

当 AKS 中的 Pod 发出 DNS 查询(例如解析另一个服务的名称)时,请求将路由到 CoreDNS Pod。 这些 Pod 处理查询,并返回相应的 IP 地址,或将请求转发到外部域的上游 DNS 服务器。

此体系结构可确保在托管环境中的灵活性和作安全性之间取得平衡。 有关如何在 AKS 中自定义 CoreDNS 的详细信息,请参阅 CoreDNS 自定义指南

有关 CoreDNS 项目的信息,请参阅 CoreDNS 上游项目页

Azure Kubernetes 服务中的 LocalDNS

注释

本文档概述了 LocalDNS 是什么及其在 AKS 中的优势。 它不包括设置说明。 有关启用和配置 LocalDNS 的指导,请参阅 LocalDNS作指南

概述

LocalDNS 是 Azure Kubernetes 服务(AKS)中的一项高级功能,可在每个节点上部署域名系统(DNS)代理,以提供高度复原、低延迟的 DNS 解析。 通过在本地处理 DNS 查询,此代理可减少到 CoreDNS 加载项 Pod 的流量,从而提高群集的整体 DNS 可靠性和性能。 LocalDNS 在大型群集或具有高 DNS 查询卷的环境中尤其有用,其中集中式 DNS 解析可能会成为瓶颈。

启用 LocalDNS 后,AKS 在每个节点上部署本地 DNS 缓存作为 systemd 服务。 节点上的 Pod 将其 DNS 查询发送到此本地缓存,通过减少网络跃点来加快解析速度。 此方法还会最大程度地减少 conntrack 表使用情况,降低表耗尽的风险。 此外,如果上游 DNS 不可用,则 LocalDNS 可以在可配置的持续时间内继续提供缓存的响应,从而帮助维护 Pod 连接和服务可靠性。

显示 LocalDNS 体系结构的关系图。

关键功能

  • 减少了 DNS 解析延迟: 每个 AKS 节点都运行 LocalDNS systemd 服务。 节点上运行的工作负荷将 DNS 查询发送到此服务,该服务在本地解析这些查询,减少网络跃点并加快 DNS 查找速度。

  • 可自定义的 DNS 行为: 可以使用 kubeDNSOverridesvnetDNSOverrides 控制群集中的 DNS 行为。

  • 避免 conntrack 争用和 conntrack 表耗尽: Pod 将 DNS 查询发送到同一节点上的 LocalDNS 服务,而无需创建新的 conntrack 表条目。 跳过连接跟踪有助于减少 conntrack 争用, 并避免用户数据报协议 (UDP) DNS 条目填满 conntrack 表。 此优化可防止表耗尽和争用条件导致的 conntrack 丢弃和拒绝连接。

  • 已升级到 TCP 的连接:localdns 缓存到群集 CoreDNS 服务的连接使用传输控制协议(TCP)。 TCP 允许在服务器关闭连接时重新平衡和删除 conntrack 表项(与默认的 30 秒超时的 UDP 连接相反)。 应用程序不需要更改,因为 localdns 服务仍侦听 UDP 流量。

  • 缓存: LocalDNS 缓存插件可以使用 serveStale 和生存时间(TTL)设置进行配置。 serveStale serveStaleDurationInSeconds cacheDurationInSeconds和参数可以配置为实现 DNS 复原能力,即使在上游 DNS 中断期间也是如此。

  • 协议控制: 可以为每个域设置 DNS 查询协议(如 PreferUDP 或 ForceTCP)。 这种灵活性使你可以针对特定域优化 DNS 流量或满足网络要求。

其他优点和注意事项

优点 注意事项
更好的可伸缩性:减少集中式 CoreDNS Pod 上的负载 最少的资源开销:在每个节点上使用少量的 CPU 和内存
无缝集成:不需要对现有应用程序连接进行更改 配置更改:更新需要节点映像升级,这可能会导致临时中断
阻止无效的搜索域:防止节点级别的 DNS 查询无效

通过使用 LocalDNS,可以更快、更可靠的工作负载 DNS 解析,降低与 DNS 相关的服务中断的风险,并更好地控制 AKS 环境中的 DNS 流量。

后续步骤

若要了解如何启用 LocalDNS 并在 AKS 群集中配置其设置,请参阅 LocalDNS作指南

若要了解有关核心网络概念的详细信息,请参阅 AKS 中应用程序的网络概念