ู…ู‚ุฏู…ุฉ ููŠ skydive.network

ู…ู‚ุฏู…ุฉ ููŠ ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช


Skydive ู‡ูˆ ููŠ ุงู„ูˆู‚ุช ุงู„ุญู‚ูŠู‚ูŠ ุŒ ุทูˆุจูˆู„ูˆุฌูŠุง ุดุจูƒุฉ ู…ูุชูˆุญุฉ ุงู„ู…ุตุฏุฑ ูˆู…ุญู„ู„ ุงู„ุจุฑูˆุชูˆูƒูˆู„. ูŠู‡ุฏู ุฅู„ู‰ ุชูˆููŠุฑ ุทุฑูŠู‚ุฉ ุดุงู…ู„ุฉ ู„ูู‡ู… ู…ุง ูŠุญุฏุซ ููŠ ุงู„ุจู†ูŠุฉ ุงู„ุชุญุชูŠุฉ ู„ู„ุดุจูƒุฉ.


ู„ู‚ุทุฉ ุดุงุดุฉ ู„ู„ุฃุดูŠุงุก (ุงู„ู‚ุฑูˆู† ุŒ ูˆุงุฌู‡ุงุช) ููŠ kubernetes


ุตูุญุฉ ุงู„ู…ุดุฑูˆุน ุงู„ุฑุณู…ูŠุฉ: https://github.com/skydive-project/skydive
ุณูˆู Kubernetes ูŠูƒูˆู† ุฃู‚ู„.
ุงู„ุขู† ุฏุนูˆู†ุง ู†ุฑู‰ ู…ุซุงู„ุง ุฃุจุณุท.


ู„ุดุฑุญ ุŒ ุชุซุจูŠุช ุงู„ูƒุชู„ุฉ Etcd ุนู„ู‰ 3 ุฎูˆุงุฏู…. ู„ู‡ุฐุง ุณูˆู ู†ุณุชุฎุฏู… ุฏูˆุฑ ุงู„ู…ุฌุฑุฉ 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 

ุงู†ุชู‚ู„ ุฅู„ู‰ ุงู„ู…ุฌู„ุฏ ู…ุณุงู‡ู…ุฉ / ansible / ุงู„ู…ุฎุฒูˆู†


 cd contrib/ansible/inventory 

ุชุญุฑูŠุฑ ุงู„ู…ู„ูƒูŠุฉ ุงู„ููƒุฑูŠุฉ ููŠ ู…ู„ู 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',]} 

ู†ุจุฏุฃ ุชุซุจูŠุช ูˆูƒู„ุงุก ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ูˆุงู„ู…ุญู„ู„


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

ุจุนุฏ ุฐู„ูƒ ุŒ ู…ู† ุฌู‡ุงุฒ ุงู„ูƒู…ุจูŠูˆุชุฑ ุงู„ุฎุงุต ุจู†ุง ุŒ ุงู†ุชู‚ู„ ุฅู„ู‰ IP :8082
ูˆู†ุญู† ู†ุฑู‰ ุดูŠุฆุง ู…ุซู„ ู‡ุฐุง


ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ูŠุธู‡ุฑ ุงู„ุฃุดูŠุงุก: ูˆุงุฌู‡ุงุช.
ูŠุชู… ุชูƒูˆูŠู† ุงู„ู‡ูŠูƒู„ ุงู„ุฐูŠ ุชุฑุงู‡ ุนู†ุฏ ุงู„ุงู†ุชู‚ุงู„ ุฅู„ู‰ Skydive ููŠ ุงู„ู…ู„ู /etc/skydive/skydive.yml
ุฅุฐุง ู‚ู…ุช ุจุชุซุจูŠุช ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ููŠ kubernetes ุŒ ูุณูŠุธู‡ุฑ ู„ูƒ ุงู„ู‚ุฑูˆู†.


ุฅุฐุง ุนู„ู‚ุช ุนู„ู‰ ุงู„ู‡ูŠูƒู„ ููŠ ุชูƒูˆูŠู† ุงู„ู…ุญู„ู„ ุŒ ูุณู†ุญุตู„ ูู‚ุท ุนู„ู‰ ูƒุงุฆู†ุงุช ู…ู†ูุตู„ุฉ ุจุฏูˆู† ุฑูˆุงุจุท.

ุงู„ุชูƒูˆูŠู† ุจุงุณุชุฎุฏุงู… ุงู„ุทูˆุจูˆู„ูˆุฌูŠุง ุงู„ู…ุนู„ู‚ุฉ:


ุงู„ู…ูุณุฏ ุงู„ุนู†ูˆุงู†
 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 

ูˆุงู„ุขู† ุŒ ุจู…ุณุงุนุฏุฉ ู…ุตููˆูุฉ ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ุŒ ุฏุนูˆู†ุง ู†ุฑู‰ ุงู„ุงุชุตุงู„ุงุช ุงู„ู†ุดุทุฉ ุจูŠู† ุงู„ุฎูˆุงุฏู….
ู‚ู… ุฃูˆู„ุงู‹ ุจุชุซุจูŠุช ู…ุตููˆูุฉ ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ุนู„ู‰ ูƒู…ุจูŠูˆุชุฑ ุงู„ุนู…ู„ ุงู„ุฎุงุต ุจูƒ.


 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 


ุฅุฐุง ู‚ู…ุช ุจุงู„ุชุนู„ูŠู‚ ุนู„ู‰ ุงู„ู‡ูŠูƒู„ ููŠ ุชูƒูˆูŠู† ุงู„ู…ุญู„ู„ ูˆุจุฏุก ุชุญู„ูŠู„ ุงู„ู‡ูŠูƒู„ ุŒ ูุณูˆู ู†ุณุชู…ุฑ ููŠ ุงู„ุญุตูˆู„ ุนู„ู‰ ุงุชุตุงู„ุงุช ู†ุดุทุฉ ููŠ ุดูƒู„ ุฑุณูˆู… ุจูŠุงู†ูŠุฉ.
ูˆู‡ุฐุง ูŠุนู†ูŠ ุฃู† ุงู„ู‡ูŠูƒู„ ู„ุง ูŠุคุซุฑ ุนู„ู‰ ู…ุตููˆูุฉ ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช


ุงู„ุงุณุชู†ุชุงุฌ:
ูŠูˆุถุญ ุงู„ู‡ูŠูƒู„ ุงู„ู…ูˆุฌูˆุฏ ููŠ ู†ุงูุฐุฉ ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ุงู„ุฑุฆูŠุณูŠุฉ ุงู„ุนู‚ุฏ ุญูŠุซ ุชู… ุชุซุจูŠุช ุงู„ุนุงู…ู„ ุŒ ูˆุงู„ูˆุงุฌู‡ุงุช ุงู„ุชูŠ ุชู… ุชุซุจูŠุชู‡ุง ุนู„ู‰ ู‡ุฐู‡ ุงู„ุนู‚ุฏุฉ.
ููŠ ุงู„ุทูˆุจูˆู„ูˆุฌูŠุง ุŒ ูŠู…ูƒู† ุฑุจุท ุงู„ุนู‚ุฏ ุนุจุฑ ูˆุงุฌู‡ุงุช. ู„ู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ู‚ู… ุจุฅุตู„ุงุญ ุงู„ู…ู„ู /etc/skydive/skydive.yml


ุงู„ุขู† ุชุซุจูŠุช ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ููŠ Kubernetes
ูŠู„ุฒู… ุชุซุจูŠุช Skydive ููŠ ุฅุตุฏุงุฑ Kubernetes ู„ุง ูŠุฒูŠุฏ ุนู† 1.16.


ูŠู…ูƒู†ูƒ ุงุณุชุฎุฏุงู… kubespray ู„ู„ุชุซุจูŠุช.


ุจุนุฏ ุฐู„ูƒ ุŒ ู‚ู… ุจุชุดุบูŠู„ ุชุซุจูŠุช ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช:


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

ุจุนุฏ ุชุซุจูŠุช ุงู„ู‚ูุฒ ุจุงู„ู…ุธู„ุงุช ููŠ kubernetes ุŒ ู†ุจุฏุฃ ููŠ ุฅุนุงุฏุฉ ุชูˆุฌูŠู‡ ุงู„ู…ู†ูุฐ 8082 ุฅู„ู‰ ู…ุญุทุฉ ุงู„ุนู…ู„ ุงู„ุฎุงุตุฉ ุจูƒ.
ูŠุฌุจ ุชุดุบูŠู„ ู‡ุฐุง ุงู„ุฃู…ุฑ ู…ู† ู…ุญุทุฉ ุงู„ุนู…ู„ ุงู„ุฎุงุตุฉ ุจูƒ.
ู‚ุจู„ ุฐู„ูƒ ุŒ ุชุญุชุงุฌ ุฅู„ู‰ ุฅู†ุดุงุก ู…ู„ู ุชูƒูˆูŠู† ููŠ ุฏู„ูŠู„ .kube ููŠ ุงู„ุฏู„ูŠู„ ุงู„ุฑุฆูŠุณูŠ.


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

ุจุนุถ ู„ู‚ุทุงุช ุงู„ุดุงุดุฉ ูˆุฃุดูŠุงุก ุงู„ููŠุฏูŠูˆ (ุงู„ู‚ุฑูˆู† ุŒ ูˆุงุฌู‡ุงุช) ููŠ kubernetes



ุฅุฐุง ุถุบุทู†ุง ุฒุงุฆุฏ ุŒ ูุณูŠูƒูˆู† ู‡ู†ุงูƒ ุงู„ู…ุฒูŠุฏ ู…ู† ุงู„ุฃุดูŠุงุก.



ููŠุฏูŠูˆ:



ูˆููŠ ุงู„ู†ู‡ุงูŠุฉ ุฃู‚ุชุจุณ ู…ู† ุญูŠุซ ูŠู…ูƒู† ู„ู„ูˆูƒู„ุงุก ุฃุฎุฐ ุงู„ู…ุนู„ูˆู…ุงุช


  • ุนุงู…ู„ ู…ูŠู†ุงุก (ุนุงู…ู„ ู…ูŠู†ุงุก)
  • Ethtool (ethtool)
  • Libvirt (libvirt)
  • LLDP (lldp)
  • Lxd (lxd)
  • NetLINK (netlink)
  • NetNS (netns)
  • ู†ูŠูˆุชุฑูˆู† (ู†ูŠูˆุชุฑูˆู†)
  • OVSDB (ovsdb)
  • Opencontrail (opencontrail)
  • runC (runc)
  • ู…ุนู„ูˆู…ุงุช ุงู„ู…ู‚ุจุณ (socketinfo)
  • VPP (vpp)

ุญูŠุซ ูŠู…ูƒู† ู„ู„ู…ุญู„ู„ ุงู„ุญุตูˆู„ ุนู„ู‰ ุงู„ุทูˆุจูˆู„ูˆุฌูŠุง ู…ู†:


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

ุฏุนู… ูˆุงุณุน ู„ K8s


ุจู†ุงุก ุฑุณู… ุจูŠุงู†ูŠ ู„ู„ุนู‚ุฏ:


  • ุนุงู…: ุงู„ูƒุชู„ุฉ ุŒ ู…ุณุงุญุฉ ุงู„ุงุณู…
  • ุญุณุงุจ: ุงู„ุนู‚ุฏุฉ ุŒ ุฌุฑุงุจ ุŒ ุญุงูˆูŠุฉ
  • ุงู„ุชุฎุฒูŠู†: persistentvolumeclaim (pvc) ุŒ persistentvolume (pv) ุŒ storageclass
  • ุงู„ุดุจูƒุฉ: networkpolicy ุŒ ุงู„ุฎุฏู…ุฉ ุŒ ู†ู‚ุงุท ุงู„ู†ู‡ุงูŠุฉ ุŒ ุฏุฎูˆู„
  • ุงู„ู†ุดุฑ: ุงู„ู†ุดุฑ ุŒ ุญุงู„ุฉ ุŒ ู…ุฌู…ูˆุนุฉ ุงู„ู†ุณุฎ ุงู„ู…ุชู…ุงุซู„ุฉ ุŒ ุงู„ุชุญูƒู… ููŠ ุงู„ู†ุณุฎ ุงู„ู…ุชู…ุงุซู„ ุŒ cronjob ุŒ ุงู„ูˆุธูŠูุฉ
  • ุงู„ุชูƒูˆูŠู†: configmap ุŒ ุงู„ุณุฑูŠ

ุจู†ุงุก ุฑุณู… ุจูŠุงู†ูŠ ู„ู„ูƒุงุฆู†ุงุช ุงู„ุทุฑููŠุฉ:


  • ู…ู„ูƒูŠุฉ k8s-k8s (ู…ุซู„ k8s.namespace - k8s.pod)
  • ุนู„ุงู‚ุฉ k8s-k8s (ู…ุซู„ k8s.service - k8s.pod)
  • ุงู„ุนู„ุงู‚ุฉ ุงู„ู…ุงุฏูŠุฉ ุจูŠู† k8s (ู…ุซู„ k8s.node - host)

ุนุฑุถ ุนู‚ุฏ ุงู„ุจูŠุงู†ุงุช ุงู„ูˆุตููŠุฉ:


  • ุงู„ุญู‚ูˆู„ ุงู„ู…ูู‡ุฑุณุฉ: ุงู„ุญู‚ูˆู„ ุงู„ู‚ูŠุงุณูŠุฉ ู…ุซู„ Type Name ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ k8s ุงู„ู…ุญุฏุฏุฉ ู…ุซู„ K8s.Namespace
  • ุงู„ุญู‚ูˆู„ ุงู„ู…ุฎุฒู†ุฉ ูู‚ุท: ุงู„ู…ุญุชูˆู‰ ุงู„ูƒุงู…ู„ ู„ู…ูˆุฑุฏ k8s ุงู„ู…ุฎุฒู† ุชุญุช K8s.Extra

ุจู†ุงุก ุงู„ุจูŠุงู†ุงุช ุงู„ูˆุตููŠุฉ ู„ู„ุนู‚ุฏุฉ:


  • ุญู‚ู„ ุจูŠุงู†ุงุช Status ู„ุนู‚ุฏุฉ Status
  • ู…ุน ุงู„ู‚ูŠู… ุฃุนู„ู‰ (ุฃุจูŠุถ) / ุฃุณูู„ (ุฃุญู…ุฑ)
  • ุงู„ู…ุทุจู‚ ุญุงู„ูŠู‹ุง ุนู„ู‰ ุงู„ู…ูˆุงุฑุฏ: pod ูˆ persistentvolumeclaim (pvc) ูˆ persistentvolume (pv)

ุฏุนู… ู„ุฃู†ูˆุงุน ู…ุฎุชู„ูุฉ ู…ู† ุงู„ุชุฏูู‚


  • sFlow
  • AFPacket
  • PCAP
  • ู…ู‚ุจุณ PCAP
  • DPDK
  • eBPF
  • Openvswitch ู…ู†ูุฐ ุงู„ู†ุณุฎ ุงู„ู…ุชุทุงุจู‚

ูŠูˆุตู ุงู„ุจุญุซ ููŠ ุดุจูƒุฉ Ansible ุนู† Skydive ููŠ 2 ู…ุดุงุฑูƒุงุช.



ู†ุญู† ู†ุจุญุซ ุนู† ุฃุดุฎุงุต ูŠู…ูƒู†ู‡ู… ูƒุชุงุจุฉ ู…ุดุงุฑูƒุงุช ุญูˆู„ ู…ูŠุฒุงุช Skydive ุงู„ุฃุฎุฑู‰.
ุจุฑู‚ูŠุฉ ุงู„ุฏุฑุฏุดุฉ ุนู„ู‰ skydive.network: https://t.me/skydive_network_ar

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


All Articles