GKE Dataplane V2 可观测性简介


GKE Dataplane V2 可观测性提供 GKE Dataplane V2 指标和对 Kubernetes 工作负载的数据分析。从 GKE 1.28 版或更高版本开始,使用 GKE Dataplane V2 可观测性您可以:

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 上的 Kubernetes ClusterIP Service。hubble-relay Pod 是 Kubernetes ClusterIP Service 的后端,对 Kubernetes ClusterIP Service 的所有请求都转发到 hubble-relay Pod。您可以使用 Hubble CLI 或 Hubble 界面访问流端口。

限制

  • GKE Dataplane V2 可观测性在集群范围内限制为 5,000 个节点。
  • GKE Dataplane V2 可观测性仅适用于启用了 GKE Dataplane V2 的集群。
  • GKE Dataplane V2 指标与 Hubble 指标类似,因为它们是作为基于流的指标实现的,以提供连接信息。这些指标不会计算数据量和传输的数据包数量。由于这些指标基于流,因此它们无法准确表示网络流中传输的数据量。

后续步骤