Ho utloisisa Likhetho tsa Ts'ebetso ea Leano la Marang-rang le Calico

Ho utloisisa Likhetho tsa Ts'ebetso ea Leano la Marang-rang le Calico

Sesebelisoa sa marang-rang sa Calico se fana ka maano a mangata a marang-rang a nang le syntax e kopaneng ho sireletsa mabotho a li-hardware, mechini ea sebele le li-pods. Melao ena e ka sebelisoa ka har'a sebaka sa mabitso kapa e be maano a marang-rang a lefats'e a sebetsang ho moamoheli qetellong (ho sireletsa lits'ebetso tse sebetsang ka kotloloho ho moamoheli - moamoheli e ka ba seva kapa mochini o sebetsang) kapa pheletso ea mosebetsi (ho sireletsa lits'ebetso tse tsamaeang ka har'a lijana kapa mechini e ts'oaretsoeng). Melao ea Calico e u lumella ho sebelisa mehato ea ts'ireletso libakeng tse fapaneng tseleng ea pakete u sebelisa likhetho tse kang preDNAT, unraracked, le applyOnForward. Ho utloisisa hore na likhetho tsena li sebetsa joang ho ka thusa ho ntlafatsa ts'ireletso le ts'ebetso ea sistimi ea hau ka kakaretso. Sengoliloeng sena se hlalosa bohlokoa ba likhetho tsena tsa leano la Calico (preDNAT, unraracked le applyOnForward) tse sebelisoang ho li-endpoints, ka ho hatisa se etsahalang litseleng tsa ho sebetsana le lipakete (ketane ea iptabels).

Sengoliloeng sena se nka hore u na le kutloisiso ea mantlha ea hore na maano a marang-rang a Kubernetes le Calico a sebetsa joang. Haeba ha ho joalo, re khothaletsa ho e leka thuto ea motheo ea leano la marang-rang и thupelo ea tšireletso ea moamoheli sebelisa Calico pele u bala sengoloa sena. Re boetse re lebeletse hore u be le kutloisiso ea motheo ea mosebetsi li-iptables ho linux.

Calico leano la lefats'e la marang-rang e o lumella ho sebelisa melaoana ea phihlello ka lileibole (ho lihlopha tsa mabotho le mesebetsi / li-pods). Sena se na le thuso haholo haeba u sebelisa litsamaiso tse fapaneng hammoho - mechini e fumanehang, sistimi ka kotloloho ho hardware, kapa lisebelisoa tsa kubernetes. Ho phaella moo, o ka sireletsa sehlopha sa hau (li-node) ho sebelisa sete sa maano a phatlalatso le ho sebelisa maano a marang-rang ho sephethephethe se kenang (mohlala, ka tšebeletso ea NodePorts kapa External IPs).

Boemong ba motheo, ha Calico e hokahanya pod le marang-rang (sheba setšoantšo se ka tlase), e e hokahanya le moeti ka ho sebelisa sebopeho sa Ethernet se bonahalang (veth). Sephethephethe se rometsoeng ke pod se tla ho moeti ho tloha sebopeho sena sa sebele 'me se sebetsoa ka tsela e ts'oanang le ha eka se tsoa ho sebopeho sa marang-rang sa' mele. Ka kamehla, Calico e reha likhokahano tsena caliXXX. Kaha sephethephethe se tla ka sebopeho sa sebele, se feta ka iptables joalokaha eka pod e ne e le hop e le 'ngoe. Ka hona, ha sephethephethe se fihla ho/ho tsoa ho pod, se fetisetsoa ho ea ka pono ea moamoheli.

Ho node ea Kubernetes e tsamaisang Calico, o ka etsa 'mapa oa sebopeho (veth) ho mojaro oa mosebetsi ka tsela e latelang. Mohlaleng o ka tlase, o ka bona hore veth#10 (calic1cbf1ca0f8) e hokahane le cnx-manager-* sebakeng sa mabitso sa calico-monitoring.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

Ho utloisisa Likhetho tsa Ts'ebetso ea Leano la Marang-rang le Calico

Kaha Calico e theha sebopeho sa veth bakeng sa mojaro o mong le o mong oa mosebetsi, e tiisa maano joang? Ho etsa sena, Calico e theha lihakisi ka liketane tse fapaneng tsa tsela ea ts'ebetso ea lipakete ho sebelisa li-iptables.

Setšoantšo se ka tlase se bonts'a liketane tse amehang ts'ebetsong ea lipakete ho iptables (kapa netfilter subsystem). Ha pakete e fihla ka sebopeho sa marang-rang, e qala ka ketane ea PREROUTING. Joale ho etsoa qeto ea ho tsamaisa, 'me ho itšetlehile ka sena, pakete e feta ka INPUT (e lebisitsoe ho mekhoa ea ho amohela) kapa FORWARD (e lebisitsoe ho pod kapa node e' ngoe ho marang-rang). Ho tloha ts'ebetsong ea lehae, pakete e feta ka har'a ketane ea OUTPUT ebe ea POSTROUTING pele e romeloa fatše.

Hlokomela hore pod e boetse e le mokhatlo o ka ntle (o amanang le veth) ho latela ts'ebetso ea iptables. Ha re akaretsa:

  • Sephethephethe se fetisetsoang pele (nat, router kapa ho/ho tloha pod) se feta har'a liketane tsa PREROUTING - FORWARD - POSTROUTING.
  • Sephethephethe se eang sebakeng sa moamoheli se feta ka har'a PREROUTING - INPUT chain.
  • Sephethephethe se tsoang ho moamoheli oa lehae se feta har'a OUTPUT - POSTROUTING chain.

Ho utloisisa Likhetho tsa Ts'ebetso ea Leano la Marang-rang le Calico

Calico e fana ka likhetho tsa maano tse u lumellang hore u sebelise maano ka har'a liketane tsohle. Re nahanne ka seo, ha re shebeng likhetho tse fapaneng tsa tlhophiso ea leano tse fumanehang ho Calico. Linomoro lethathamong la likhetho tse ka tlase li lumellana le linomoro tse setšoantšong se kaholimo.

  1. Leano la ho qetela la mosebetsi (pod).
  2. Leano la moamoheli
  3. Etsa kopo eaOnForward kgetho
  4. Leano la PreDNAT
  5. Leano le sa Batlang

Ha re qaleng ka ho sheba hore na maano a sebelisoa joang ho li-endpoints tsa mosebetsi (Kubernetes pods kapa OpenStack VMs), ebe re sheba likhetho tsa maano bakeng sa liphetho tsa moamoheli.

Lintlha tsa ho qetela tsa mosebetsi

Leano la Boima ba Mosebetsi (1)

Ena ke khetho ea ho sireletsa li-pods tsa hau tsa kubernetes. Calico e tšehetsa ho sebetsa le Kubernetes NetworkPolicy, empa hape e fana ka maano a eketsehileng - Calico NetworkPolicy le GlobalNetworkPolicy. Calico e etsa ketane bakeng sa pod e 'ngoe le e 'ngoe (mosebetsi) le lihoko ka har'a liketane tsa INPUT le OUTPUT bakeng sa mojaro oa mosebetsi ho ea tafoleng ea sefe ea ketane ea FORWARD.

Host Endpoints

Leano la Moamoheli (2)

Ho phaella ho CNI (container network interface), maano a Calico a fana ka bokhoni ba ho sireletsa moamoheli ka boeena. Ho Calico, o ka theha sebaka sa moamoheli ka ho hlakisa motsoako oa sebopeho sa moamoheli mme, ha ho hlokahala, linomoro tsa boema-kepe. Ts'ebetso ea leano bakeng sa setheo sena e finyelloa ka ho sebelisa tafole ea filthara ka har'a liketane tsa INPUT le OUTPUT. Joalokaha u ka bona setšoantšong, (2) li sebetsa lits'ebetsong tsa lehae ho node / host. Ke hore, haeba u theha leano le sebetsang sebakeng sa moamoheli, e ke ke ea ama sephethephethe se eang / ho tloha ho li-pods tsa hau. Empa e fana ka sebopeho se le seng / syntax bakeng sa ho thibela sephethephethe bakeng sa moamoheli oa hau le li-pods ho sebelisa maano a Calico. Sena se nolofatsa haholo ts'ebetso ea ho laola maano a marang-rang a fapaneng. Ho lokisa maano a sebaka sa moamoheli ho matlafatsa ts'ireletso ea sehlopha ke taba e 'ngoe ea bohlokoa ea ts'ebeliso.

Sebelisa Leano la ho Fetisa (3)

Khetho ea ApplyOnForward e fumaneha ho leano la lefats'e la marang-rang la Calico ho lumella maano ho sebelisoa ho sephethephethe sohle se fetang sebakeng sa moamoheli, ho kenyeletsoa le sephethephethe se tla romelloa ke moamoheli. Sena se kenyelletsa sephethephethe se fetisetsoang ho pod ea lehae kapa kae kapa kae sebakeng sa marang-rang. Calico e hloka hore tlhophiso ena e lumelletsoe ho etsa melaoana e sebelisang PreDNAT mme e sa lateloe, bona likarolo tse latelang. Ho feta moo, ApplyOnForward e ka sebelisoa ho lekola sephethephethe sa baeti maemong ao ho ona ho sebelisoang router kapa software NAT.

Hlokomela hore haeba o hloka ho sebelisa leano le tšoanang la marang-rang ho mekhoa ea bobeli le li-pods, joale ha ho hlokahale hore u sebelise khetho ea ApplyOnForward. Seo u hlokang ho se etsa feela ke ho theha lengolo bakeng sa sebaka se hlokahalang sa hostendpoint le mosebetsi oa ho qetela (pod). Calico e bohlale ho lekana ho sebelisa leano le thehiloeng ho li-labels, ho sa tsotelehe mofuta oa pheletso (hostendpoint kapa mosebetsi o boima).

Leano la PreDNAT (4)

Ho Kubernetes, likou tsa mekhatlo ea litšebeletso li ka pepesoa ka ntle ho sebelisoa khetho ea NodePorts kapa, ka boikhethelo (ha u sebelisa Calico), ka ho li bapatsa u sebelisa likhetho tsa Cluster IPs kapa External IPs. Kube-proxy e leka-lekanya sephethephethe se kenang se tlang ho ea tšebeletsong ho li-pods tsa tšebeletso e tsamaellanang e sebelisang DNAT. Ka lebaka lena, u sebelisa melaoana joang bakeng sa sephethephethe se tlang ka NodePorts? Ho etsa bonnete ba hore melaoana ena e sebelisoa pele sephethephethe se sebetsoa ke DNAT (e leng 'mapa pakeng tsa moamoheli:port le litšebeletso tse tsamaisanang), Calico e fana ka paramethara bakeng sa globalNetworkPolicy e bitsoang "preDNAT: true".

Ha pre-DNAT e nolofalitsoe, maano ana a kengoa ts'ebetsong ho (4) setšoantšong - tafoleng ea mangle ea ketane ea PREROUTING - hang pele ho DNAT. Taelo e tloaelehileng ea maano ha e lateloe mona, kaha ts'ebeliso ea maano ana e etsahala pejana haholo tseleng ea ts'ebetso ea sephethephethe. Leha ho le joalo, maano a preDNAT a hlompha taelo ea tšebeliso har'a bona.

Ha u theha maano ka pre-DNAT, ke habohlokoa hore u be hlokolosi ka sephethephethe seo u batlang ho se etsa le ho lumella bongata hore bo haneloe. Sephethephethe se tšoailoeng e le 'lumella' leanong la pre-DNAT ha se sa tla hlola se hlahlojoa ke pholisi ea hostendpoint, ha sephethephethe se hlōlehang leano la pele ho DNAT se tla tsoela pele ka liketane tse setseng.
Calico e entse hore e be tlamo ho nolofalletsa khetho eaOnForward ha u sebelisa preDNAT, kaha ka tlhaloso sebaka sa sephethephethe ha se so khethoe. Sephethephethe se ka lebisoa tšebetsong ea moamoheli, kapa se ka fetisetsoa ho pod kapa node e 'ngoe.

Leano le sa Rarolloang (5)

Marang-rang le lits'ebetso li ka ba le phapang e kholo boitšoarong. Maemong a mang a feteletseng, lits'ebetso li ka hlahisa likhokahano tse ngata tsa nakoana. Sena se ka etsa hore conntrack (karolo ea mantlha ea marang-rang a Linux) e felloe ke mohopolo. Ka tloaelo, ho tsamaisa mefuta ena ea lits'ebetso ho Linux, o tla tlameha ho hlophisa kapa ho tima contrack, kapa ho ngola melao ea iptables ho feta contrack. Leano le sa lekanyetsoang ho Calico ke khetho e bonolo le e sebetsang haholoanyane haeba u batla ho sebetsana le likhokahano kapele kamoo ho ka khonehang. Ka mohlala, haeba u sebelisa chelete e ngata memcache kapa e le mokhoa o eketsehileng oa tšireletso khahlanong le DDOS.

Bala sena blog ya poso (kapa phetolelo ea rōna) bakeng sa tlhaiso-leseling e batsi, ho kenyeletsoa le liteko tsa ts'ebetso ho sebelisa leano le sa lebelloang.

Ha u seta khetho ea "doNotTrack: true" ho Calico globalNetworkPolicy, e fetoha leano **e sa lateloeng** 'me e sebelisoa qalong ea phaephe ea ts'ebetso ea lipakete tsa Linux. Ha u sheba setšoantšo se ka holimo, ho sebelisoa maano a sa hlahlojoeng ho PREROUTING le OUTPUT ketane tafoleng e tala pele ho lateloa ha khokahanyo (conntrack) ho qalisoa. Ha pakete e lumelloa ke leano le sa lateloang, e tšoauoa ho tima ho latella khokahano bakeng sa pakete eo. E bolela:

  • Leano le sa lateloang le sebelisoa ho latela pakete ka 'ngoe. Ha ho na mohopolo oa khokahano (kapa phallo). Ho haella ha likhokahano ho na le litlamorao tse 'maloa tsa bohlokoa:
  • Haeba u batla ho lumella sephethephethe sa kopo le karabelo, u hloka molao bakeng sa ho kena le ho tsoa (kaha Calico hangata e sebelisa contrack ho tšoaea sephethephethe sa karabo joalo ka ha se lumelletsoe).
  • Leano le sa tsitsang ha le sebetse bakeng sa mosebetsi oa Kubernetes (li-pods), hobane tabeng ena ha ho na mokhoa oa ho latela khokahanyo e tsoang ho pod.
  • NAT ha e sebetse ka nepo le lipakete tse sa latelloang (kaha kernel e boloka 'mapa oa NAT ka har'a contrack).
  • Ha u feta molaong oa "lumella tsohle" leanong le sa ts'oaroang, lipakete tsohle li tla tšoauoa joalo ka ha li sa lateloa. Hangata sena ha se seo u se batlang, kahoo ho bohlokoa hore u khethe haholo ka lipakete tse lumelletsoeng ke maano a sa lebelloang ('me u lumelle sephethephethe se seholo ho feta ka maano a tloaelehileng a lateloang).
  • Maano a sa latelloeng a sebelisoa qalong ea phaephe ea ho lokisa lipakete. Sena se bohlokoa haholo ho se utloisisa ha u theha maano a Calico. O ka ba le pholisi ea pod e nang le odara:1 le leano le sa lateloang le odara:1000. Ha ho na taba. Pholisi e sa lateloang e tla sebelisoa pele ho leano la pod. Maano a sa lateloang a hlompha taelo ea ho bolaoa feela har'a bona.

Hobane e 'ngoe ea merero ea leano la doNotTrack ke ho kenya ts'ebetsong leano pele ho liphaephe tsa ts'ebetso ea lipakete tsa Linux, Calico e etsa hore e tlameha ho hlakisa khetho ea applyOnForward ha u sebelisa doNotTrack. Ha u bua ka setšoantšo sa ts'ebetso ea lipakete, hlokomela hore leano le sa tsitsang (5) le sebelisoa pele ho liqeto life kapa life tsa ho tsamaisa. Sephethephethe se ka lebisoa tšebetsong ea moamoheli, kapa se ka fetisetsoa ho pod kapa node e 'ngoe.

Liphello

Re ile ra sheba likhetho tse fapaneng tsa maano (Host endpoint, ApplyOnForward, preDNAT, le Untracked) ho Calico le hore na li sebelisoa joang tseleng ea ts'ebetso ea pakete. Ho utloisisa hore na ba sebetsa joang ho thusa ho theha maano a sebetsang le a bolokehileng. Ka Calico o ka sebelisa leano la marang-rang la lefats'e le sebetsang ho label (sehlopha sa li-node le li-pods) le ho sebelisa maano a nang le mekhahlelo e sa tšoaneng. Sena se lumella litsebi tsa ts'ireletso le tsa marang-rang ho sireletsa "ntho e 'ngoe le e' ngoe" (mefuta ea ho qetela) ka nako e le 'ngoe ho sebelisa puo e le' ngoe ea leano le maano a Calico.

Kabo: Ke rata ho leboha Sean Crampton и Alexa Pollitta bakeng sa tlhahlobo ea bona le lintlha tsa bohlokoa.

Source: www.habr.com

Eketsa ka tlhaloso