跳伞简介
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-主机)
显示元数据节点:
- 索引字段:标准字段(例如
Type
, Name
和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