前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 k8spacket 与 Grafana 可视化 K8s Tcp流量

使用 k8spacket 与 Grafana 可视化 K8s Tcp流量

作者头像
我是阳明
发布2022-12-29 21:30:16
1.2K0
发布2022-12-29 21:30:16
举报
文章被收录于专栏:k8s技术圈k8s技术圈

你知道你的 K8s 集群在你没使用的时候在做什么吗?谁与他建立 TCP 了通信?他调用了谁?通过使用 k8spacketGrafana,我们可以可视化集群中的 TCP 流量,这样可以了解工作负载是如何相互通信。检查建立了多少连接,交换了多少字节,以及这些连接处于活动状态的时间。

介绍

k8spacket 是用 Golang 编写的一个工具,它使用 gopacket 第三方库来嗅探工作负载上的 TCP 数据包(传入和传出),它在运行的容器网络接口上创建 TCP 监听器。当 Kubernetes 创建一个新容器的时候,CNI 插件负责提供与其他容器或从集群到外部世界通信的可能性。最常见的方法是使用 linux 命名空间来隔离网络,使用 veth pair 来连接隔离的命名空间和网桥。除了桥接类型外,CNI 插件还可以使用其他类型(vlan、ipvlan、macvlan),但都是为容器 linux 命名空间创建一个网络接口,这是 k8spacket 嗅探器的主要句柄。

k8spacket 运行的时候会使用 hostNetwork: true 选项,这样可以消除前面提到的隔离现象,它通过收集 TCP 流、处理数据并通过 API 暴露结果以供 Grafana 使用。此外,

  • k8spacket 是一个 Kubernetes API 客户端,可以将嗅探到的工作负载解析为可视化的集群资源名称(Pods 和 Services)。
  • 它作为 DaemonSet 启动以侦听所有节点上的网络接口。
  • 如果有新的(或旧的)网络接口要观察(或忘记),已实现的监听器每 10 秒(默认)检查一次。

除了显示集群资源的图表外,它还暴露了 Prometheus 指标。

安装

要安装 k8spacket,我们需要安装 Helm 和 Grafana。此外,该工具需要 Hamad 的 Node Grafana API 插件(Node Graph API)。

代码语言:javascript
复制
helm repo add k8spacket https://k8spacket.github.io/k8spacket-helm-chart
helm install k8spacket --namespace k8spacket k8spacket/k8spacket --create-namespace

将 Node Graph API 插件和数据源添加到您的 Grafana 实例,您可以手动完成或更改 Grafana Chart 的 helm 值,例如:

代码语言:javascript
复制
grafana:
  env:
    GF_INSTALL_PLUGINS: hamedkarbasi93-nodegraphapi-datasource
  datasources:
    nodegraphapi-plugin-datasource.yaml:
      apiVersion: 1
      datasources:
      - name: "Node Graph API"
        jsonData:
          url: "http://k8spacket.k8spacket.svc.cluster.local:8080"
        access: "proxy"
        basicAuth: false
        isDefault: false
        readOnly: false
        type: "hamedkarbasi93-nodegraphapi-datasource"
        typeLogoUrl: "public/plugins/hamedkarbasi93-nodegraphapi-datasource/img/logo.svg"
        typeName: "node-graph-plugin"
        orgId: 1
        version: 1

使用方法

统计类型

  • connection - 帮助了解在工作负载之间以及从或到外部客户端建立了多少连接。它会告诉您哪些套接字保持打开状态并可能导致问题。当您使用端口耗尽的某些 SNAT 网关(例如,Azure AKS)时,它会很有帮助。
  • bytes - 显示工作负载发送或接收的字节数。
  • duration - 计算连接的生命周期。

过滤器

  • 按命名空间 - 选择一个或多个 K8s 命名空间
  • 按包含的名称 - 选择工作负载名称以进行可视化
  • 按名称排除 - 从可视化中排除工作负载名称

Github 仓库:https://github.com/k8spacket/k8spacket

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 k8s技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 安装
  • 使用方法
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档