GKE Dataplane V2 可观测性提供 GKE Dataplane V2 指标和对 Kubernetes 工作负载的数据分析。从 GKE 1.28 版或更高版本开始,使用 GKE Dataplane V2 可观测性您可以:
- 将 Google Cloud Managed Service for Prometheus 和 Cloud Monitoring 与 Metrics Explorer 配合使用来捕获和观察网络指标,并针对网络指标发出提醒
- 了解集群中特定 Service 的流量
- 了解并识别 Kubernetes 工作负载的网络健康问题
- 验证 Kubernetes 网络政策
GKE Dataplane V2 可观测性提供以下问题排查工具:
- Kubernetes 集群网络拓扑
- 包含实时流量和连接信息的 Kubernetes 网络政策判定表
- 用于排查 Kubernetes 流量问题的命令行工具
GKE Dataplane V2 指标
GKE Dataplane V2 指标为以下各项提供流量信息:
- 流量:深入了解 GKE 如何处理 Pod 和 Service 之间的流。
网络政策强制执行:有关 GKE 如何强制执行 Kubernetes 网络政策的信息。
您可以通过以下工具使用 GKE Dataplane V2 指标来监控和排查 Kubernetes 工作负载问题:
- Google Cloud Managed Service for Prometheus,用于查看和分析 GKE Dataplane V2 指标。您可以修改 Google Cloud Managed Service for Prometheus 配置,以添加或移除您为 Google Cloud Managed Service for Prometheus 提取选择的指标。
- Cloud Monitoring Metrics Explorer,用于查看 Pod 级流量详情。
- 可通过 Cloud Monitoring 来探索和使用任何指标。例如,您可以创建在 GKE Dataplane V2 指标超出特定阈值时触发的提醒。
- 自行管理的 Grafana,用于直观呈现 Google Cloud Managed Service for Prometheus 收集的指标。
启用 Google Cloud Managed Service for Prometheus 后:
- GKE 会创建
PodMonitoring
资源 - GKE 公开指标端点
如需通过 Google Cloud Managed Service for Prometheus 使用指标并能够创建 PodMonitoring
资源,您必须在集群上启用 Google Cloud Managed Service for Prometheus。如果您没有启用 Google Cloud Managed Service for Prometheus,则 GKE 会公开指标端点,但不会创建 PodMonitoring
资源。
当您为集群启用 GKE Dataplane V2 指标时,Google Cloud Managed Service for Prometheus 会提取以下 GKE Dataplane V2 指标:
GKE Dataplane V2 指标 | 类型 | 说明 |
---|---|---|
prometheus.googleapis.com/pod_flow_egress_flows_count/counter
|
累计 | Pod 的流总数。 |
prometheus.googleapis.com/pod_flow_ingress_flows_count/counter
|
累计 | 流向 Pod 的流总数。 |
启用 GKE Dataplane V2 指标会在每个 Kubernetes 节点上打开指标端口。
您还可以使用其他指标,包括来自开源可观测性平台 Hubble 的指标。默认情况下,Google Cloud Managed Service for Prometheus 不会注入这些额外的指标,但您可以配置 Google Cloud Managed Service for Prometheus 来收集这些指标。如需收集这些指标,请配置 PodMonitoring
自定义资源 (CR)。
下表介绍了其他 Hubble 指标:
Hubble 指标 | 类型 | 说明 |
---|---|---|
hubble_flows_processed_total
|
累计 | 处理的流总数。 |
hubble_drop_total
|
累计 | 丢弃的流总数。 |
hubble_port_distribution_total
|
累计 | 按端口号聚合的处理流总数。 |
hubble_tcp_flags_total
|
累计 | 在设置了给定 TCP 标志的情况下处理的流总数。 |
hubble_icmp_total
|
累计 | 处理的 ICMP 流总数。 |
GKE Dataplane V2 可观测性工具
GKE Dataplane V2 可观测性为使用 GKE Dataplane V2 部署的 Kubernetes 工作负载提供代管式 Hubble 解决方案,该解决方案具有网络可观测性和安全性数据分析。
启用后,GKE Dataplane V2 可观测性会将以下组件部署到您的集群:
Hubble Relay:可从每个节点收集有关 Pod 的网络遥测数据的服务。
Hubble CLI:用于在集群内提供实时流量的命令行界面工具。
为集群启用 GKE Dataplane V2 可观测性后,您可以部署以下组件:
- Hubble 界面:一种基于 Web 的工具,可用于查看和分析由 Hubble Relay 收集的网络遥测数据。必须启用 GKE Dataplane V2 可观测性以部署 Hubble 界面。
GKE Dataplane V2 指标和可观测性的工作原理
GKE Dataplane V2 可观测性使用以下组件和工具来收集指标并提供有关网络流量的数据分析:
GKE Dataplane V2:GKE Dataplane V2 指标和可观测性使用基于 eBPF 的 GKE Dataplane V2 数据路径,根据给定工作负载来收集 Pod 的流量和网络政策强制执行情况的指标。
Google Cloud Managed Service for Prometheus:GKE Dataplane V2 指标将 Google Cloud Managed Service for Prometheus 代理配置为将汇总的指标注入到 Google Cloud Managed Service for Prometheus,这是一种可伸缩的监控解决方案,可注入和存储大量数据,还使您能够在 Google Cloud Observability 上进行构建。
Hubble:GKE Dataplane V2 可观测性使用开源可观测性项目 Hubble。Hubble 可为使用 eBPF Dataplane 部署的 Kubernetes 工作负载启用网络可观测性和安全性数据分析。
在以下情形中,会发生 Hubble 流事件:
首先建立网络连接
首先看到一个 TCP 标志,它表示 TCP 连接的状态
自上次流事件起至少五秒后传输数据包
中心指标:计算 Kubernetes 集群中流事件的数量,可用于识别哪些 Pod 互相通信。
启用指标和可观测性:您可以单独启用 GKE Dataplane V2 和可观测性。如需在开源 Hubble 界面功能中启用网络拓扑可视化,您必须启用网络检查。
Autopilot 集群:
指标默认处于启用状态
可观测性工具默认处于停用状态
您必须创建集群
PodMonitoring
资源才能在 Google Cloud Managed Service for Prometheus 中收集指标
Standard 集群:
指标默认处于停用状态
可观测性工具默认处于停用状态
如果您启用了 Google Cloud Managed Service for Prometheus,则系统会自动创建
PodMonitoring
资源PodMonitoring
资源被标记为确保存在。您可以通过修改PodMonitoring
资源来停用所有指标,以停止向 Google Cloud Managed Service for Prometheus 发送指标
GKE Dataplane V2 可观测性端点
GKE Dataplane V2 可观测性组件公开以下两个可观测性端点:
指标端点:以 Prometheus 格式公开流量指标的 HTTP 端点。
anetd
Pod 在端口 9965 上公开每个集群节点上的指标端点。流端口:gRPC 端点。
hubble-relay
Pod 将流端口端点公开为端口 443 上的 KubernetesClusterIP
Service。hubble-relay
Pod 是 KubernetesClusterIP
Service 的后端,对 KubernetesClusterIP
Service 的所有请求都转发到hubble-relay
Pod。您可以使用 Hubble CLI 或 Hubble 界面访问流端口。
限制
- GKE Dataplane V2 可观测性在集群范围内限制为 5,000 个节点。
- GKE Dataplane V2 指标和可观测性仅适用于启用了 GKE Dataplane V2 的集群。
- GKE Dataplane V2 指标与 Hubble 指标类似,因为它们是作为基于流的指标实现的,以提供连接信息。这些指标不会计算数据量和传输的数据包数量。由于这些指标基于流,因此它们无法准确表示网络流中传输的数据量。