Pengantar skydive.network

Pengantar Skydive


Skydive adalah topologi jaringan open-source dan penganalisa protokol real-time. Ini bertujuan untuk memberikan cara yang lengkap untuk memahami apa yang terjadi di infrastruktur jaringan.


Tangkapan layar objek (pod, antarmuka) di kubernetes


Halaman proyek resmi: https://github.com/skydive-project/skydive
Kubernetes akan lebih rendah.
Sekarang mari kita lihat contoh yang lebih sederhana.


Untuk menunjukkan, instal cluster Etcd di 3 server. Untuk ini kita akan menggunakan peran galaksi frank6866.etcd.


ansible-galaxy install frank6866.etcd 

Di bawah ini


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

File ansible.cfg di bawah ini


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

file persediaan


 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' 

Kami memulai instalasi


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

Setelah mengunduh repositori skydive


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

Buka folder contrib / ansible / inventory


 cd contrib/ansible/inventory 

Edit IP dalam file 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',]} 

Kami memulai pemasangan agen skydive dan penganalisa


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

Setelah itu, dari komputer kami, buka IP :8082
Dan kita melihat sesuatu seperti ini


Skydive menunjukkan objek: antarmuka.
Topologi yang Anda lihat saat membuka Skydive terbentuk di file /etc/skydive/skydive.yml
Jika Anda menginstal skydive di kubernetes, maka itu akan menampilkan pod.


Jika Anda mengomentari topologi dalam konfigurasi penganalisis, kami hanya akan mendapatkan objek terpisah tanpa tautan.

Konfigurasi dengan topologi yang dikomentari:


Judul spoiler
 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 

Dan sekarang, dengan bantuan skydive-flow-matrix, mari kita lihat koneksi aktif antara server.
Pertama-tama instal skydive-flow-matrix pada komputer kerja Anda.


 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 . 

Kami mendapatkan konektivitas aktif dalam bentuk teks.


 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 

Kami juga mendapatkan koneksi aktif dalam bentuk grafis.


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


Jika Anda mengomentari topologi dalam konfigurasi penganalisis dan memulai analisis topologi, kami masih akan mendapatkan koneksi aktif dalam bentuk grafis.
Artinya, topologi tidak mempengaruhi skydive-flow-matrix


Kesimpulan:
Topologi di jendela skydive utama menunjukkan node di mana agen diinstal, antarmuka yang diinstal pada node ini.
Dalam topologi, node dapat saling terhubung melalui antarmuka. Untuk melakukan ini, perbaiki file /etc/skydive/skydive.yml


Sekarang instal skydive di Kubernetes
Skydive perlu diinstal dalam versi Kubernetes tidak lebih dari 1,16.


Anda dapat menggunakan kubespray untuk instalasi.


Selanjutnya, jalankan instalasi skydive:


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

Setelah menginstal skydive di kubernetes, kami mulai meneruskan port 8082 ke workstation Anda.
Perintah ini harus dijalankan dari workstation Anda.
Sebelum itu, Anda perlu membuat file config di direktori .kube di direktori home.


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

Beberapa tangkapan layar dan objek video (pod, antarmuka) di kubernetes



Jika kita menekan plus, maka akan ada lebih banyak objek.



Video:



Dan pada akhirnya saya kutip dari mana agen dapat mengambil informasi


  • Docker (buruh pelabuhan)
  • Ethtool (ethtool)
  • Libvirt (libvirt)
  • LLDP (lldp)
  • Lxd (lxd)
  • NetLINK (netlink)
  • NetNS (jaring)
  • Neutron (neutron)
  • OVSDB (ovsdb)
  • Opencontrail (opencontrail)
  • runC (runc)
  • Informasi Soket (socketinfo)
  • VPP (vpp)

Di mana penganalisa bisa mendapatkan topologi dari:


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

Dukungan luas untuk K8


Membangun grafik node:


  • umum: cluster, namespace
  • compute: node, pod, container
  • penyimpanan: persistentvolumeclaim (pvc), persistentvolume (pv), storageclass
  • jaringan: kebijakan jaringan, layanan, titik akhir, masuknya
  • deployment: deployment, statefulset, replicaset, replicationcontroller, cronjob, job
  • konfigurasi: configmap, rahasia

Membangun grafik objek terminal:


  • kepemilikan k8s-k8s (mis. k8s.namespace - k8s.pod)
  • hubungan k8s-k8s (mis. k8s.service - k8s.pod)
  • hubungan k8s-fisik (mis. k8s.node - host)

Tampilkan node metadata:


  • bidang yang diindeks: bidang standar seperti Type , Name plus spesifik k8s seperti K8s.Namespace
  • bidang yang disimpan saja: seluruh konten sumber daya k8 disimpan di bawah K8s.Extra

Membangun metadata simpul:


  • bidang metadata simpul Status
  • dengan nilai Atas (putih) / Bawah (merah)
  • saat ini diterapkan untuk sumber daya: pod, persistentvolumeclaim (pvc) dan persistentvolume (pv)

Dukungan untuk berbagai jenis Flow


  • sFlow
  • Afpacket
  • PCAP
  • Soket PCAP
  • DPDK
  • eBPF
  • Openvswitch port mirroring

Pencarian jaringan Skydive oleh Ansible dijelaskan dalam 2 posting.



Kami mencari orang yang dapat menulis pos tentang fitur Skydive lainnya.
Obrolan Telegram di skydive.network: https://t.me/skydive_network_en

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


All Articles