ProHoster > Blog > Pulega > Calico mo networking i Kubernetes: folasaga ma sina poto masani
Calico mo networking i Kubernetes: folasaga ma sina poto masani
O le faʻamoemoe o le tusiga o le faʻalauiloaina lea o le tagata faitau i faʻavae o fesoʻotaʻiga ma le puleaina o faiga faʻavae fesoʻotaʻiga i Kubernetes, faʻapea foʻi ma le vaega lona tolu o le Calico plugin lea e faʻalauteleina ai gafatia masani. I luga o le ala, o le faigofie o le faʻatulagaina ma nisi o foliga o le a faʻaalia i le faʻaaogaina o faʻataʻitaʻiga moni mai le matou faʻaogaina.
O se fa'amatalaga vave ile meafaigaluega feso'otaiga a Kubernetes
I le anotusi o lenei tusiga, e taua le maitauina o K8s lava ia e le nafa ma fesoʻotaʻiga fesoʻotaʻiga i le va o pusa ma nodes: mo lenei, eseese. CNI plugins (Container Networking Interface). E sili atu e uiga i lenei manatu tatou sa latou fai mai foi ia te au.
Mo se faʻataʻitaʻiga, o le sili ona taatele o nei plugins o Fululanu - e maua ai le feso'ota'iga atoa i le va o node fuifui uma e ala i le si'iina o alalaupapa i node ta'itasi, ma tu'uina atu i ai se subnet. Ae ui i lea, o le faʻaogaina atoatoa ma le le faʻatulafonoina e le o taimi uma e aoga. Ina ia tuʻuina atu se ituaiga o tuʻueseese laʻititi i totonu o le fuifui, e tatau ona faʻalavelave i le faʻatulagaina o le firewall. I le tulaga lautele, o loʻo tuʻuina i lalo o le pule a le CNI lava e tasi, o le mafuaʻaga lea e mafai ai ona faʻauiga sese pe le amanaʻiaina soʻo se isi vaega lona tolu i iptables.
Ma "mai le pusa" mo le faʻatulagaina o le pulega o faiga faʻavae fesoʻotaʻiga i totonu o le Kubernetes cluster ua saunia NetworkPolicy API. O lenei punaoa, tufatufaina i luga o igoa avanoa, e mafai ona i ai tulafono e vaʻaia ai avanoa mai le tasi talosaga i le isi. E fa'atagaina ai fo'i oe e fa'atulaga le avanoa i le va o pods fa'apitoa, si'osi'omaga (igoa igoa) po'o poloka o tuatusi IP:
E le o le fa'ata'ita'iga sili ona fa'amuamua lea o pepa aloaia atonu e tasi ma mo taimi uma e faʻavaivaia ai le manaʻo e malamalama i le faʻaogaina o faiga faʻavae fesoʻotaʻiga. Ae ui i lea, o le a matou taumafai pea e malamalama i mataupu faavae ma metotia o le faʻaogaina o feoaiga o feoaiga e faʻaaoga ai faiga faʻavae fesoʻotaʻiga...
E fetaui lelei e 2 ituaiga o feoaiga: ulufale i le pod (Ingress) ma alu ese mai ai (Egress).
O le mea moni, o faiga faʻapolokiki ua vaevaeina i nei vaega e 2 e faʻavae i luga o le itu o le gaioiga.
O le isi uiga mana'omia o se tagata filifilia; le tagata e faatatau i ai le tulafono. E mafai ona avea lenei mea o se pod (po'o se vaega o pods) po'o se si'osi'omaga (e pei o se igoa avanoa). O se fa'amatalaga taua: o ituaiga uma e lua o nei mea faitino e tatau ona iai se fa'ailoga (pepa i upu Kubernetes) - o mea ia e galulue ai le au faipule.
I le faaopoopo atu i se numera faatapulaa o tagata filifilia e tuufaatasia e se ituaiga o igoa, e mafai ona tusia tulafono e pei o le "Faataga / teena mea uma / tagata uma" i fesuiaiga eseese. Mo lenei faʻamoemoe, faʻaogaina o le fomu:
- i lenei faʻataʻitaʻiga, o pusa uma o loʻo i totonu o le siʻosiʻomaga ua poloka mai fefaʻatauaiga o loʻo sau. O le amio faafeagai e mafai ona ausia i le fausaga nei:
Toe foʻi i le filifiliga o se CNI plugin mo se fuifui, e taua le matauina e le'o fa'apipi'i feso'ota'iga uma e lagolagoina NetworkPolicy. Mo se faʻataʻitaʻiga, o le Flannel ua uma ona taʻua e le iloa pe faʻafefea ona faʻatulagaina faiga faʻavae fesoʻotaʻiga, lea e fai sa'o mai i le faleteuoloa aloaia. O loʻo taʻua foʻi se isi mea iina - o se poloketi Open Source calico, lea e matua faʻalauteleina ai le seti masani o Kubernetes API i tulaga o faiga faʻavae fesoʻotaʻiga.
O le iloaina o Calico: aʻoaʻoga
O le Calico plugin e mafai ona faʻaogaina i le tuʻufaʻatasia ma Flannel (subproject alāvai) pe tuto'atasi, e aofia uma ai feso'ota'iga feso'ota'iga ma agava'a fa'atonutonu avanoa.
O a avanoa e faʻaogaina ai le K8s "boxed" solution ma le API seti mai Calico e maua?
Ole mea lea ua fausia ile NetworkPolicy:
o faipule e faatapulaaina e le siosiomaga;
o faiga fa'avae e fa'aoga i pods ua fa'ailogaina;
e mafai ona fa'aoga tulafono i pods, siosiomaga po'o subnets;
O tulafono e mafai ona aofia ai fa'amaumauga, igoa po'o fa'ailoga fa'ailoga uafu.
O le auala lenei e faʻalauteleina ai e Calico nei galuega:
e mafai ona faʻaoga faiga faʻavae i soʻo se mea: pod, pusa, masini masini poʻo le atinaʻe;
tulafono e mafai ona aofia ai se gaioiga faʻapitoa (faʻasaina, faʻatagaga, logging);
o le sini poʻo le faʻapogai o tulafono e mafai ona avea ma taulaga, se tele o ports, protocols, HTTP poʻo ICMP uiga, IP poʻo subnet (4th poʻo 6th tupulaga), soʻo se tagata filifilia (nodes, hosts, environments);
E le gata i lea, e mafai ona e fa'atonutonuina le felauaiga o fefa'ataua'iga e fa'aoga ai le DNAT ma faiga fa'avae mo felauaiga.
O le mea muamua na faia i GitHub i le Calico repository aso i tua ia Iulai 2016, ma i le tausaga mulimuli ane na avea ai le poloketi ma se tulaga taʻutaʻua i le faʻatulagaina o fesoʻotaʻiga fesoʻotaʻiga Kubernetes - o loʻo faʻamaonia, mo se faʻataʻitaʻiga, e ala i suʻesuʻega, taitaia e le New Stack:
Le tele o fofo fa'afoe tetele ma K8s, pei ole Amazon EKS, Azure AKS, Google GKE ma ua amata ona fautuaina e isi mo le faaaogaina.
Ae mo le faʻatinoga, e lelei mea uma iinei. I le su'eina o a latou oloa, na fa'aalia ai e le vaega o le atina'e o le Calico le fa'atinoga o le vateatea, fa'atautaia le silia ma le 50000 koneteina i luga o le 500 fa'aletino fa'atasi ma le fua fa'atatau o le 20 koneteina i le sekone. E leai ni fa'afitauli na fa'ailoa ile fa'afuaina. O i'uga faapena na fofogaina ua uma i le faʻaaliga o le lomiga muamua. O su'esu'ega tuto'atasi o lo'o taula'i i le fa'aaogāina ma le fa'aaogāina o puna'oa ua fa'amaonia ai fo'i le fa'atinoga a Calico e toeitiiti lava lelei ma Flannel's. Mo se faʻataʻitaʻiga:
O loʻo faʻatupulaia vave le poloketi, e lagolagoina le galuega i fofo lauiloa e pulea K8s, OpenShift, OpenStack, e mafai ona faʻaaoga Calico pe a faʻapipiʻi se fuifui faʻaaoga kops, o loʻo i ai faʻamatalaga i le fausiaina o fesoʻotaʻiga Mesh Mesh (o se faataitaiga lenei fa'aoga fa'atasi ma Istio).
Faataitai ma Calico
I le tulaga lautele o le faʻaaogaina o vanilla Kubernetes, faʻapipiʻi CNI e sau i lalo i le faʻaaogaina o le faila calico.yaml, sii mai le upegatafa'ilagi aloaia, e ala i le faʻaaogaina kubectl apply -f.
I le avea ai o se tulafono, o le lomiga o loʻo i ai nei o le plugin e fetaui ma le 2-3 lomiga fou o Kubernetes: faʻaogaina i lomiga tuai e le faʻataʻitaʻiina ma e le faʻamaonia. E tusa ai ma le au atinaʻe, o Calico o loʻo tamoe i luga o Linux kernels i luga aʻe o le 3.10 faʻatautaia CentOS 7, Ubuntu 16 poʻo Debian 8, i luga o iptables poʻo IPVS.
Faaesea i totonu o le siosiomaga
Mo se malamalamaaga lautele, seʻi o tatou vaʻavaʻai i se mataupu faigofie e malamalama ai pe faʻapefea ona ese faiga faʻavae fesoʻotaʻiga i le Calico notation mai tulaga masani ma pe faʻafefea ona faʻafaigofie e le faiga o tulafono a latou faitau ma fetuunaiga fetuutuunai:
E 2 'upega tafaʻilagi faʻapipiʻiina i totonu o le fuifui: i Node.js ma PHP, o se tasi o loʻo faʻaaogaina Redis. Ina ia poloka le avanoa i Redis mai PHP, aʻo tumau le fesoʻotaʻiga ma Node.js, naʻo le faʻaogaina o le faiga faʻavae:
O le mea moni na matou faʻatagaina le ulufale mai i le taulaga Redis mai Node.js. Ma e manino lava latou te leʻi faʻasaina se isi mea. O le taimi lava e aliali mai ai NetworkPolicy, o tagata filifilia uma o loʻo taʻua i totonu e amata ona vavae ese, seʻi vagana ua faʻamaonia. Ae ui i lea, o tulafono faʻaesea e le faʻaogaina i isi mea e le o ufiufi e le tagata filifilia.
E faʻaaogaina e le faʻataʻitaʻiga apiVersion Kubernetes mai le pusa, ae leai se mea e taofia oe mai le faʻaaogaina punaoa o le igoa tutusa mai le Calico delivery. O le syntax o loʻo i ai e sili atu faʻamatalaga, o lea e te manaʻomia ai le toe tusia o le tulafono mo le mataupu o loʻo i luga i le pepa nei:
O faufale o loʻo taʻua i luga mo le faʻatagaina poʻo le teenaina o fefaʻatauaiga uma e ala i le NetworkPolicy API masani o loʻo i ai faʻamaufaʻailoga ma puipui e faigata ona malamalama ma manatua. I le tulaga o Calico, ia suia le manatu o se tulafono afi i le faafeagai, na o le suia action: Allow i action: Deny.
Tu'uesea e le si'osi'omaga
Va'ai nei i se tulaga o lo'o fa'atupuina ai e se talosaga ni fua fa'atau pisinisi mo le aoina i le Prometheus ma fa'amatalaga atili e fa'aaoga ai le Grafana. O le la'u i luga e ono iai ni fa'amatalaga ma'ale'ale, lea e toe va'aia fa'alaua'itele ona o le fa'aletonu. Sei o tatou nanaina nei faʻamatalaga mai le prying eyes:
Prometheus, e pei o se tulafono, o loʻo tuʻuina i totonu o se siʻosiʻomaga eseese auaunaga - i le faʻataʻitaʻiga o le a avea ma igoa avanoa e pei o lenei:
laufanua metadata.labels na foliga mai e le o se faalavelave. E pei ona taʻua i luga, namespaceSelector (faa;pei foi ona podSelector) fa'agaoioi ma fa'ailoga. O le mea lea, ina ia fa'ataga fua fa'atatau e ave'ese mai pods uma i luga o se taulaga fa'apitoa, e tatau ona e fa'aopoopoina se ituaiga fa'ailoga (pe ave mai mea o lo'o iai), ona fa'aoga lea o se fa'atulagaga e pei o:
I se tulaga lautele, e ala i le faʻaopoopoina o nei ituaiga o faiga faʻavae mo manaʻoga faʻapitoa, e mafai ona e puipuia mai le faʻalavelave faʻafuaseʻi poʻo le faʻalavelave faʻafuaseʻi i le faʻaogaina o talosaga i le fuifui.
O le faiga sili ona lelei, e tusa ai ma le na faia o Calico, o le "Poka mea uma ma tatala manino mea e te manaʻomia", faʻamaumauga i totonu. pepa aloaia (o isi e mulimuli i se auala tutusa - aemaise lava, i ua uma ona ta'ua tala).
Fa'aaogā Mea Fa'aopoopo Calico
Sei ou faamanatu atu ia te oe e ala i le seti lautele o Calico API e mafai ona e faatonutonuina le maua o nodes, ae le gata i pods. I le faʻataʻitaʻiga o loʻo mulimuli mai faʻaaogaina GlobalNetworkPolicy ua tapunia le mafai ona pasi talosaga ICMP i le fuifui (mo se faʻataʻitaʻiga, pings mai se pod i se node, va o pods, poʻo mai se node i se IP pod):
I le tulaga o loʻo taʻua i luga, e mafai lava ona "aapa atu" le tasi i le isi e ala i le ICMP. Ma o lenei mataupu e foia i auala GlobalNetworkPolicy, fa'aoga i se fa'alapotopotoga HostEndpoint:
Mulimuli ane, o le a ou tuʻuina atu se faʻataʻitaʻiga moni o le faʻaaogaina o galuega a Calico mo le tulaga o fesoʻotaʻiga vavalalata, pe a le lava se seti masani o faiga faʻavae. Ina ia maua le talosaga i luga o le upega tafaʻilagi, e faʻaogaina e tagata faʻatau se alalaupapa VPN, ma o lenei avanoa e pulea lelei ma faʻatapulaʻa i se lisi patino o auaunaga e faʻatagaina mo le faʻaaogaina:
E fa'afeso'ota'i tagata fa'atau i le VPN e ala i le UDP port 1194 ma, pe a fa'afeso'ota'i, maua auala i le vaega pito i lalo o pusa ma auaunaga. O subnets uma e tuleia ina ia aua nei ma'imau auaunaga a'o toe amata ma suiga o tuatusi.
O le taulaga i le faʻatulagaina o se tulaga masani, lea e tuʻuina atu ai ni nuances i luga o le faagasologa o le faʻatulagaina o le talosaga ma tuʻuina atu i le Kubernetes cluster. Mo se faʻataʻitaʻiga, i le AWS LoadBalancer mo UDP na faʻaalia moni lava i le faaiuga o le tausaga talu ai i se lisi faʻatapulaʻaina o itulagi, ma e le mafai ona faʻaaogaina NodePort ona o lona tuʻuina atu i luga o nodes fuifui uma ma e le mafai ona fuaina le numera o faʻataʻitaʻiga mo server. faamoemoega faapalepale sese. E le gata i lea, e tatau ona e suia le tulaga faaletonu o ports...
O se taunuuga o le suʻesuʻeina e ala i fofo talafeagai, o mea nei na filifilia:
Pods ma VPN ua fa'atulagaina i le node i totonu hostNetwork, o lona uiga, i le IP moni.
O le auaunaga e lafoina i fafo e ala i ClusterIP. O se uafu ua faʻapipiʻiina faaletino i luga o le node, lea e mafai ona maua mai fafo ma ni faʻaagaga laiti (tulaga o se tuatusi IP moni).
Fuafuaina o le node o loʻo i ai le rose rose e sili atu i le lautele o la tatou tala. O le a na ona ou fai atu e mafai ona e "fao" le tautua i se node pe tusi se laʻititi laʻititi auaunaga o le a mataʻituina le tuatusi IP o loʻo i ai nei o le VPN auaunaga ma faʻasaʻo faamaumauga DNS ua resitalaina ma tagata faʻatau - poʻo ai lava e lava mafaufauga.
Mai se va'aiga auala, e mafai ona tatou iloa tulaga ese se tagata VPN e ala i lona tuatusi IP na tuʻuina atu e le VPN server. Lalo o se faʻataʻitaʻiga muamua o le faʻatapulaʻaina o sea tagata o tausia le avanoa i auaunaga, o loʻo faʻaalia i luga o le Redis ua taʻua i luga:
O iinei, o le faʻafesoʻotaʻi i le taulaga 6379 e matua faʻasaina, ae i le taimi lava e tasi o loʻo faʻasaoina le faʻaogaina o le DNS, o le gaioiga e masani ona afaina pe a tusia tulafono. Aua, e pei ona taʻua muamua, pe a faʻaalia se tagata filifilia, o le faʻaaogaina o le faʻatagaina o faiga faʻavae e faʻaaogaina sei vagana ua faʻamaonia.
O taunuʻuga
O le mea lea, i le fa'aaogaina o le API maualuga a Calico, e mafai ona e fetu'una'i fetuutuuna'i ma suiga malosi le ta'avale i totonu ma fa'ata'amilo i le fuifui. I se tulaga lautele, o lona faʻaogaina e mafai ona pei o le fanaina o manu iti ma se fana, ma o le faʻaaogaina o se fesoʻotaʻiga L3 ma BGP ma IP-IP tunnels e foliga mataʻutia i se faʻapipiʻi faigofie Kubernetes i luga o se fesoʻotaʻiga mafolafola... Ae peitaʻi, a leai o le meafaigaluega e foliga mai e aoga ma aoga. .
O le fa'amavaeina o se fuifui e fa'amalieina mana'oga saogalemu atonu e le mafai i taimi uma, ma o le mea lea e sau ai Calico (po'o se tali tutusa) e laveai. O faʻataʻitaʻiga o loʻo tuʻuina atu i lenei tusiga (faʻatasi ai ma suiga laiti) o loʻo faʻaaogaina i le tele o faʻapipiʻi a matou tagata faʻatau i le AWS.