Flannel Kubernetes the hard way v2
Материал из noname.com.ua
Flannel
Flannel
- один из способов организации оверлейной сети
Зачем это нужно
- В частных случаях когда сеть полностью контролируема и можно назначать любые маршруты и адреса на всех устройствах - не нужно строить никаких оверлейных сетей
- Если сеть не контролируется (например в арендованном датацентре или облаке, и не возможно создание маршрутов между worker-nodes то это один из множества возможных способов обеспечить оверлейную сеть
Как это устроено
"под капотом" используется VxLAN
Разбор прохождения пакетов между двумя POD запущенными на разных нодах
ping from pod on worker 3 to pod on worker 1 root@worker3:/home/ubuntu# nsenter -t 16980 -n root@worker3:/home/ubuntu# #get routes in namespace root@worker3:/home/ubuntu# traceroute 10.244.1.34 traceroute to 10.244.1.34 (10.244.1.34), 30 hops max, 60 byte packets 1 10.244.3.1 (10.244.3.1) 0.156 ms 0.048 ms 0.040 ms 2 10.244.1.0 (10.244.1.0) 2.451 ms 2.340 ms 2.239 ms 3 10.244.1.34 (10.244.1.34) 2.143 ms 2.051 ms 1.954 ms root@worker3:/home/ubuntu# ip r default via 10.244.3.1 dev eth0 10.244.0.0/16 via 10.244.3.1 dev eth0 10.244.3.0/24 dev eth0 proto kernel scope link src 10.244.3.254 #out of namespace root@worker3:/home/ubuntu# ifconfig cni0 cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450 inet 10.244.3.1 netmask 255.255.255.0 broadcast 10.244.3.255 inet6 fe80::f8c6:3aff:fe2b:8a prefixlen 64 scopeid 0x20<link> ether fa:c6:3a:2b:00:8a txqueuelen 1000 (Ethernet) RX packets 112 bytes 6220 (6.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 76 bytes 6164 (6.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 root@worker3:/home/ubuntu# ip r default via 192.168.122.1 dev enp1s0 proto dhcp src 192.168.122.114 metric 100 10.244.0.0/24 via 10.244.0.0 dev flannel.1 onlink 10.244.1.0/24 via 10.244.1.0 dev flannel.1 onlink 10.244.2.0/24 via 10.244.2.0 dev flannel.1 onlink 10.244.3.0/24 dev cni0 proto kernel scope link src 10.244.3.1 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.114 192.168.122.1 dev enp1s0 proto dhcp scope link src 192.168.122.114 metric 100 root@worker3:/home/ubuntu# arp -n Address HWtype HWaddress Flags Mask Iface 10.244.1.0 ether a2:99:54:8b:35:bd CM flannel.1 root@worker3:/home/ubuntu# bridge fdb show dev flannel.1 a2:99:54:8b:35:bd dst 192.168.122.88 self permanent root@worker1:/home/ubuntu# ifconfig flannel.1 flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450 inet 10.244.1.0 netmask 255.255.255.255 broadcast 0.0.0.0 inet6 fe80::a099:54ff:fe8b:35bd prefixlen 64 scopeid 0x20<link> ether a2:99:54:8b:35:bd txqueuelen 0 (Ethernet) RX packets 38 bytes 2424 (2.4 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 24 bytes 2088 (2.0 KB) TX errors 0 dropped 16 overruns 0 carrier 0 collisions 0 root@worker1:/home/ubuntu# ip r default via 192.168.122.1 dev enp1s0 proto dhcp src 192.168.122.88 metric 100 10.244.0.0/24 via 10.244.0.0 dev flannel.1 onlink 10.244.1.0/24 dev cni0 proto kernel scope link src 10.244.1.1 10.244.2.0/24 via 10.244.2.0 dev flannel.1 onlink 10.244.3.0/24 via 10.244.3.0 dev flannel.1 onlink 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.88 192.168.122.1 dev enp1s0 proto dhcp scope link src 192.168.122.88 metric 100 root@worker1:/home/ubuntu# ip r get 10.244.1.34 10.244.1.34 dev cni0 src 10.244.1.1 uid 0 cache (edited) 18:00 4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN mode DEFAULT group default link/ether 86:df:93:cc:8e:62 brd ff:ff:ff:ff:ff:ff promiscuity 0 vxlan id 1 local 192.168.122.114 dev enp1s0 srcport 0 0 dstport 8472 nolearning ttl inherit ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535