Piv txwv li, feem ntau ntawm cov plugins no yog Flannel - muab tag nrho kev sib txuas ntawm lub network ntawm txhua pawg ntawm pawg los ntawm kev txhim kho txuas hniav ntawm txhua qhov ntawm, muab lub subnet rau nws. Txawm li cas los xij, kev ua kom tiav thiab tsis muaj kev tswj hwm tsis yog ib txwm muaj txiaj ntsig. Txhawm rau muab qee yam kev sib cais tsawg kawg nkaus hauv pawg, nws yog qhov yuav tsum tau cuam tshuam rau hauv kev teeb tsa ntawm firewall. Hauv cov ntaub ntawv dav dav, nws tau muab tso rau hauv kev tswj hwm ntawm tib CNI, uas yog vim li cas txhua qhov kev cuam tshuam thib peb hauv iptables tuaj yeem txhais tsis raug lossis tsis quav ntsej tag nrho.
Thiab "tawm ntawm lub thawv" rau kev teeb tsa txoj cai tswjfwm hauv lub network hauv Kubernetes pawg tau muab NetworkPolicy API. Cov peev txheej no, muab faib rau cov npe xaiv, tuaj yeem muaj cov cai los sib txawv kev nkag los ntawm ib daim ntawv thov mus rau lwm qhov. Nws kuj tso cai rau koj los teeb tsa kev nkag mus tau ntawm cov pods tshwj xeeb, ib puag ncig (namespaces) lossis thaiv ntawm IP chaw nyob:
Qhov tseeb, kev nom kev tswv tau muab faib ua 2 pawg no raws li kev coj ua ntawm kev txav mus los.
Tus cwj pwm xav tau tom ntej yog tus xaiv; tus uas txoj cai siv. Qhov no tuaj yeem yog lub plhaub (los yog ib pawg ntawm cov pods) lossis ib puag ncig (piv txwv li lub npe chaw). Cov ntsiab lus tseem ceeb: ob hom ntawm cov khoom no yuav tsum muaj daim ntawv lo (daim ntawv lo hauv Kubernetes terminology) - cov no yog cov uas cov nom tswv ua haujlwm nrog.
Ntxiv nrog rau tus naj npawb ntawm cov neeg xaiv, sib sau ua ke los ntawm qee hom ntawv sau, nws tuaj yeem sau cov cai xws li "Tso / tsis lees paub txhua yam / txhua tus" hauv ntau qhov sib txawv. Rau lub hom phiaj no, kev tsim kho ntawm daim ntawv yog siv:
lub hom phiaj lossis cov kev cai tuaj yeem yog qhov chaw nres nkoj, ntau qhov chaw nres nkoj, cov txheej txheem, HTTP lossis ICMP cov yam ntxwv, IP lossis subnet (4th lossis 6th tiam), txhua tus xaiv (nodes, hosts, ib puag ncig);
Tsis tas li ntawd, koj tuaj yeem tswj hwm txoj kev khiav tsheb los ntawm kev siv DNAT teeb tsa thiab cov cai xa mus rau kev thauj mus los.
Thawj qhov kev cog lus ntawm GitHub hauv Calico repository hnub rov qab mus rau Lub Xya Hli 2016, thiab ib xyoos tom qab qhov project tau ua txoj haujlwm tseem ceeb hauv kev teeb tsa Kubernetes network txuas - qhov no yog pov thawj, piv txwv li, los ntawm cov txiaj ntsig kev soj ntsuam, ua los ntawm The New Stack:
Ntau qhov kev daws teeb meem loj nrog K8s, xws li Amazon EKS, Azure UAS, Google GKE thiab lwm tus tau pib xav kom nws siv.
Raws li rau kev ua tau zoo, txhua yam zoo ntawm no. Hauv kev sim lawv cov khoom, pab pawg tsim kho Calico tau qhia txog kev ua haujlwm astronomical, khiav ntau dua 50000 ntim ntawm 500 lub cev nrog tus nqi tsim ntawm 20 ntim ib ob. Tsis muaj teeb meem raug txheeb xyuas nrog kev ntsuas. Cov txiaj ntsig zoo li no tau tshaj tawm twb ntawm kev tshaj tawm ntawm thawj version. Cov kev tshawb fawb ywj pheej tsom rau kev xa tawm thiab kev siv peev txheej kuj lees paub Calico qhov kev ua tau zoo yuav luag zoo li Flannel's. Piv txwv:
Qhov project tab tom txhim kho sai heev, nws txhawb kev ua haujlwm hauv cov kev daws teeb meem nrov uas tswj hwm K8s, OpenShift, OpenStack, nws muaj peev xwm siv Calico thaum siv cov pawg siv. ncaws, muaj kev xa mus rau kev tsim kho ntawm Service Mesh networks (ntawm no yog ib qho piv txwv siv ua ke nrog Istio).
Xyaum nrog Calico
Hauv cov ntaub ntawv dav dav ntawm kev siv vanilla Kubernetes, txhim kho CNI nqis los siv cov ntaub ntawv calico.yaml, downloaded los ntawm lub official lub website, s pab kubectl apply -f.
Raws li txoj cai, tam sim no version ntawm lub plugin yog sib xws nrog qhov tseeb 2-3 versions ntawm Kubernetes: kev ua haujlwm hauv cov ntawv qub tsis raug kuaj thiab tsis lav. Raws li cov neeg tsim tawm, Calico khiav ntawm Linux kernels saum toj 3.10 khiav CentOS 7, Ubuntu 16 lossis Debian 8, nyob rau sab saum toj ntawm iptables lossis IPVS.
Kev cais tawm hauv ib puag ncig
Rau kev nkag siab dav dav, cia peb saib cov ntaub ntawv yooj yim kom nkag siab tias cov kev cai network hauv Calico cov cim txawv ntawm cov qauv thiab yuav ua li cas txoj hauv kev los tsim cov cai yooj yim rau lawv nyeem tau yooj yim thiab teeb tsa yooj yim:
Muaj 2 lub vev xaib thov xa mus rau hauv pawg: hauv Node.js thiab PHP, ib qho uas siv Redis. Txhawm rau thaiv kev nkag mus rau Redis los ntawm PHP, thaum tswj kev sib txuas nrog Node.js, tsuas yog siv txoj cai hauv qab no:
Qhov tseem ceeb peb tau tso cai nkag mus rau Redis chaw nres nkoj los ntawm Node.js. Thiab lawv meej meej tsis txwv lwm yam. Thaum NetworkPolicy tshwm sim, txhua tus neeg xaiv tau hais hauv nws pib raug cais tawm, tshwj tsis yog tias tau teev tseg. Txawm li cas los xij, txoj cai cais tsis siv rau lwm yam khoom uas tsis suav nrog tus xaiv.
Piv txwv siv apiVersion Kubernetes tawm ntawm lub thawv, tab sis tsis muaj dab tsi tiv thaiv koj los ntawm kev siv nws Cov peev txheej ntawm tib lub npe los ntawm kev xa khoom Calico. Cov syntax muaj cov ncauj lus kom ntxaws, yog li koj yuav tsum rov sau txoj cai rau cov ntaub ntawv saum toj no hauv daim ntawv hauv qab no:
Cov kev tsim kho uas tau hais los saum toj no rau kev tso cai lossis tsis lees paub tag nrho cov tsheb khiav los ntawm NetworkPolicy API li niaj zaus muaj kev tsim nrog cov kab lus uas nyuaj rau kev nkag siab thiab nco ntsoov. Nyob rau hauv cov ntaub ntawv ntawm Calico, hloov lub logic ntawm ib tug firewall txoj cai rau qhov opposite, tsuas yog hloov action: Allow rau action: Deny.
Kev cais los ntawm ib puag ncig
Tam sim no xav txog qhov xwm txheej uas daim ntawv thov tsim cov kev ntsuas kev lag luam rau kev sau hauv Prometheus thiab kev tshuaj xyuas ntxiv siv Grafana. Lub upload tej zaum yuav muaj cov ntaub ntawv rhiab, uas yog rov tuaj yeem pom tau los ntawm lub neej ntawd. Cia peb nkaum cov ntaub ntawv no los ntawm prying ob lub qhov muag:
Prometheus, raws li txoj cai, muab tso rau hauv ib puag ncig kev pabcuam cais - hauv qhov piv txwv nws yuav yog lub npe zoo li no:
teb metadata.labels qhov no ua rau tsis muaj xwm txheej. Raws li tau hais los saum no, namespaceSelector (zoo li podSelector) ua haujlwm nrog cov ntawv sau. Yog li ntawd, txhawm rau tso cai rau kev ntsuas los ntawm txhua lub pods ntawm ib qho chaw nres nkoj tshwj xeeb, koj yuav tsum tau ntxiv qee yam ntawm daim ntawv lo (lossis nqa los ntawm cov uas twb muaj lawm), thiab tom qab ntawd siv cov kev teeb tsa xws li:
Qhov chaw nres nkoj hauv kev teeb tsa yog tus qauv, uas ua rau qee qhov nuances ntawm tus txheej txheem ntawm kev teeb tsa daim ntawv thov thiab xa mus rau Kubernetes pawg. Piv txwv li, nyob rau tib lub AWS LoadBalancer rau UDP tau tshwm sim nyob rau thaum xaus ntawm lub xyoo tas los nyob rau hauv ib tug txwv daim ntawv teev cov cheeb tsam, thiab NodePort yuav siv tsis tau vim nws xa mus rau tag nrho cov pawg nodes thiab nws yog tsis yooj yim sua rau scale tus naj npawb ntawm cov neeg rau zaub mov piv txwv rau txhaum cai lub hom phiaj. Ntxiv rau, koj yuav tau hloov lub neej ntawd ntau ntawm cov chaw nres nkoj ...
Raws li kev tshawb nrhiav los ntawm cov kev daws teeb meem, cov hauv qab no tau xaiv:
Pods nrog VPN tau teem caij rau ib lub hauv hostNetwork, uas yog, rau qhov tseeb IP.
Cov kev pabcuam raug muab tso tawm sab nraud los ntawm ClusterIP. Ib qho chaw nres nkoj tau nruab rau ntawm lub cev, uas tuaj yeem nkag tau los ntawm sab nraud nrog kev tshwj xeeb me me (qhov xwm txheej muaj qhov chaw nyob IP tiag).
Kev txiav txim siab ntawm qhov twg lub pod sawv yog dhau ntawm peb zaj dab neeg. Kuv tsuas yog hais tias koj tuaj yeem nruj "ntsiag" cov kev pabcuam rau ntawm ib qho lossis sau cov kev pabcuam me me uas yuav saib xyuas tus IP chaw nyob tam sim no ntawm VPN kev pabcuam thiab kho cov ntaub ntawv DNS sau npe nrog cov neeg siv khoom - leej twg muaj kev xav txaus.
Los ntawm txoj kev xav, peb tuaj yeem txheeb xyuas tus neeg siv VPN los ntawm nws qhov chaw nyob IP uas muab los ntawm VPN server. Hauv qab no yog ib qho piv txwv tseem ceeb ntawm kev txwv xws li tus neeg siv khoom nkag mus rau cov kev pabcuam, piv txwv li Redis hais saum toj no: