skydive.network简介

跳伞简介


Skydive是一种实时的开源网络拓扑和协议分析器。 它旨在提供一种详尽的方法来了解网络基础结构中正在发生的事情。


kubernetes中的对象(窗格,接口)的屏幕截图


官方项目页面: https : //github.com/skydive-project/skydive
Kubernetes将更低。
现在让我们看一个更简单的例子。


为了演示,请在3台服务器上安装Etcd群集。 为此,我们将使用星系角色frank6866.etcd。


ansible-galaxy install frank6866.etcd 

以下Yaml


 - hosts: etcd become: yes roles: - frank6866.etcd 

下面的Ansible.cfg文件


 [defaults] inventory = inventory remote_user = user host_key_checking = False stdout_callback=debug 

库存文件


 frank6866-etcd-1 ansible_ssh_host=172.26.9.78 etcd_public_ip=172.26.9.78 frank6866-etcd-2 ansible_ssh_host=172.26.9.79 etcd_public_ip=172.26.9.79 frank6866-etcd-3 ansible_ssh_host=172.26.9.80 etcd_public_ip=172.26.9.80 [cluster1] frank6866-etcd-[1:3] [etcd:children] cluster1 [etcd:vars] etcd_tls_enabled='false' 

我们开始安装


  ansible-playbook -i hosts.multiple etcd-cluster.yaml 

下载跳伞资料库之后


 git clone https://github.com/skydive-project/skydive.git 

转到contrib / ansible /库存文件夹


 cd contrib/ansible/inventory 

在hosts.multiple文件中编辑IP


 [analyzers] IP    [agents]  IP etcd  #      skydive-flow-matrix # For skydive-flow-matrix add skydive_extra_config: [agents:vars] skydive_extra_config={'agent.topology.probes': ['socketinfo',]} 

我们开始安装跳伞代理和分析仪


 ansible-playbook -i inventory/hosts.multiple playbook.yml.sample 

之后,从我们的计算机转到IP :8082
我们看到这样的事情


Skydive显示对象:接口。
在/etc/skydive/skydive.yml文件中形成了当您进入Skydive时看到的拓扑。
如果您在kubernetes中安装skydive,它将向您显示pods。


如果您在分析仪的配置中注释掉拓扑,我们将得到没有链接的单独对象。

使用注释拓扑进行配置:


扰流板方向
 analyzer: auth: cluster: backend: cluster password: secret username: skydive listen: 0.0.0.0:8082 # topology: # fabric: # - TOR1[Name=tor1] -> TOR1_PORT1[Name=port1, MTU=1500] # - TOR1_PORT1 -> *[Type=host,Name=skydive-rpm-apatsev-2]/eth0 # - TOR1[Name=tor1] -> TOR1_PORT2[Name=port2, MTU=1500] # - TOR1_PORT2 -> *[Type=host,Name=skydive-rpm-apatsev-3]/eth0 # - TOR1[Name=tor1] -> TOR1_PORT3[Name=port3, MTU=1500] # - TOR1_PORT3 -> *[Type=host,Name=skydive-rpm-apatsev-4]/eth0 analyzers: - 172.26.9.21:8082 auth: cluster: type: basic users: skydive: secret etcd: embedded: true listen: 0.0.0.0:12379 name: skydive-rpm-apatsev-1 flow: protocol: udp host_id: skydive-rpm-apatsev-1 

现在,借助skydive-flow-matrix,让我们看看服务器之间的活动连接。
首先在您的工作计算机上安装skydive-flow-matrix。


 git clone https://github.com/skydive-project/skydive-flow-matrix.git cd skydive-flow-matrix/ apt install graphviz sudo pip install virtualenv virtualenv .venv source .venv/bin/activate pip install -r requirements.txt pip install . 

我们以文本形式获得主动连接。


 skydive-flow-matrix --analyzer IP   :8082 --username admin --password password protocol,server,server_ip,port,server_proc,server_procname,client,client_ip,client_proc,client_procname TCP,skydive-apatsev-2,127.0.0.1,2379,/usr/bin/etcd,etcd,skydive-apatsev-2,127.0.0.1,/usr/bin/etcd,etcd TCP,skydive-apatsev-2,127.0.0.1,4001,/usr/bin/etcd,etcd,skydive-apatsev-2,127.0.0.1,/usr/bin/etcd,etcd TCP,skydive-apatsev-4,172.26.9.80,2380,/usr/bin/etcd,etcd,skydive-apatsev-2,172.26.9.78,/usr/bin/etcd,etcd TCP,skydive-apatsev-2,172.26.9.78,2380,/usr/bin/etcd,etcd,skydive-apatsev-3,172.26.9.79,/usr/bin/etcd,etcd TCP,skydive-apatsev-4,127.0.0.1,4001,/usr/bin/etcd,etcd,skydive-apatsev-4,127.0.0.1,/usr/bin/etcd,etcd TCP,skydive-apatsev-3,127.0.0.1,4001,/usr/bin/etcd,etcd,skydive-apatsev-3,127.0.0.1,/usr/bin/etcd,etcd TCP,skydive-apatsev-3,172.26.9.79,2380,/usr/bin/etcd,etcd,skydive-apatsev-2,172.26.9.78,/usr/bin/etcd,etcd TCP,skydive-apatsev-3,172.26.9.79,2380,/usr/bin/etcd,etcd,skydive-apatsev-4,172.26.9.80,/usr/bin/etcd,etcd TCP,skydive-apatsev-2,172.26.9.78,2380,/usr/bin/etcd,etcd,skydive-apatsev-4,172.26.9.80,/usr/bin/etcd,etcd TCP,skydive-apatsev-4,127.0.0.1,2379,/usr/bin/etcd,etcd,skydive-apatsev-4,127.0.0.1,/usr/bin/etcd,etcd TCP,skydive-apatsev-3,127.0.0.1,2379,/usr/bin/etcd,etcd,skydive-apatsev-3,127.0.0.1,/usr/bin/etcd,etcd TCP,skydive-apatsev-4,172.26.9.80,2380,/usr/bin/etcd,etcd,skydive-apatsev-3,172.26.9.79,/usr/bin/etcd,etcd 

我们还以图形形式获得活动连接。


 skydive-flow-matrix --analyzer IP   :8082 --username admin --password password --format render 


如果您在分析仪的配置中注释掉拓扑并运行拓扑分析,我们仍将以图形形式获得活动连接。
也就是说,拓扑不会影响跳伞流矩阵


结论:
skydive主窗口中的拓扑显示了安装代理的节点以及在该节点上安装的接口。
在拓扑中,节点可以通过接口互连。 为此,请修复文件/etc/skydive/skydive.yml


现在在Kubernetes中安装skydive
需要在不超过1.16的Kubernetes版本中安装Skydive。


您可以使用kubespray进行安装。


接下来,运行skydive的安装:


 git clone https://github.com/skydive-project/skydive.git cd skydive/contrib/kubernetes/ kubectl apply -f skydive.yaml 

在kubernetes中安装skydive之后,我们开始将端口8082转发到您的工作站。
此命令必须从您的工作站上运行。
在此之前,您需要在主目录的.kube目录中创建一个配置文件。


 kubectl port-forward service/skydive-analyzer 8082:8082 

kubernetes中的一些屏幕截图和视频对象(窗格,界面)



如果按加号,则将有更多的对象。



影片:



最后,我引用了代理商可以获取信息的地方


  • 码头工人(码头工人)
  • ethtool(ethtool)
  • Libvirt(libvirt)
  • LLDP(lldp)
  • Lxd(lxd)
  • NetLINK(网络链接)
  • NetNS(netns)
  • 中子(neutron)
  • OVSDB(ovsdb)
  • Opencontrail(opencontrail)
  • runC(runc)
  • 套接字信息(socketinfo)
  • VPP(vpp)

分析仪可以从以下位置获取拓扑的位置:


  • 伊斯斯蒂奥(istio)
  • Kubernetes(k8s)
  • OVN(ovn)

广泛支持K8


建立节点图:


  • 常规:群集,名称空间
  • 计算:节点,容器,容器
  • 存储:persistentvolumeclaim(pvc),persistentvolume(pv),storageclass
  • 网络:网络策略,服务,端点,入口
  • 部署:部署,状态集,副本集,replicationcontroller,cronjob,作业
  • 配置:configmap,秘密

建立终端对象图:


  • k8s-k8s所有权(例如k8s.namespace-k8s.pod)
  • k8s-k8s关系(例如k8s.service-k8s.pod)
  • k8s-物理关系(例如,k8s.node-主机)

显示元数据节点:


  • 索引字段:标准字段(例如TypeName和k8s特定值(例如K8s.Namespace
  • 仅存储字段:存储在K8s.Extra下的k8s资源的全部内容。

构建节点元数据:


  • Status节点元数据字段
  • 值向上(白色)/向下(红色)
  • 当前为资源实现的:pod,persistentvolumeclaim(pvc)和persistentvolume(pv)

支持各种流量


  • Afpacket
  • PCAP
  • PCAP插座
  • DPDK
  • eBPF
  • OpenvSwitch端口镜像

Ansible在Skydive中的网络搜索在2个帖子中进行了介绍。



我们正在寻找可以撰写有关其他Skydive功能的文章的人员。
在skydive.network上进行电报聊天: https ://t.me/skydive_network_en

Source: https://habr.com/ru/post/zh-CN472724/


All Articles