ู
ูุฏู
ุฉ ูู ุงูููุฒ ุจุงูู
ุธูุงุช
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