Kubernetes中如何获取pods之间的流量

How to get the traffic between pods in Kubernetes

已经有工具可以可视化 pods 之间的流量。详细说明如下:

我现在想知道这些工具是如何获取数据的,因为 Kubernetes API 本身不提供这些信息。我知道 Linkered 在每个服务旁边安装了一个代理,但这是唯一的选择吗?

您可以使用 SideCar Proxy 或使用内部使用 grafana 仪表板的 prometheus-operator。在那里你可以监控每一件事。

我的建议是使用 istio.io that injects an envoy proxy as a sidecar container on each pod, then you can use Prometheus to scrape metrics from these proxies and use Grafana 进行可视化。

监控流量的组件必须是每个 pod 中的 sidecar 容器或每个节点上的守护进程。例如:

  • Linkerd 使用 sidecar 容器
  • Weave Scope 使用 DaemonSet 在集群的每个节点上安装代理

sidecar 容器观察流量 to/from 它的 pod。节点守护进程观察节点上所有 pods 的流量 to/from。

在 Kubernetes 中,每个 pod 都有自己唯一的 IP 地址,因此这些组件基本上检查网络流量的源和目标 IP 地址。

一般来说,任何流量 from/to/between pods 与 Kubernetes API 无关,要监控它,基本上与非 Kubernetes 环境中的原则相同。