觀察 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 提供預先定義的 DNS 資訊主頁,位於「Monitoring」>「Dashboards」>「GKE DNS Observability - Cluster View」。這個資訊主頁會顯示 KubeDNS 和 NodeLocalDNS 指標。如要查看資訊主頁,您需要使用 NodeLocalDNS 或 KubeDNS 的叢集。

使用 GKE DNS 觀測能力資訊主頁的範例:

首先,依序前往「Monitoring」>「Dashboards」,如下圖所示:

第一張螢幕截圖:顯示 Google Cloud 控制台中的 DNS 資訊主頁

這張螢幕截圖顯示左側的 Google Cloud 控制台導覽選單。「監控」部分會展��,並醒目顯示「資訊主頁」,引導您前往。

然後前往「GKE DNS Observability - Cluster View」(GKE DNS 可觀測性 - 叢集檢視畫面) 資訊主頁

第二張螢幕截圖:顯示 Google Cloud 控制台中的 DNS 資訊主頁

這張螢幕截圖顯示「資訊主頁」目錄頁面,並在可用資訊主頁清單中醒目顯示「GKE DNS Observability - Cluster View」資訊主頁。按一下這個連結,即可開啟叢集層級的 DNS 指標視覺化圖表。

建立自訂資訊主頁

如要建立自訂資訊主頁及設定快訊,做法與監控任何指標時類似,您可以使用 Google Cloud Observability 工具,例如 Cloud Monitoring Metrics Explorer

查詢 DNS 可觀測性指標

如要查看叢集的 GKE DNS 指標,請在 Metrics Explorer 的 Google Cloud 控制台中執行下列步驟:

  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 指標

這張螢幕截圖顯示已設定的 Metrics Explorer 頁面,用於查詢 KubeDNS 指標。「選取指標」欄位會顯示已篩選的路徑 kubernetes.io/networking/dns/kubedns/,產生的圖表則會顯示 KubeDNS 要求和快取狀態的有效時間序列圖。

螢幕截圖: Google Cloud 控制台顯示 NodeLocalDNS 指標

這張螢幕截圖顯示已設定的「指標探索器」頁面,用於查詢 NodeLocalDNS 指標。查詢會指定 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}]))

請注意,查看這些指標時,控制台會自動對指標套用速率運算,您可以從 PromQL 來源停用這項功能。Google Cloud request_count

後續步驟