【问题标题】:How to get the traffic between pods in KubernetesKubernetes 中如何获取 Pod 之间的流量
【发布时间】:2019-09-04 08:47:05
【问题描述】:

已经有一些工具可以可视化 pod 之间的流量。详细状态如下:

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

【问题讨论】:

    标签: networking kubernetes kubernetes-pod


    【解决方案1】:

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

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

    sidecar 容器观察进出其 pod 的流量。节点守护进程观察节点上所有 Pod 的流量。

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

    一般来说,来自/到/在 Pod 之间的任何流量都与 Kubernetes API 无关并对其进行监控,基本上与非 Kubernetes 环境中的原则相同。

    【讨论】:

    • 那么每个解决方案(Sidecar、DaemonSet)都会观察每个 pod 并匹配出入请求?
    • sidecar 容器观察进出其 pod 的流量。节点守护进程观察节点上所有 Pod 的流量。
    • 在 Kubernetes 中,每个 pod 都有自己唯一的 IP 地址,因此它们基本上会检查网络流量的源 IP 地址和目标 IP 地址。
    • 您能否将最后两个 cmets 添加到您的答案中,以便我接受。
    【解决方案2】:

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

    【讨论】:

    • 和@wolmi 的回答一样。
    【解决方案3】:

    我的建议是使用istio.ioenvoy 代理作为sidecar 容器注入每个pod,然后您可以使用Prometheus 从这些代理中抓取指标并使用Grafana 进行可视化。

    【讨论】:

    • 这是一个选项,但 Weave Scope 例如不需要 Istio 并且仍然可以显示连接。因此,我发现他们或任何其他类似工具如何解决这个问题很有趣。
    • 如果你的软件没有exporters这样的监控或暴露机制,你总是需要一个proxy,在pod内通信的情况下,proxy必须在pod内部来控制入口流量并允许您拥有指标。考虑到这一点,每个解决方案都会基于相同的想法做出不同的实现。
    猜你喜欢
    • 2021-04-04
    • 1970-01-01
    • 2021-10-27
    • 2020-09-15
    • 2020-01-08
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    相关资源
    最近更新 更多