ʻAʻole i liʻuliʻu i hala aku nei ua alo au i kahi hana maʻamau o ka hoʻonohonoho ʻana i ke ala ala no MetalLB. E maikaʻi nā mea a pau, no ka mea ... ʻO ka maʻamau ʻaʻole koi ʻo MetalLB i nā hana hou aʻe, akā i kā mākou hihia, loaʻa iā mākou kahi puʻupuʻu nui me kahi hoʻonohonoho pūnaewele maʻalahi.
Ma kēia ʻatikala e haʻi aku wau iā ʻoe pehea e hoʻonohonoho ai i ke ala kumu kumu a me nā kulekele no ka pūnaewele waho o kāu puʻupuʻu.
ʻAʻole wau e hele i nā kikoʻī e pili ana i ka hoʻonohonoho ʻana a me ka hoʻonohonoho ʻana i ka MetalLB, no ka mea, manaʻo wau ua loaʻa iā ʻoe kekahi ʻike. Manaʻo wau e hele pololei i ke kiko, ʻo ia hoʻi ka hoʻonohonoho ʻana i ke ala ala. No laila, ʻehā kā mākou hihia:
Hana 1: Ke koi ʻole ʻia kahi hoʻonohonoho
E nānā kākou i kahi hihia maʻalahi.
ʻAʻole koi ʻia ka hoʻonohonoho hoʻonohonoho ala ʻē aʻe inā loaʻa nā helu i hoʻopuka ʻia e MetalLB i ka subnet like me nā helu o kāu mau nodes.
No ka laʻana, loaʻa iā ʻoe kahi subnet 192.168.1.0/24
, loaʻa iā ia kahi alalai 192.168.1.1
, a loaʻa i kāu mau node nā helu wahi: 192.168.1.10-30
, a laila no MetalLB hiki iā ʻoe ke hoʻololi i ka laulā 192.168.1.100-120
a e hōʻoia e hana lākou me ka ʻole o ka hoʻonohonoho hou.
No ke aha ia? No ka mea, ua hoʻonohonoho ʻia kāu mau nodes:
# ip route
default via 192.168.1.1 dev eth0 onlink
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
A e hoʻohana hou nā ʻōlelo mai ka laulā like me ka ʻole o nā hana hou.
Hana 2: Ke koi ʻia ka hoʻoponopono hou
Pono ʻoe e hoʻonohonoho i nā ala ʻē aʻe ke loaʻa ʻole i kāu mau node kahi IP address i hoʻonohonoho ʻia a i ʻole ala i ka subnet kahi i hoʻopuka ai ʻo MetalLB i nā ʻōlelo.
E wehewehe iki au. Ke hoʻopuka ʻo MetalLB i kahi helu wahi, hiki ke hoʻohālikelike ʻia me kahi hana maʻalahi e like me:
ip addr add 10.9.8.7/32 dev lo
E nānā i:
- a) Hāʻawi ʻia ka helu wahi me kahi prefix
/32
ʻo ia hoʻi, ʻaʻole e hoʻohui ʻia kahi ala i ka subnet no ia (he helu wahi wale nō ia) - b) Hoʻopili ʻia ka helu wahi i kekahi interface node (no ka laʻana loopback). Pono e haʻi ʻia ma aneʻi i nā hiʻohiʻona o ka waihona pūnaewele Linux. ʻAʻole pili i ka interface āu e hoʻohui ai i ka helu wahi, e hana mau ka kernel i nā noi arp a hoʻouna i nā pane arp i kekahi o lākou, ua manaʻo ʻia kēia ʻano pololei a, ʻoi aku, ua hoʻohana nui ʻia i loko o kahi ʻano ikaika e like me Kubernetes.
Hiki ke hoʻopilikino ʻia kēia ʻano, no ka laʻana ma ka ʻae ʻana i ka arp koʻikoʻi:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
I kēia hihia, e hoʻouna wale ʻia nā pane arp inā loaʻa i ka interface kahi helu IP kikoʻī. Pono kēia hoʻonohonoho inā hoʻolālā ʻoe e hoʻohana i ka MetalLB a ke holo nei kāu kube-proxy ma ke ʻano IPVS.
Akā naʻe, ʻaʻole hoʻohana ʻo MetalLB i ka kernel no ka hoʻoponopono ʻana i nā noi arp, akā hana ʻo ia iā ia iho i ka mea hoʻohana-space, no laila ʻaʻole pili kēia koho i ka hana o MetalLB.
E hoʻi kāua i kā mākou hana. Inā ʻaʻole i loaʻa ke ala no nā helu i hoʻopuka ʻia ma kāu mau nodes, e hoʻohui mua ia i nā nodes a pau:
ip route add 10.9.8.0/24 dev eth1
Hana 3: Ke makemake ʻoe i ke ala ala kumu
Pono ʻoe e hoʻonohonoho i ke ala ala kumu i ka wā e loaʻa ai iā ʻoe nā ʻeke ma kahi ʻīpuka kaʻawale, ʻaʻole ka mea i hoʻonohonoho ʻia e ka paʻamau, no laila e hele pū nā ʻeke pane ma ka ʻīpuka like.
No ka laʻana, loaʻa iā ʻoe ka subnet like 192.168.1.0/24
i hoʻolaʻa ʻia i kāu mau nodes, akā makemake ʻoe e hoʻopuka i nā helu waho me ka hoʻohana ʻana i MetalLB. E manaʻo mākou he nui kāu mau helu wahi mai kahi subnet 1.2.3.0/24
aia ma VLAN 100 a makemake ʻoe e hoʻohana iā lākou e komo i nā lawelawe Kubernetes ma waho.
I ka launa ana 1.2.3.4
e noi ana ʻoe mai kahi subnet ʻē aʻe 1.2.3.0/24
a kali i ka pane. ʻO ka node i kēia manawa ka haku no ka helu wahi i hoʻopuka ʻia e MetalLB 1.2.3.4
, e loaʻa i ka ʻeke mai ka mea alaala 1.2.3.1
, aka, o ka pane nona e pono e hele ma ke ala hookahi, ma 1.2.3.1
.
No ka mea ua loaʻa i kā mākou node kahi puka paʻamau i hoʻonohonoho ʻia 192.168.1.1
, a laila ma ka paʻamau e hele aku ka pane iā ia, ʻaʻole ia 1.2.3.1
, ma laila mākou i loaʻa ai ka pūʻolo.
Pehea e hoʻokō ai i kēia kūlana?
I kēia hihia, pono ʻoe e hoʻomākaukau i kāu mau node a pau i mākaukau lākou e lawelawe i nā ʻōlelo waho waho me ka ʻole o ka hoʻonohonoho hou. ʻO ia, no ka laʻana i luna, pono ʻoe e hana i kahi interface VLAN ma ka node ma mua:
ip link add link eth0 name eth0.100 type vlan id 100
ip link set eth0.100 up
A laila hoʻohui i nā ala:
ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100
E ʻoluʻolu e hoʻohui mākou i nā ala i kahi papa hoʻokele kaʻawale 100
ʻelua wale nō ala e pono ai e hoʻouna i kahi ʻeke pane ma ka ʻīpuka 1.2.3.1
, aia ma hope o ke kikowaena eth0.100
.
I kēia manawa pono mākou e hoʻohui i kahi lula maʻalahi:
ip rule add from 1.2.3.0/24 lookup 100
e ʻōlelo pololei ana: inā aia ka helu kumu o ka ʻeke 1.2.3.0/24
, a laila pono ʻoe e hoʻohana i ka papa kuhikuhi 100
. I loko o ia mea ua wehewehe mākou i ke ala e hoʻouna ai iā ia 1.2.3.1
Hana 4: Ke makemake ʻoe i ka hoʻokele kulekele
ʻO ka topology pūnaewele e like me ka laʻana ma mua, akā e ʻōlelo mākou makemake ʻoe e hiki ke komo i nā helu wai waho. 1.2.3.0/24
mai kāu mau pahu:
ʻO ka hiʻohiʻona ke komo ʻana i kekahi helu wahi i loko 1.2.3.0/24
, paʻi ka ʻeke pane i ka node a loaʻa iā ia kahi helu kumu ma ka laulā 1.2.3.0/24
e hoʻouna ʻia me ka hoʻolohe eth0.100
, akā makemake mākou iā Kubernetes e hoʻihoʻi iā ia i kā mākou pod mua, nāna i hoʻopuka i ka noi kumu.
Ua paʻakikī ka hoʻoponopono ʻana i kēia pilikia, akā hiki ke hiki ke hoʻomaikaʻi ʻia i ka hoʻokele ʻana i nā kulekele:
No ka hoʻomaopopo maikaʻi ʻana i ke kaʻina hana, eia kahi kiʻi poloka netfilter:
ʻO ka mea mua, e like me ka laʻana ma mua, e hana mākou i kahi papa kuhikuhi ʻē aʻe:
ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100
I kēia manawa e hoʻohui i kekahi mau lula i nā iptables:
iptables -t mangle -A PREROUTING -i eth0.100 -j CONNMARK --set-mark 0x100
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j RETURN
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark
Na kēia mau lula e hōʻailona i nā pilina e hiki mai ana i ka interface eth0.100
, e kaha ana i nā ʻeke a pau me ka hōʻailona 0x100
, e hōʻailona ʻia nā pane i loko o ka pilina like me ka hōʻailona like.
I kēia manawa hiki iā mākou ke hoʻohui i kahi lula routing:
ip rule add from 1.2.3.0/24 fwmark 0x100 lookup 100
ʻO ia hoʻi, nā ʻeke a pau me kahi helu kumu 1.2.3.0/24
a me ka lepili 0x100
pono e hoʻohana ʻia me ka papa ʻaina 100
.
No laila, ʻaʻole pili i kēia lula nā ʻeke ʻē aʻe i loaʻa ma kahi interface ʻē aʻe, e hiki ai iā lākou ke hoʻokele me ka hoʻohana ʻana i nā mea hana Kubernetes maʻamau.
Aia kekahi mea ʻē aʻe, ma Linux aia kahi kānana ala i kapa ʻia, e hoʻopau i ka mea holoʻokoʻa; hana ia i kahi māka maʻalahi: no nā ʻeke komo mai, hoʻololi ia i ka helu kumu o ka ʻeke me ka helu mea hoʻouna a nānā inā paha. hiki i ka ʻeke ke haʻalele ma ke kikowaena like i loaʻa ai, inā ʻaʻole, e kānana ia.
ʻO ka pilikia i kā mākou hihia ʻaʻole ia e hana pololei, akā hiki iā mākou ke hoʻopau iā ia:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0.100/rp_filter
E ʻoluʻolu e hoʻomaopopo ʻo ke kauoha mua e hoʻomalu i ka ʻano honua o rp_filter; inā ʻaʻole i pio, ʻaʻohe hopena o ke kauoha ʻelua. Eia naʻe, e hoʻomau ʻia nā mea i koe me rp_filter.
I ʻole e kaupalena loa i ka hana o ka kānana, hiki iā mākou ke hoʻohana i ka hoʻokō rp_filter no netfilter. Ke hoʻohana nei i ka rpfilter ma ke ʻano he module iptables, hiki iā ʻoe ke hoʻonohonoho i nā lula maʻalahi, no ka laʻana:
iptables -t raw -A PREROUTING -i eth0.100 -d 1.2.3.0/24 -j RETURN
iptables -t raw -A PREROUTING -i eth0.100 -m rpfilter --invert -j DROP
hiki iā rp_filter ma ke kikowaena eth0.100
no nā helu wahi a pau koe 1.2.3.0/24
.
Source: www.habr.com