Einführung in skydive.network

Einführung in Skydive


Skydive ist ein Open-Source-Netzwerktopologie- und Protokollanalysator in Echtzeit. Ziel ist es, einen umfassenden Überblick über die Vorgänge in der Netzwerkinfrastruktur zu erhalten.


Screenshot von Objekten (Pods, Schnittstellen) in Kubernetes


Offizielle Projektseite: https://github.com/skydive-project/skydive
Kubernetes wird niedriger sein.
Sehen wir uns nun ein einfacheres Beispiel an.


Installieren Sie zur Demonstration den Etcd-Cluster auf 3 Servern. Dafür verwenden wir die Galaxienrolle frank6866.etcd.


ansible-galaxy install frank6866.etcd 

Yaml unten


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

Ansible.cfg Datei unten


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

Inventardatei


 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' 

Wir beginnen mit der Installation


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

Nach dem Herunterladen des Skydive-Repositorys


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

Wechseln Sie in den Ordner Contrib / Ansible / Inventar


 cd contrib/ansible/inventory 

Bearbeiten Sie die IP in der Datei hosts.multiple


 [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',]} 

Wir beginnen mit der Installation der Fallschirmspringer und des Analysators


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

IP :8082 von unserem Computer zu IP :8082
Und wir sehen so etwas


Fallschirmspringen zeigt Objekte: Schnittstellen.
Die Topologie, die Sie sehen, wenn Sie zu Skydive wechseln, wird in der Datei /etc/skydive/skydive.yml erstellt
Wenn Sie Skydive in Kubernetes installieren, werden Ihnen die Pods angezeigt.


Wenn Sie die Topologie in der Konfiguration des Analysators auskommentieren, erhalten wir nur separate Objekte ohne Links.

Konfiguration mit kommentierter Topologie:


Spoiler Überschrift
 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 

Und jetzt sehen wir uns mit Hilfe der Skydive-Flow-Matrix die aktiven Verbindungen zwischen den Servern an.
Installieren Sie zuerst skydive-flow-matrix auf Ihrem Arbeitscomputer.


 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 . 

Wir erhalten aktive Konnektivität in Textform.


 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 

Wir erhalten auch aktive Verbindungen in grafischer Form.


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


Wenn Sie die Topologie in der Konfiguration des Analysators auskommentieren und die Topologieanalyse starten, erhalten wir weiterhin aktive Verbindungen in grafischer Form.
Das heißt, die Topologie beeinflusst die Fallschirmsprung-Flussmatrix nicht


Fazit:
Die Topologie im Hauptfenster von Skydive zeigt die Knoten an, auf denen der Agent installiert ist, sowie die Schnittstellen, die auf diesem Knoten installiert sind.
In der Topologie können Knoten über Schnittstellen miteinander verbunden werden. Korrigieren Sie dazu die Datei /etc/skydive/skydive.yml


Installieren Sie jetzt Skydive in Kubernetes
Skydive muss in Kubernetes Version nicht mehr als 1.16 installiert sein.


Sie können Kubespray für die Installation verwenden.


Führen Sie als Nächstes die Installation von skydive aus:


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

Nach der Installation von skydive in kubernetes starten wir die Weiterleitung von Port 8082 an Ihre Workstation.
Dieser Befehl muss von Ihrer Workstation ausgeführt werden.
Zuvor müssen Sie eine Konfigurationsdatei im Verzeichnis .kube im Ausgangsverzeichnis erstellen.


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

Einige Screenshots und Videoobjekte (Pods, Interfaces) in Kubernetes



Wenn wir Plus drücken, gibt es noch mehr Objekte.



Video:



Und am Ende zitiere ich, woher Agenten Informationen nehmen können


  • Docker (Docker)
  • Ethtool (Ethtool)
  • Libvirt (libvirt)
  • LLDP (lldp)
  • Lxd (lxd)
  • NetLINK (Netlink)
  • NetNS (netns)
  • Neutron (Neutron)
  • OVSDB (ovsdb)
  • Opencontrail (offenercontrail)
  • runC (runc)
  • Socket-Informationen (Socketinfo)
  • VPP (vpp)

Woher der Analysator die Topologie beziehen kann:


  • Isstio (istio)
  • Kubernetes (k8s)
  • OVN (ovn)

Breite Unterstützung für K8s


Erstellen eines Diagramms von Knoten:


  • Allgemein: Cluster, Namespace
  • rechnen: Knoten, Pod, Container
  • Speicher: persistentvolumeclaim (pvc), persistentvolum (pv), Speicherklasse
  • Netzwerk: Netzwerkpolitik, Service, Endpunkte, Eingang
  • Bereitstellung: Bereitstellung, Statefulset, Replikatsatz, Replikationscontroller, Cronjob, Job
  • Konfiguration: configmap, geheim

Erstellen eines Diagramms von Terminalobjekten:


  • Besitz von k8s-k8s (z. B. k8s.namespace - k8s.pod)
  • k8s-k8s-Beziehung (zB k8s.service - k8s.pod)
  • k8s-physische Beziehung (zB k8s.node - Host)

Metadatenknoten anzeigen:


  • indizierte Felder: Standardfelder wie Type , Name und k8s-spezifische Felder wie K8s.Namespace
  • Nur gespeicherte Felder: Der gesamte Inhalt der unter K8s.Extra gespeicherten k8s-Ressource

Erstellen von Knotenmetadaten:


  • das Feld Metadaten des Statusknotens
  • mit den Werten Up (weiß) / Down (rot)
  • Derzeit für Ressourcen implementiert: pod, persistentvolumeclaim (pvc) und persistentvolume (pv)

Unterstützung für verschiedene Arten von Flow


  • sFlow
  • Afpacket
  • PCAP
  • PCAP-Buchse
  • DPDK
  • eBPF
  • Openvswitch-Portspiegelung

Die Netzwerksuche von Ansible nach Skydive wird in 2 Beiträgen beschrieben.



Wir suchen Leute, die Beiträge über andere Skydive-Funktionen schreiben können.
Telegramm-Chat auf skydive.network: https://t.me/skydive_network_en

Source: https://habr.com/ru/post/de472724/


All Articles