EKS 中的 DNS 故障?真正的瓶颈是 AWS 网络限制

发布: (2025年12月18日 GMT+8 14:51)
4 min read
原文: Dev.to

Source: Dev.to

DNS 调查概览

在 DNS 调查期间,我最初关注 CoreDNS 和 NodeLocal DNS 指标。
真正的突破出现在我开始将 DNS 失败与 AWS 实例级网络限制关联起来时。
最有价值的信号来自 EC2 ENA 驱动通过 ethtool 暴露的网络配额指标。

EC2 ENA 配额指标

指标描述
ethtool_linklocal_allowance_exceeded因对链路本地服务的流量超过每秒数据包数(PPS)限制而被丢弃的包。此限制直接影响 DNS、IMDS 和 Amazon Time Sync。
ethtool_conntrack_allowance_available在达到实例的连接跟踪限制之前,仍可跟踪的剩余连接数。(仅在 Nitro 系列实例上受支持。)
ethtool_conntrack_allowance_exceeded因连接跟踪限制被超出而导致新连接无法建立,进而被丢弃的包。
ethtool_bw_in_allowance_exceeded因入站聚合带宽超过实例限制而被排队或丢弃的包。
ethtool_bw_out_allowance_exceeded因出站聚合带宽超过实例限制而被排队或丢弃的包。
ethtool_pps_allowance_exceeded因双向每秒数据包数(PPS)限制被超出而被排队或丢弃的包。

所有 *_allowance_exceeded 指标理想情况下应保持为零。
任何持续的非零值都表明实例层面的网络瓶颈。

收集指标

这些指标由 EC2 ENA 驱动通过 ethtool 暴露,由 node exporter 收集,Prometheus 抓取,并在 Grafana 中可视化。
在 Amazon Linux EKS 节点上,ethtool 默认已安装。要收集这些指标,需要在 node exporter 容器中启用 ethtool 收集器:

# node exporter container configuration
containers:
  - args:
      - --collector.ethtool
      - --collector.ethtool.device-include=(eth|em|eno|ens|enp)[0-9s]+
      - --collector.ethtool.metrics-include=.*

应用此更改后,指标将在 Prometheus 和 Grafana 中可用。

Prometheus 指标

  • 当前可用配额

    node_ethtool_conntrack_allowance_available{job="node-exporter"}
  • 配额超出计数器(转换为速率)

    sum by (instance) (
      rate(
        node_ethtool_conntrack_allowance_exceeded{job="node-exporter"}[1m]
      )
    )

    其他配额超出指标也可以创建类似面板:

    • node_ethtool_bw_in_allowance_exceeded
    • node_ethtool_bw_out_allowance_exceeded
    • node_ethtool_pps_allowance_exceeded
    • node_ethtool_linklocal_allowance_exceeded

每个面板显示每秒每节点丢弃的包数。

Grafana 仪表盘

完整的 Grafana 仪表盘 JSON(名为 Network limits dashboard)可视化每个节点的所有配额超出指标。所有面板都是基于节点的时间序列面板,帮助将网络饱和度与 DNS 错误或延迟关联起来。

关键要点

  • 所有配额超出指标都与 EC2 实例规格相关,唯一例外是链路本地流量,其固定限制为 每秒 1024 包,不随实例大小变化。
  • 这一固定限制解释了即使 CPU、内存和 Pod 级别指标看起来健康,DNS 仍可能失败的原因。
  • 瓶颈存在于 Kubernetes 之下,即 EC2 网络层。
  • 在排查 EKS 上间歇性 DNS 失败时,不要仅停留在 CoreDNS 指标——务必检查实例级网络配额。

如需了解 DNS 配置错误的更多背景,请参阅文章 The Hidden DNS Misconfiguration That Was Killing Performance in Our EKS Cluster (and How We Fixed it)

Back to Blog

相关文章

阅读更多 »

识别 AWS 云的设计原则

AWS Well-Architected Framework AWS Well‑Architected Framework 为构建安全、弹性、高效、成本效益的云架构提供指导,……