Tokiso e ntle ea MetalLB ka mokhoa oa L2

Tokiso e ntle ea MetalLB ka mokhoa oa L2
Haufinyane tjena ke ne ke tobane le mosebetsi o sa tloaelehang oa ho theha routing bakeng sa MetalLB. Tsohle di tla loka, hobane... Hangata MetalLB ha e hloke liketso tse ling, empa molemong oa rona re na le sehlopha se batlang se le seholo se nang le tlhophiso e bonolo haholo ea marang-rang.

Sehloohong sena ke tla u bolella mokhoa oa ho lokisa litsela tse thehiloeng mohloling le tsa maano bakeng sa marang-rang a ka ntle a sehlopha sa hau.

Nke ke ka bua ka botlalo mabapi le ho kenya le ho hlophisa MetalLB, kaha ke nahana hore u se u ntse u e-na le boiphihlelo. Ke fana ka maikutlo a ho toba ntlha, e leng ho theha routing. Kahoo re na le linyeoe tse 'ne:

Taba ea 1: Ha ho sa hlokahale tlhophiso

Ha re shebeng nyeoe e bonolo.

Tokiso e ntle ea MetalLB ka mokhoa oa L2

Tokiso e eketsehileng ea litsela ha e hlokehe ha liaterese tse fanoeng ke MetalLB li le ka har'a subnet e tšoanang le liaterese tsa li-node tsa hau.

Ka mohlala, u na le subnet 192.168.1.0/24, e na le router 192.168.1.1, 'me li-node tsa hau li fumana liaterese: 192.168.1.10-30, ebe bakeng sa MetalLB o ka fetola mefuta 192.168.1.100-120 'me u be le bonnete ba hore ba tla sebetsa ntle le tlhophiso efe kapa efe e eketsehileng.

Hobaneng ha ho le joalo? Hobane li-node tsa hau li se li na le litsela tse lokiselitsoeng:

# 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

'Me liaterese tsa mefuta e tšoanang li tla li sebelisa hape ntle le liketso tse ling.

Taba ea 2: Ha ho hlokahala hore ho etsoe mokhoa o eketsehileng

Tokiso e ntle ea MetalLB ka mokhoa oa L2

U lokela ho lokisa litsela tse ling neng kapa neng ha li-node tsa hau li se na aterese ea IP e hlophisitsoeng kapa tsela e eang subnet eo MetalLB e buang ka eona.

Ke tla hlalosa ka ho qaqileng haholoanyane. Nako le nako ha MetalLB e hlahisa aterese, e ka bapisoa le kabelo e bonolo joalo ka:

ip addr add 10.9.8.7/32 dev lo

Ela hloko:

  • a) Aterese e fanoe ka sehlongwapele /32 ke hore, tsela e ke ke ea eketsoa ka bo eona subnet bakeng sa eona (ke aterese feela)
  • b) Aterese e khomaretsoe ho sebopeho sefe kapa sefe sa node (mohlala, loopback). Ho bohlokoa ho bolela mona likarolo tsa marang-rang a Linux. Ho sa tsotelehe hore na o eketsa aterese ho sebopeho sefe, kernel e tla lula e sebetsana le likopo tsa arp le ho romella likarabo tsa arp ho efe kapa efe ea tsona, boitšoaro bona bo nkuoa bo nepahetse, ho feta moo, bo sebelisoa haholo tikolohong e matla joalo ka Kubernetes.

Boitšoaro bona bo ka etsoa ka mokhoa o ikhethileng, mohlala ka ho nolofalletsa arp e thata:

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

Tabeng ena, likarabo tsa arp li tla romelloa feela haeba sebopeho se na le aterese e itseng ea IP ka ho hlaka. Tlhophiso ena ea hlokahala haeba u rera ho sebelisa MetalLB mme proxy ea hau ea kube e sebetsa ka IPVS mode.

Leha ho le joalo, MetalLB ha e sebelise kernel ho sebetsana le likopo tsa arp, empa e iketsetsa sebaka sa basebelisi, kahoo khetho ena e ke ke ea ama ts'ebetso ea MetalLB.

Ha re khutleleng mosebetsing oa rona. Haeba tsela ea liaterese tse fanoeng e le sieo ho li-node tsa hau, e kenyelle pele ho li-node tsohle:

ip route add 10.9.8.0/24 dev eth1

Taba ea 3: Ha o hloka litsela tse thehiloeng mohloling

U tla hloka ho lokisa litsela tse thehiloeng mohloling ha u amohela lipakete ka heke e arohaneng, eseng e hlophisitsoeng ka mokhoa oa kamehla, kahoo lipakete tsa likarabo le tsona li lokela ho kena ka tsela e tšoanang.

Ka mohlala, u na le subnet e tšoanang 192.168.1.0/24 e inehetseng ho li-node tsa hau, empa u batla ho fana ka liaterese tsa kantle u sebelisa MetalLB. Ha re nke hore u na le liaterese tse ngata ho tsoa subnet 1.2.3.0/24 e fumaneha VLAN 100 'me u batla ho li sebelisa ho fihlella lits'ebeletso tsa Kubernetes kantle.

Tokiso e ntle ea MetalLB ka mokhoa oa L2

Ha o kopana 1.2.3.4 u tla be u etsa likopo ho tsoa subnet e fapaneng le 1.2.3.0/24 ebe o emela karabo. Node eo hajoale e leng eona e ka sehloohong bakeng sa aterese e fanoeng ke MetalLB 1.2.3.4, e tla amohela pakete ho tsoa ho router 1.2.3.1, empa karabo bakeng sa hae e tlameha ho tsamaea ka tsela e ts'oanang, ho feta 1.2.3.1.

Kaha node ea rona e se e na le heke ea kamehla e hlophisitsoeng 192.168.1.1, joale ka ho sa feleng karabo e tla ea ho eena, eseng ho 1.2.3.1, eo ka eona re ileng ra fumana sephutheloana.

Joang ho sebetsana ka katleho le boemo bona?

Tabeng ena, o hloka ho lokisa li-node tsohle tsa hau ka tsela eo li loketseng ho sebeletsa liaterese tsa kantle ntle le tlhophiso e eketsehileng. Ke hore, bakeng sa mohlala o ka holimo, o hloka ho theha sebopeho sa VLAN ho node esale pele:

ip link add link eth0 name eth0.100 type vlan id 100
ip link set eth0.100 up

Ebe u eketsa litsela:

ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100

Ka kopo hlokomela hore re kenya litsela tafoleng e arohaneng ea litsela 100 e tla ba le litsela tse peli feela tse hlokahalang ho romela pakete ea likarabo ka heke 1.2.3.1, e fumanehang ka morao ho sebopeho eth0.100.

Joale re hloka ho eketsa molao o bonolo:

ip rule add from 1.2.3.0/24 lookup 100

e reng ka ho hlaka: haeba aterese ea mohloli oa pakete e ka hare 1.2.3.0/24, joale o hloka ho sebelisa tafole ea routing 100. Ho eona re se re hlalositse tsela e tla mo fetisa 1.2.3.1

Taba ea 4: Ha o hloka mokhoa o thehiloeng ho leano

Topology ea marang-rang e tšoana le mohlaleng o fetileng, empa ha re re u batla ho khona ho fumana liaterese tsa letamo la kantle. 1.2.3.0/24 ho tloha mefuteng ea hau:

Tokiso e ntle ea MetalLB ka mokhoa oa L2

The peculiarity ke hore ha u fumana aterese efe kapa efe ho 1.2.3.0/24, pakete ea karabo e otla node 'me e na le aterese ea mohloli sebakeng sa marang-rang 1.2.3.0/24 tla romeloa ka kutlo ho eth0.100, empa re batla hore Kubernetes e e tsamaisetse ho pod ea rona ea pele, e hlahisitseng kopo ea pele.

Ho rarolla bothata bona ho ile ha ba thata, empa ho ile ha khoneha ka lebaka la mekhoa e thehiloeng ho leano:

Bakeng sa kutloisiso e betere ea ts'ebetso, mona ke setšoantšo sa "netfilter block":
Tokiso e ntle ea MetalLB ka mokhoa oa L2

Ho qala, joalo ka mohlala o fetileng, ha re theheng tafole e 'ngoe ea litsela:

ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100

Joale a re kenyelleng melao e seng mekae ho 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

Melao ena e tla tšoaea likhokahano tse kenang ho sehokelo eth0.100, ho tšoaea lipakete tsohle ka tag 0x100, likarabo ka har'a khokahanyo e tšoanang le tsona li tla tšoauoa ka theke e tšoanang.

Joale re ka eketsa molao oa ho tsamaisa:

ip rule add from 1.2.3.0/24 fwmark 0x100 lookup 100

Ke hore, lipakete tsohle tse nang le aterese ea mohloli 1.2.3.0/24 le tag 0x100 e tlameha ho tsamaisoa ho sebelisoa tafole 100.

Ka hona, lipakete tse ling tse amoheloang ka sebopeho se seng ha li laoloe ke molao ona, o tla li lumella ho tsamaisoa ho sebelisoa lisebelisoa tse tloaelehileng tsa Kubernetes.

Ho na le ntho e 'ngoe hape, ho Linux ho na le seo ho thoeng ke filthara ea reverse, e senyang ntho eohle; e etsa cheke e bonolo: bakeng sa lipakete tsohle tse kenang, e fetola aterese ea mohloli oa pakete le aterese ea motho ea e rometseng ebe e hlahloba hore na. sephutheloana se ka tloha ka sebopeho se tšoanang seo se amohetsoeng ho sona, haeba ho se joalo, se tla se sefa.

Bothata ke hore molemong oa rona e ke ke ea sebetsa ka nepo, empa re ka e thibela:

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0.100/rp_filter

Ka kopo hlokomela hore taelo ea pele e laola boitšoaro ba lefats'e la rp_filter; haeba e sa holofala, taelo ea bobeli e ke ke ea e-ba le phello. Leha ho le joalo, li-interfaces tse setseng li tla sala ka rp_filter e nolofalitsoe.

E le hore re se ke ra fokotsa ts'ebetso ea sefahla ka botlalo, re ka sebelisa ts'ebetso ea rp_filter bakeng sa netfilter. U sebelisa rpfilter joalo ka module ea iptables, o ka hlophisa melao e feto-fetohang, mohlala:

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

thusa rp_filter ho sebopeho eth0.100 bakeng sa liaterese tsohle ntle le 1.2.3.0/24.

Source: www.habr.com

Eketsa ka tlhaloso