Ararere pai mo MetalLB i te aratau L2

Ararere pai mo MetalLB i te aratau L2
Kaore i roa i mua ake nei ka raru ahau ki tetahi mahi tino rerekee ki te whakarite ararere mo MetalLB. Ka pai nga mea katoa, na te mea ... I te nuinga o te wa kaore a MetalLB e hiahia ki etahi atu mahi, engari i roto i ta maatau keehi he roopu tino nui me te whirihoranga whatunga tino ngawari.

I roto i tenei tuhinga ka korero atu ahau ki a koe me pehea te whirihora i te huarahi-a-puna me te huarahi-a-kaupapa mo te whatunga o waho o to huinga.

Kaore au e korero mo te whakauru me te whirihora i te MetalLB, na te mea kei te kii ahau kua whai wheako koe. Ko taku whakaaro me haere tika ki te kaupapa, ara ki te whakarite ararere. Na e wha nga keehi:

Take 1: Karekau he whirihoranga e hiahiatia ana

Kia titiro tatou ki tetahi keehi ngawari.

Ararere pai mo MetalLB i te aratau L2

Kaore e hiahiatia etahi atu whirihoranga ararere ina noho nga wahitau i tukuna e MetalLB i roto i te kupengaroto rite ki nga wahitau o ou pona.

Hei tauira, he kupengaroto kei a koe 192.168.1.0/24, he pouara tona 192.168.1.1, ka whiwhi wāhitau ō kōpuku: 192.168.1.10-30, na mo MetalLB ka taea e koe te whakatika i te awhe 192.168.1.100-120 kia mohio hoki ka mahi me te kore whirihoranga taapiri.

He aha tera? Nā te mea kua whirihora kē ō kōpuku:

# 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 ka whakamahia ano e nga wahitau mai i taua awhe kaore he mahi taapiri.

Take 2: Ina hiahiatia etahi atu whakaritenga

Ararere pai mo MetalLB i te aratau L2

Me whirihora e koe etahi atu ara i nga wa katoa karekau he wahitau IP kua whirihorahia, he huarahi ranei ki te kupenga-roto e tukuna ana e MetalLB nga wahitau.

Ka whakamāramahia e au i roto i nga korero iti. I nga wa katoa ka whakaputa a MetalLB i tetahi wahitau, ka taea te whakataurite ki tetahi mahi ngawari penei:

ip addr add 10.9.8.7/32 dev lo

Kia tupato ki:

  • a) Kua tautapahia te wahitau me te prefix /32 ara, karekau he huarahi e taapiri aunoatia ki te kupengaroto mo tera (he wahitau noa)
  • b) Ka honoa te wahitau ki tetahi atanga node (hei tauira te whakamuri). He pai ki te whakahua i konei nga ahuatanga o te kohinga whatunga Linux. Ahakoa ko tehea atanga ka taapirihia e koe te wahitau, ka tukuna e te kernel nga tono arp me te tuku urupare arp ki tetahi o enei, ka kiia tenei whanonga he tika, me te mea ano, ka whakamahia i roto i te taiao hihiri penei i a Kubernetes.

Ka taea te whakarite i tenei whanonga, hei tauira ma te whakamana i te arp tino:

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

I tenei keehi, ka tukuna noa nga whakautu arp mena kei roto i te atanga tetahi wahitau IP motuhake. Ka hiahiatia tenei tautuhinga ki te whakamahere koe ki te whakamahi i te MetalLB a kei te haere to kube-takawaenga ki te aratau IPVS.

Heoi, kaore a MetalLB e whakamahi i te kernel ki te tukatuka i nga tono arp, engari ka mahia e ia i roto i nga waahi-kaiwhakamahi, na tenei kowhiringa ka kore e pa ki te mahi a MetalLB.

Kia hoki ki ta tatou mahi. Mena karekau te ara mo nga wahitau kua tukuna i runga i o pona, taapirihia i mua ki nga pona katoa:

ip route add 10.9.8.0/24 dev eth1

Take 3: Ina hiahia ararere-a-puna

Me whirihora e koe te ararere-a-puna ina whiwhi koe i nga putea ma te keeti motuhake, kaua ko te mea i whirihorahia e te taunoa, no reira me haere ano nga paakete whakautu ma te keeti ano.

Hei tauira, he rite tonu to kupengaroto 192.168.1.0/24 i whakatapua ki o pona, engari kei te hiahia koe ki te whakaputa i nga wahitau o waho ma te whakamahi i te MetalLB. Me whakaaro he maha nga wahitau mai i te kupengaroto 1.2.3.0/24 kei roto i te VLAN 100 ka hiahia koe ki te whakamahi kia uru atu ki nga ratonga Kubernetes ki waho.

Ararere pai mo MetalLB i te aratau L2

Ina whakapā atu 1.2.3.4 ka tono tono koe mai i tetahi ipurangiroto rereke 1.2.3.0/24 a tatari mo te whakautu. Ko te node te rangatira mo te wahitau i tukuna e MetalLB 1.2.3.4, ka whiwhi i te putea mai i te pouara 1.2.3.1, engari ko te whakautu ki a ia me haere i taua huarahi, ma 1.2.3.1.

I te mea kua whirihorahia te kuaha taunoa o to tatou node 192.168.1.1, ma te taunoa ka tae atu te whakautu ki a ia, kaore ki 1.2.3.1, na reira i whiwhi ai matou i te kete.

Me pehea te aro ki tenei ahuatanga?

I tenei keehi, me whakarite e koe o kohanga katoa kia rite ai ratou ki te mahi i nga wahitau o waho kaore he taapiri taapiri. Arā, mo te tauira i runga ake nei, me hanga e koe he atanga VLAN i runga i te node i mua:

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

Na ka taapirihia nga huarahi:

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

Kia mahara ka taapirihia e matou nga huarahi ki tetahi ripanga ararere motuhake 100 ka rua noa nga huarahi e tika ana hei tuku i te putea whakautu ma te kuaha 1.2.3.1, kei muri i te atanga eth0.100.

Inaianei me taapiri he ture ngawari:

ip rule add from 1.2.3.0/24 lookup 100

e kii ana: mena kei roto te wahitau puna o te kete 1.2.3.0/24, ka hiahia koe ki te whakamahi i te ripanga ararere 100. I roto i tenei kua korerohia e matou te huarahi e tukuna ai ia 1.2.3.1

Take 4: Ina hiahia koe ki te ararere-a-kaupapa

Ko te topology whatunga he rite ki te tauira o mua, engari me kii ano kei te hiahia koe ki te uru atu ki nga wahitau puna wai o waho. 1.2.3.0/24 mai i o poti:

Ararere pai mo MetalLB i te aratau L2

Ko te mea motuhake ko te wa e uru ana ki tetahi wahitau kei roto 1.2.3.0/24, ka pa te kete whakautu ki te node me te wahitau puna kei roto i te awhe 1.2.3.0/24 ka tukuna marie ki eth0.100, engari kei te pirangi matou kia tukuna ano e Kubernetes ki to maatau putunga tuatahi, i puta te tono taketake.

Ko te whakatau i tenei raru he uaua, engari na te ararere kaupapa here ka taea:

Mo te pai ake o te mohio ki te tukanga, koinei te hoahoa paraka netfilter:
Ararere pai mo MetalLB i te aratau L2

Tuatahi, pera i te tauira o mua, me hanga he ripanga ararere atu:

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

Inaianei me taapiri etahi ture ki nga 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

Ka tohu enei ture i nga hononga taumai ki te atanga eth0.100, te tohu i nga kete katoa me te tohu 0x100, ko nga whakautu i roto i te hononga kotahi ka tohua ki te tohu ano.

Inaianei ka taea e tatou te taapiri i tetahi ture ararere:

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

Arā, ko ngā pākete katoa he wāhitau pūtake 1.2.3.0/24 me te tohu 0x100 me haere ma te whakamahi i te ripanga 100.

No reira, ko etahi atu paatete ka riro mai i runga i tetahi atu atanga karekau i raro i tenei ture, ka taea te haere ma te whakamahi i nga taputapu Kubernetes paerewa.

He mea ano ano, kei roto i te Linux he tātari ara whakamuri e kiia nei, ka pahuatia te katoa; ka mahia e ia he tirotiro ngawari: mo nga paanui taumai katoa, ka huri i te wahitau puna o te kete me te wahitau kaituku me te tirotiro mehemea Ka taea e te paakete te wehe ma te atanga ano i riro mai ai, ki te kore, ka taraihia e ia.

Ko te raru ko te mea kaore e pai te mahi, engari ka taea e taatau te whakakore:

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

Kia mahara ko te whakahau tuatahi e whakahaere ana i te whanonga o te ao o rp_filter; ki te kore e monokia, karekau he painga o te whakahau tuarua. Heoi, ka noho tonu nga toenga atanga me te rp_filter kua whakahohea.

Kia kore ai e tino whakawhāitihia te mahi o te tātari, ka taea e tatou te whakamahi i te whakatinanatanga rp_filter mo te netfilter. Ma te whakamahi i te rpfilter hei waahanga iptables, ka taea e koe te whirihora i nga ture ngawari, hei tauira:

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

taea te rp_filter i runga i te atanga eth0.100 mo nga waahi noho katoa engari 1.2.3.0/24.

Source: will.com

Tāpiri i te kōrero