观察 GKE DNS 流量

本文档介绍了如何使用 GKE DNS 指标观察 DNS 流量。对于运行以下版本的集群,您可以在 Google Cloud 控制台中查看 GKE DNS 指标:

  • 对于增强型 KubeDNS,需要 GKE 1.36 版或更高版本

  • 对于 NodeLocalDNS,需要 GKE 版本 1.35.2-gke.1090000 或更高版本

查看 DNS 指标

您可以在 Google Cloud 控制台的 Metrics Explorer 中通过以下方式查看 GKE DNS 指标:

使用 GKE DNS 可观测性信息中心

Google 在 Monitoring > 信息中心 > GKE DNS 可观测性 - 集群视图中提供了一个预定义的 DNS 信息中心。此信息中心显示 KubeDNS 和 NodeLocalDNS 指标。您需要使用 NodeLocalDNS 或 KubeDNS 的集群才能查看信息中心。

使用 GKE DNS 可观测性信息中心的示例:

首先,前往 Monitoring > 信息中心,如下图所示:

第一张屏幕截图:显示 Google Cloud 控制台中的 DNS 信息中心

此屏幕截图显示了左侧的 Google Cloud 控制台导航菜单。监控部分已展开,信息中心突出显示,以便引导您进行导航。

然后,前往信息中心 GKE DNS 可观测性 - 集群视图

第二张屏幕截图:显示 Google Cloud 控制台中的 DNS 信息中心

此屏幕截图显示了信息中心目录页面,其中“GKE DNS 可观测性 - 集群视图”信息中心在可用信息中心列表中突出显示。点击此链接可打开集群级 DNS 指标的可视化图表。

创建自定义信息中心

如需创建自定义信息中心并设置与您所监控的任何指标类似的提醒,您可以使用 Google Cloud Observability 工具,例如 Cloud Monitoring Metrics Explorer

查询 DNS 可观测性指标

如需查看集群的 GKE DNS 指标,请在 Google Cloud 控制台的 Metrics Explorer 中执行以下步骤:

  1. 前往 Monitoring > Metrics Explorer 页面。

  2. 选择指标字段中,过滤出 kubernetes.io/networking/dns/

  3. KubeDNS 指标位于 Kubernetes 容器资源下,而 NodeLocalDNS 指标位于 Kubernetes 节点资源下。

  4. (可选)根据标签选择任何所选的过滤条件。

Google Cloud 控制台中 Monitoring > Metrics Explorer 下的 KubeDNS 指标和 NodeLocalDNS 指标示例:

显示 Google Cloud 控制台中 KubeDNS 指标的屏幕截图

此屏幕截图显示了配置为查询 KubeDNS 指标的 Metrics Explorer 页面。选择指标字段会显示过滤后的路径 kubernetes.io/networking/dns/kubedns/,生成的图表会显示 KubeDNS 请求和缓存状态的活跃时间序列图。

显示 Google Cloud 控制台中 NodeLocalDNS 指标的屏幕截图

此屏幕截图显示了配置为查询 NodeLocalDNS 指标的 Metrics Explorer 页面。该查询指定了 Kubernetes 节点资源下的 kubernetes.io/networking/dns/node_local_dns/ 指标路径,图表中突出显示了表示本地 DNS 请求和延迟数据的有效时间序列图。

GKE DNS 指标列表

以下指标可用于监控 GKE DNS 性能和健康状况。

KubeDNS 指标

在 GKE 1.36 版及更高版本中,以下指标适用于 KubeDNS:

指标类型 说明
kubernetes.io/networking/dns/kubedns/dns_request_count KubeDNS 收到的 DNS 请求总数。
kubernetes.io/networking/dns/kubedns/dns_request_latencies 每个请求的解决时间直方图。
kubernetes.io/networking/dns/kubedns/dns_cache_request_count 按缓存状态(命中或未命中)过滤的 DNS 请求的计数器。
kubernetes.io/networking/dns/kubedns/forwarding_request_latencies 每个转发请求所用时间的直方图。
kubernetes.io/networking/dns/kubedns/max_concurrent_rejected_request_count 因并发查询数达到上限而遭拒的查询数。

如需计算 forwarding_request_count 指标,您可以在以下查询中使用 kubernetes.io/networking/dns/kubedns/forwarding_request_latencies 指标:sum by (cluster_name) (rate({"kubernetes.io/networking/dns/kubedns/forwarding_request_latencies_count"}[${__interval}]))

默认情况下, Google Cloud 控制台会对 request_count 指标应用速率运算。您可以在 PromQL 来源中停用此功能。

NodeLocalDNS 指标

在 GKE 1.35.2-gke.1090000 版及更高版本中,NodeLocal DNSCache 提供以下指标:

指标类型 说明
kubernetes.io/networking/dns/node_local_dns/dns_request_count NodeLocal DNSCache 收到的 DNS 请求总数。
kubernetes.io/networking/dns/node_local_dns/dns_request_latencies 每个请求的解决时间直方图。
kubernetes.io/networking/dns/node_local_dns/dns_cache_request_count 按缓存状态(命中或未命中)过滤的 DNS 请求的计数器。
kubernetes.io/networking/dns/node_local_dns/forwarding_request_latencies 每个转发请求所用时间的直方图。
kubernetes.io/networking/dns/node_local_dns/max_concurrent_rejected_request_count 因并发查询数达到上限而遭拒的查询数。

如需计算 forwarding_request_count 指标的值,您可以在以下查询中使用 kubernetes.io/networking/dns/node_local_dns/forwarding_request_latencies 指标:sum by (cluster_name) (rate({"kubernetes.io/networking/dns/node_local_dns/forwarding_request_latencies_count"}[${__interval}]))

请注意,在查看这些指标时,Google Cloud 控制台会自动对 request_count 指标应用速率运算,您可以从 PromQL 来源中停用此功能。

后续步骤