Malamalama i filifiliga faiga faʻavae fesoʻotaʻiga ma Calico

Malamalama i filifiliga faiga faʻavae fesoʻotaʻiga ma Calico

O le Calico network plugin e tuʻuina atu ai le tele o faiga faʻavae fesoʻotaʻiga faʻatasi ai ma se syntax tuʻufaʻatasia e puipuia ai masini faʻapitoa, masini masini ma pods. O nei faiga fa'avae e mafai ona fa'aoga i totonu ole igoa avanoa po'o ni faiga fa'avae feso'ota'iga i le lalolagi e fa'atatau ile nofoaga fa'ai'uga (ia puipuia talosaga o loʻo taʻavale saʻo i luga o le talimalo - o le talimalo e mafai ona avea ma se server poʻo se masini masini) poʻo galuega fa'ai'uga (e puipuia ai tusi talosaga o loʻo faʻaogaina i totonu o pusa poʻo masini komepiuta talimalo). O faiga fa'avae a Calico e fa'atagaina oe e fa'aogaina faiga fa'apolopolo i vaega eseese i le ala o le afifi e fa'aaoga ai filifiliga e pei o le preDNAT, unraracked, ma le applyOnForward. Malamalama pe fa'afefea ona aoga nei filifiliga e mafai ona fesoasoani e fa'aleleia atili le saogalemu ma le fa'atinoga o lau faiga atoa. O lenei tusiga o loʻo faʻamatalaina ai le uiga o nei filifiliga Calico policy (preDNAT, unraracked and applyOnForward) faʻaoga i nofoaga faʻafeiloaʻi, faʻatasi ai ma le faʻamamafa i mea e tupu i ala faʻapipiʻi (iptabels filifili).

O lenei tala e fa'apea o lo'o i ai sou malamalamaga fa'avae i le fa'aogaina o faiga fa'avae a Kubernetes ma Calico. Afai e leai, matou te fautuaina le taumafai a'oa'oga faiga fa'avae feso'ota'iga и aʻoaʻoga puipuiga a le talimalo faʻaaoga Calico aʻo leʻi faitauina lenei tusiga. Matou te fa'amoemoe fo'i ia e maua se malamalamaga fa'avae i le galuega iptables i le linux.

calico faiga fa'avae feso'ota'iga i le lalolagi e fa'atagaina oe e fa'aoga se seti o tulafono fa'aogaina e ala i fa'ailoga (i vaega o 'au ma galuega mamafa/pods). E aoga tele lenei mea pe'ā e fa'aogaina fa'atasi faiga fa'apitoa - masini masini, se faiga sa'o i luga o meafaigaluega, po'o se atina'e kubernetes. E le gata i lea, e mafai ona e puipuia lau fuifui (nodes) e faʻaaoga ai se seti o faiga faʻavae ma faʻaoga faiga faʻavae fesoʻotaʻiga i felauaiga o loʻo sau (mo se faʻataʻitaʻiga, e ala i le NodePorts poʻo le External IPs service).

I se tulaga faʻavae, pe a faʻafesoʻotaʻi e Calico se pod i le fesoʻotaʻiga (silasila i le ata o loʻo i lalo), e faʻafesoʻotaʻi atu i le talimalo e faʻaaoga ai se atinaʻe Ethernet (veth). O le felauaiga na lafoina e le pod e sau i le talimalo mai lenei atinaʻe faʻapitoa ma o loʻo faʻagasolo i le auala lava e tasi e pei ona sau mai se fesoʻotaʻiga fesoʻotaʻiga faaletino. Ona o le faaletonu, ua faaigoa e Calico nei feso'ota'iga caliXXX. Talu ai ona o le auala e sau i le virtual interface, e alu atu i iptables e pei o le pod e tasi le oso ese. O le mea lea, pe a o'o mai le ta'avale i/mai se pod, e tu'uina atu mai le manatu o le talimalo.

I luga o le node Kubernetes o loʻo faʻaogaina Calico, e mafai ona e faʻafanua se atinaʻe mataʻutia (veth) i se galuega mamafa e pei ona taua i lalo. I le faʻataʻitaʻiga o loʻo i lalo, e mafai ona e vaʻaia o le veth#10 (calic1cbf1ca0f8) e fesoʻotaʻi i le cnx-manager-* i le igoa ole mataitu-calico.

[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
...

Malamalama i filifiliga faiga faʻavae fesoʻotaʻiga ma Calico

Tuuina atu o le Calico e fatuina se atinaʻe veth mo galuega taʻitasi, faʻafefea ona faʻamalosia faiga faʻavae? Ina ia faia lenei mea, e faia e Calico ni matau i filifili eseese o le auala e gaosia ai pepa e faʻaaoga ai iptables.

O le ata o loʻo i lalo o loʻo faʻaalia ai filifili o loʻo aʻafia i le faʻaogaina o pusa i iptables (poʻo le netfilter subsystem). A o'o mai se afifi e ala i se feso'ota'iga feso'ota'iga, e alu muamua i le filifili PREROUTING. Ona faia lea o se fa'ai'uga ta'avale, ma fa'atatau i lea mea, e pasi atu le pepa i totonu ole INPUT (fa'asino ile fa'agaioiga talimalo) po'o le FORWARD (fa'asino ile pod po'o se isi node ile feso'otaiga). Mai le faiga fa'apitonu'u, e alu le afifi i le OUTPUT ona sosoo ai lea ma le POSTROUTING filifili a'o le'i lafo i lalo le uaea.

Manatua o le pod o se faʻalapotopotoga i fafo (faʻafesoʻotaʻi i le veth) i tulaga o le iptables processing. Sei o tatou aotele:

  • O felauaiga i luma (nat, routed po'o i/mai se pod) e ui atu i filifili PREROUTING - FORWARD - POSTROUTING.
  • Fefa'ataua'iga i le fa'alapotopotoga fa'apitonu'u e pasia le filifili PREROUTING - INPUT.
  • Fefa'ataua'iga mai le fa'agasologa o tagata talimalo i le lotoifale e alu i le filifili OUTPUT - POSTROUTING.

Malamalama i filifiliga faiga faʻavae fesoʻotaʻiga ma Calico

Calico e tuʻuina atu filifiliga faʻavae e mafai ai ona e faʻaogaina faiga faʻavae i luga o filifili uma. Faatasi ai ma lena mea i le mafaufau, seʻi o tatou vaʻavaʻai i filifiliga faʻatulagaina faiga faʻavae eseese o loʻo maua i Calico. O numera i le lisi o filifiliga o loʻo i lalo e fetaui ma numera i le ata o loʻo i luga.

  1. Faiga fa'avae o galuega (pod).
  2. Faiga fa'ai'uga fa'apitoa
  3. ApplyOnForward filifiliga
  4. Faiga Fa'avae PreDNAT
  5. Faiga Fa'avae e le'i Mataituina

Tatou amata ile va'ava'ai ile fa'aogaina o faiga fa'avae ile fa'ai'uga o galuega (Kubernetes pods po'o OpenStack VMs), ona va'ai lea ile faiga fa'avae mo fa'ai'uga talimalo.

Galuega Fa'ai'uga

Faiga Fa'avae Tau Galuega (1)

Ole filifiliga lea e puipui ai au kubernetes pods. E lagolagoina e Calico le galulue faatasi ma Kubernetes NetworkPolicy, ae e maua ai foi faiga faavae faaopoopo - Calico NetworkPolicy ma GlobalNetworkPolicy. E faia e Calico se filifili mo pod ta'itasi (galue) ma matau i filifili INPUT ma OUTPUT mo le mamafa o galuega i le laulau faamama o le filifili FORWARD.

Host Endpoints

Faiga Fa'atonu Fa'atonu (2)

I le faaopoopo atu i le CNI (container network interface), o tulafono a Calico e maua ai le malosi e puipuia ai le tagata talimalo lava ia. I Calico, e mafai ona e fatuina se faʻaiʻuga talimalo e ala i le faʻamaonia o se tuʻufaʻatasiga o le faʻafeiloaʻiga talimalo ma, pe a manaʻomia, numera o le taulaga. O le fa'amalosia o faiga fa'avae mo lenei fa'alapotopotoga e maua ile fa'aogaina ole laulau fa'amama ile filifili INPUT ma OUTPUT. E pei ona mafai ona e vaʻai i le ata, (2) latou faʻaoga i faiga faʻapitonuʻu i luga o le node/host. O lona uiga, afai e te faia se faiga faʻavae e faʻatatau i le faʻaiʻuga o le talimalo, o le a le afaina ai feoaiga e alu i / mai au pods. Ae o loʻo tuʻuina atu se tasi faʻaoga / syntax mo le polokaina o fefaʻatauaiga mo lau talimalo ma pods e faʻaaoga ai faiga faʻavae Calico. O lenei mea e matua faafaigofieina ai le faagasologa o le puleaina o faiga faavae mo se fesoʻotaʻiga eseese. O le fa'atulagaina o faiga fa'avae fa'ai'uga e fa'aleleia atili ai le puipuiga malu o se isi fa'aoga taua.

ApplyOnForward Policy (3)

O loʻo avanoa le ApplyOnForward i le Calico global network policy e faʻataga ai faiga faʻavae e faʻaoga i auala uma e ui atu i le nofoaga faʻaiʻuga, e aofia ai fefaʻatauaiga o le a tuʻuina atu e le talimalo. E aofia ai felauaiga e lafo atu i le pod i le lotoifale po'o se isi mea i luga o feso'otaiga. E manaʻomia e Calico lenei faʻatulagaina e mafai ai mo faiga faʻavae e faʻaaoga ai le PreDNAT ma le le siakiina, vaʻai i vaega nei. E le gata i lea, ApplyOnForward e mafai ona faʻaogaina e mataʻituina ai fefaʻatauaʻiga o fefaʻatauaiga i mataupu e faʻaogaina ai se telefoni feaveaʻi poʻo se polokalama NAT.

Manatua afai e te manaʻomia le faʻaogaina o le faiga faʻavae fesoʻotaʻiga tutusa i faiga faʻafeiloaʻi ma pods, ona e le manaʻomia lea ona faʻaogaina le ApplyOnForward filifiliga. Pau lava le mea e tatau ona e faia o le fatuina lea o se faʻailoga mo le mea e manaʻomia ile hostendpoint ma galuega faʻaiʻuga (pod). E lava le atamai o Calico e faʻamalosia faiga faʻavae e faʻavae i luga o igoa, e tusa lava po o le a le ituaiga pito (hostendpoint poʻo le galuega).

PreDNAT Policy (4)

I totonu o Kubernetes, e mafai ona fa'aalia pitonu'u o le au'aunaga i fafo e fa'aaoga ai le NodePorts filifiliga po'o, pe a fa'aoga (pe a fa'aaoga Calico), e ala i le fa'asalalauina i latou i le fa'aogaina o le Cluster IPs po'o le External IPs options. Kube-proxy faapaleni felauaiga o loʻo oʻo mai o loʻo fusifusia i se tautua i pusa o le auaunaga tutusa e faʻaaoga ai le DNAT. Tuuina atu lenei mea, faʻafefea ona e faʻamalosia faiga faʻavae mo fefaʻatauaiga e oʻo mai i NodePorts? Ina ia faʻamautinoa o loʻo faʻaogaina nei faiga faʻavae aʻo leʻi faʻatautaia e le DNAT (o se faʻafanua i le va o le talimalo: taulaga ma le auaunaga tutusa), e tuʻuina atu e Calico se parakalafa mo le GlobalNetworkPolicy e taʻua o le "preDNAT: true".

A fa'agaoioia muamua le DNA, o nei faiga fa'avae e fa'atino i le (4) i le ata - i le laulau mangle o le filifili PREROUTING - i luma tonu o le DNAT. Ole fa'asologa masani o faiga fa'avae e le o mulimulita'ia iinei, talu ai o le fa'aogaina o nei faiga fa'avae e tupu i se taimi muamua atu i le auala e fa'agasolo ai feoaiga. Ae ui i lea, o faiga faʻavae preDNAT e faʻaaloalo i le faʻatonuga o le faʻaoga i totonu oi latou lava.

Pe a fatuina faiga faʻavae ma le DNAT muamua, e taua le faʻaeteete i le auala e te manaʻo e faʻatautaia ma faʻatagaina le toʻatele e teena. Ta'avale ua fa'ailogaina 'fa'ataga' i le tulafono a'o le'i faia le DNA o le a le toe siakiina e le hostendpoint policy, ae o fe'avea'i e le manuia le fa'atulafonoina a'o le'i faia le DNA o le a fa'aauau pea i filifili o totoe.
Ua fa'atulafonoina e Calico le fa'atagaina o le filifiliga applyOnForward pe a fa'aaoga le preDNAT, talu ai e le'i filifilia le nofoaga o le felauaiga. E mafai ona fa'atonu le ta'avale i le fa'agasologa o le talimalo, pe mafai fo'i ona tu'u atu i se pod po'o se isi node.

Faiga Fa'atonu (5)

O feso'ota'iga ma fa'aoga e mafai ona i ai se eseesega tele i amioga. I nisi tulaga ogaoga, o talosaga e mafai ona maua ai le tele o feso'ota'iga pupuu. E mafai ona mafua ai le conntrack (o se vaega autu o le faaputuga Linux networking) e le toe manatua. I le masani ai, e faʻatautaia nei ituaiga o talosaga i luga o Linux, e tatau ona e faʻapipiʻi lima pe faʻamalo le fesoʻotaʻiga, pe tusi tulafono iptables e faʻafefe ai le fesoʻotaʻiga. O faiga fa'avae e le'i va'aia i Calico o se filifiliga sili atu ona faigofie ma sili atu ona lelei pe afai e te mana'o e fa'agasolo feso'ota'iga i se taimi vave e mafai ai. Mo se faʻataʻitaʻiga, afai e te faʻaaogaina tele memcache po'o se fua fa'aopoopo o le puipuiga mai DDOS.

Faitau lenei tesi meli (po o la tatou faaliliuga) mo nisi faʻamatalaga, e aofia ai suʻega faʻatinoga e faʻaaoga ai faiga faʻavae e leʻi siakiina.

A e setiina le filifiliga "doNotTrack: true" i le Calico globalNetworkPolicy, e avea ma faiga faʻavae **le faʻamaonia** ma faʻaoga vave i le Linux packet processing pipeline. A va'ai i le ata o lo'o i luga, o lo'o fa'aogaina faiga fa'avae e le'i va'aia i filifili PREROUTING ma OUTPUT i le laulau mata'utia a'o le'i amataina le sailiga o feso'ota'iga (conntrack). A fa'atagaina se pepa e le faiga fa'avae e le'i va'aia, e fa'ailogaina e fa'amalo le su'esu'eina o feso'ota'iga mo lena pepa. O lona uiga:

  • O le faiga fa'avae e le'i mata'ituina o lo'o fa'aaogaina i luga ole fa'avae ta'itasi. E leai se manatu o le feso'ota'iga (po'o le tafe). O le leai o se feso'ota'iga e iai ni a'afiaga taua:
  • Afai e te mana'o e fa'ataga uma talosaga ma tali fe'avea'i, e te mana'omia se tulafono mo totonu ma fafo (talu ai e masani ona fa'aoga e Calico le feso'ota'iga e fa'ailoga ai felauaiga tali pe a fa'atagaina).
  • Ole faiga fa'avae e le'i va'aia e le aoga mo galuega a Kubernetes (pods), aua i lenei tulaga e leai se auala e siaki ai le feso'ota'iga i fafo mai le pod.
  • E le sa'o lelei le NAT i pepa e le'i va'aia (talu ai o lo'o teuina e le fatu le fa'afanua o le NAT ile conntrack).
  • Pe a pasia le tulafono "fa'atagaina uma" i le faiga fa'avae e le'i siakiina, o le a fa'ailoga uma pepa e le'i siakiina. E toetoe lava o taimi uma e le o le mea e te manaʻo ai, o lea e taua ai le matua filifilia e uiga i pepa e faʻatagaina e faiga faʻavae e leʻi vaʻaia (ma faʻatagaina le tele o fefaʻatauaiga e alu i faiga faʻavae masani).
  • O faiga fa'avae e le'i va'aia o lo'o fa'aaogaina i le amataga o le paipa e fa'agaoi ai pepa. E taua tele le malamalama i lenei mea pe a faia faiga faʻavae Calico. E mafai ona i ai sau faiga fa'avae fa'atasi ma le fa'atonu:1 ma se faiga fa'avae e le'i va'aia ma le fa'atonuga:1000. E le afaina. O le Untracked policy o le a fa'aaogaina a'o le'i faia le policy mo le pod. O faiga fa'avae e le'i mata'ituina e fa'aaloalo i le fa'atonuga o le fa'atinoina na'o latou lava.

Ona o se tasi o faʻamoemoega o le doNotTrack policy o le faʻamalosia vave o le faiga faʻavae i le Linux packet processing pipeline, ua faʻatulafonoina e Calico le faʻamaonia o le appOnForward filifiliga pe a faʻaaoga le doNotTrack. Fa'atatau i le ata o le fa'agaioiina o pepa, ia maitauina e fa'aoga le faiga fa'avae e le'i tulituliloaina(5) a'o le'i faia ni fa'ai'uga ta'avale. E mafai ona fa'atonu le ta'avale i le fa'agasologa o le talimalo, pe mafai fo'i ona tu'u atu i se pod po'o se isi node.

O taunuʻuga

Na matou vaʻavaʻai i filifiliga eseese o faiga faʻavae (Host endpoint, ApplyOnForward, preDNAT, ma Untracked) i Calico ma pe faʻapefea ona faʻaogaina i luga o le ala o le gaosiga o pusa. O le malamalama i le auala latou te galulue ai e fesoasoani i le atinaʻeina o faiga faʻavae aoga ma saogalemu. Faatasi ai ma Calico e mafai ona e faʻaogaina se faiga faʻavae fesoʻotaʻiga i le lalolagi atoa e faʻatatau i se faʻailoga (se vaega o nodes ma pods) ma faʻaoga faiga faʻavae ma faʻasologa eseese. Ole mea lea e mafai ai e tagata tomai faʻapitoa mo le saogalemu ma fesoʻotaʻiga ona puipuia lelei "mea uma" (ituaiga pito) i le taimi e tasi e faʻaaoga ai se gagana faʻavae e tasi ma faiga faʻavae Calico.

Fa'afetai: Ou te fia fa'afetai Sean Crampton и Alexa Pollitta mo a latou iloiloga ma faʻamatalaga taua.

puna: www.habr.com

Faaopoopo i ai se faamatalaga