Nkag siab Network Txoj Cai Tswj Kev Xaiv nrog Calico

Nkag siab Network Txoj Cai Tswj Kev Xaiv nrog Calico

Calico network plugin muab ntau yam kev cai hauv network nrog kev sib koom ua ke los tiv thaiv cov khoom siv kho vajtse, tshuab virtual thiab pods. Cov cai no tuaj yeem siv rau hauv lub npe chaw lossis yog cov cai thoob ntiaj teb uas siv rau host qhov kawg (los tiv thaiv daim ntawv thov khiav ncaj qha rau ntawm tus tswv tsev - tus tswv tsev tuaj yeem yog server lossis lub tshuab virtual) lossis workload endpoint (kom tiv thaiv daim ntawv thov khiav hauv ntim lossis tuav lub tshuab virtual). Calico cov cai tso cai rau koj siv kev ntsuas kev nyab xeeb ntawm ntau lub ntsiab lus hauv pob ntawv txoj kev siv cov kev xaiv xws li preDNAT, unracked, thiab applyOnForward. Kev nkag siab tias cov kev xaiv no ua haujlwm li cas tuaj yeem pab txhim kho kev nyab xeeb thiab kev ua haujlwm ntawm koj lub cev tag nrho. Kab lus no piav qhia txog cov ntsiab lus ntawm cov kev xaiv ntawm Calico txoj cai (preDNAT, unraracked thiab applyOnForward) siv rau tus tswv tsev kawg, nrog rau qhov tseem ceeb ntawm qhov tshwm sim hauv pob ntawv ua txoj hauv kev (iptabels chains).

Kab lus no xav tias koj muaj kev nkag siab yooj yim ntawm Kubernetes thiab Calico network txoj cai ua haujlwm li cas. Yog tias tsis yog, peb pom zoo kom sim nws yooj yim network txoj cai tutorial ΠΈ host kev tiv thaiv tutorial siv Calico ua ntej nyeem cov lus no. Peb kuj cia siab tias koj yuav muaj kev nkag siab yooj yim ntawm kev ua haujlwm iptables hauv linux.

Calico ntiaj teb no network txoj cai tso cai rau koj siv cov txheej txheem kev nkag mus los ntawm cov ntawv sau (rau cov pab pawg ntawm cov tswv thiab cov chaw ua haujlwm / pods). Qhov no muaj txiaj ntsig zoo yog tias koj siv cov tshuab sib txawv ua ke - cov tshuab virtual, lub kaw lus ncaj qha ntawm cov khoom siv, lossis kubernetes infrastructure. Tsis tas li ntawd, koj tuaj yeem tiv thaiv koj pawg (nodes) siv cov txheej txheem tshaj tawm thiab siv cov cai hauv lub network rau kev nkag mus (piv txwv li, los ntawm NodePorts lossis External IPs kev pabcuam).

Nyob rau theem tseem ceeb, thaum Calico txuas lub pod rau lub network (saib daim duab hauv qab), nws txuas nws mus rau tus tswv tsev siv virtual Ethernet interface (veth). Cov tsheb thauj mus los ntawm lub plhaub taum tuaj rau tus tswv tsev los ntawm qhov kev sib tham virtual no thiab ua tiav tib yam li yog tias nws los ntawm lub cev lub cev sib cuam tshuam. Los ntawm lub neej ntawd, Calico npe cov interfaces caliXXX. Txij li thaum cov tsheb khiav los ntawm lub virtual interface, nws mus los ntawm iptables zoo li lub plhaub taum ib plhaw mus. Yog li ntawd, thaum tsheb khiav mus rau / los ntawm ib lub pod, nws raug xa mus los ntawm tus tswv tsev qhov kev pom.

Ntawm Kubernetes node khiav Calico, koj tuaj yeem ua daim ntawv qhia virtual interface (veth) rau cov haujlwm ua haujlwm raws li hauv qab no. Hauv qhov piv txwv hauv qab no, koj tuaj yeem pom tias veth # 10 (calic1cbf1ca0f8) txuas nrog cnx-tus thawj tswj-* hauv calico-saib namespace.

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

Nkag siab Network Txoj Cai Tswj Kev Xaiv nrog Calico

Muab hais tias Calico tsim cov veth interface rau txhua qhov haujlwm, nws ua li cas tswj cov cai? Ua li no, Calico tsim hooks nyob rau hauv ntau yam chains ntawm pob ntawv ua txoj kev siv iptables.

Daim duab hauv qab no qhia tau hais tias cov chains koom nrog kev ntim khoom hauv iptables (lossis netfilter subsystem). Thaum ib pob ntawv tuaj txog los ntawm lub network interface, nws thawj zaug mus rau PREROUTING saw. Tom qab ntawd qhov kev txiav txim routing yog ua, thiab raws li qhov no, pob ntawv hla dhau los ntawm INPUT (qhia rau cov txheej txheem tswv tsev) lossis FORWARD (qhia mus rau lub pod lossis lwm qhov ntawm lub network). Los ntawm cov txheej txheem hauv zos, cov pob ntawv mus dhau ntawm OUTPUT thiab tom qab ntawd POSTROUTING cov saw hlau ua ntej xa mus rau cable.

Nco ntsoov tias lub pod kuj yog ib qho chaw sab nraud (txuas mus rau veth) hais txog kev ua iptables. Cia peb xaus:

  • Cov tsheb thauj mus los (nat, routed los yog mus / los ntawm lub plhaub taum) dhau los ntawm PREROUTING - FORWARD - POSTROUTING chains.
  • Kev khiav mus rau cov txheej txheem tswj hwm hauv zos dhau los ntawm PREROUTING - INPUT saw.
  • Kev khiav tsheb los ntawm cov txheej txheem tswj hwm hauv zos mus dhau ntawm OUTPUT - POSTROUTING saw.

Nkag siab Network Txoj Cai Tswj Kev Xaiv nrog Calico

Calico muab txoj cai xaiv uas tso cai rau koj siv txoj cai hla txhua txoj hlua. Nrog rau qhov ntawd hauv siab, cia peb saib cov kev xaiv sib txawv ntawm txoj cai muaj nyob hauv Calico. Cov lej hauv cov npe ntawm cov kev xaiv hauv qab no suav nrog cov lej hauv daim duab saum toj no.

  1. Workload endpoint (pod) txoj cai
  2. Host endpoint txoj cai
  3. ApplyOnForward kev xaiv
  4. Txoj Cai PreDNAT
  5. Untracked Txoj Cai

Cia peb pib los ntawm kev saib yuav ua li cas cov cai siv rau cov chaw ua haujlwm kawg (Kubernetes pods lossis OpenStack VMs), thiab tom qab ntawd saib cov kev xaiv txoj cai rau tus tswv tsev kawg.

Workload Endpoints

Workload Endpoint Txoj Cai (1)

Qhov no yog ib qho kev xaiv los tiv thaiv koj kubernetes pods. Calico txhawb kev ua haujlwm nrog Kubernetes NetworkPolicy, tab sis nws kuj muab cov cai ntxiv - Calico NetworkPolicy thiab GlobalNetworkPolicy. Calico tsim cov saw hlau rau txhua lub pod (workload) thiab hooks hauv INPUT thiab OUTPUT chains rau kev ua haujlwm rau lub rooj lim dej ntawm FORWARD saw.

Host Endpoints

Txoj Cai Tswjfwm Ntiag Tug Endpoint (2)

Ntxiv rau CNI (cov thawv ntim khoom sib txuas), Calico cov cai muab lub peev xwm los tiv thaiv tus tswv tsev nws tus kheej. Hauv Calico, koj tuaj yeem tsim tus tswv tsev kawg los ntawm kev qhia txog kev sib txuas ntawm tus tswv tsev interface thiab, yog tias tsim nyog, cov lej chaw nres nkoj. Txoj cai tswjfwm rau lub koomhaum no tau ua tiav siv lub rooj lim dej hauv INPUT thiab OUTPUT chains. Raws li koj tuaj yeem pom los ntawm daim duab, (2) lawv siv rau cov txheej txheem hauv zos ntawm node / host. Ntawd yog, yog tias koj tsim ib txoj cai uas siv rau qhov kawg ntawm tus tswv tsev, nws yuav tsis cuam tshuam rau kev mus rau / los ntawm koj cov pods. Tab sis nws muab ib qho interface / syntax rau thaiv kev khiav tsheb rau koj tus tswv tsev thiab pods siv Calico cov cai. Qhov no yooj yim heev rau cov txheej txheem ntawm kev tswj cov cai rau kev sib koom ua ke. Configuring host endpoint txoj cai los txhim kho pawg kev ruaj ntseg yog lwm qhov tseem ceeb siv rooj plaub.

Thov Txoj Cai OnForward (3)

Qhov kev xaiv ApplyOnForward muaj nyob rau hauv Calico thoob ntiaj teb txoj cai tswjfwm kom tso cai rau cov cai siv rau txhua lub tsheb hla dhau qhov kawg ntawm tus tswv tsev, suav nrog kev xa mus los ntawm tus tswv tsev. Qhov no suav nrog kev xa mus rau lub hauv paus pod lossis lwm qhov hauv lub network. Calico xav kom qhov kev teeb tsa no tau qhib rau cov cai siv PreDNAT thiab tsis tau taug qab, saib cov ntu hauv qab no. Tsis tas li ntawd, ApplyOnForward tuaj yeem siv los saib xyuas tus tswv tsheb hauv cov xwm txheej uas siv lub router virtual lossis software NAT.

Nco ntsoov tias yog tias koj xav siv tib txoj cai network rau ob lub tswv yim txheej txheem thiab cov pods, ces koj tsis tas yuav siv qhov kev xaiv ApplyOnForward. Txhua yam koj yuav tsum tau ua yog tsim ib daim ntawv lo rau qhov xav tau hostendpoint thiab workload endpoint (pod). Calico yog qhov ntse txaus los tswj txoj cai raws li cov ntawv sau, tsis hais qhov kawg hom (hostendpoint lossis workload).

Txoj Cai PreDNAT (4)

Hauv Kubernetes, cov chaw pabcuam chaw nres nkoj tuaj yeem raug nthuav tawm sab nraud siv NodePorts kev xaiv lossis, xaiv tau (thaum siv Calico), los ntawm kev tshaj tawm lawv siv Cluster IPs lossis External IPs xaiv. Kube-proxy sib npaug cov tsheb thauj mus los ua ke rau ib qho kev pabcuam rau cov pods ntawm cov kev pabcuam uas siv DNAT. Muab qhov no, koj yuav tswj hwm txoj cai li cas rau kev khiav tsheb los ntawm NodePorts? Txhawm rau kom ntseeg tau tias cov cai no raug siv ua ntej kev khiav tsheb khiav los ntawm DNAT (uas yog daim ntawv qhia ntawm tus tswv: chaw nres nkoj thiab cov kev pabcuam sib raug), Calico muab qhov ntsuas rau globalNetworkPolicy hu ua "preDNAT: tseeb".

Thaum ua ntej-DNAT tau qhib, cov cai no tau muab coj los siv hauv (4) hauv daim duab - hauv lub rooj mangle ntawm PREROUTING saw - tam sim ntawd ua ntej DNAT. Qhov kev txiav txim ntawm cov cai ib txwm tsis ua raws li ntawm no, txij li kev siv cov cai no tshwm sim ntau dhau ntawm txoj kev khiav tsheb. Txawm li cas los xij, preDNAT txoj cai hwm qhov kev txiav txim ntawm kev thov ntawm lawv tus kheej.

Thaum tsim cov cai nrog ua ntej DNAT, nws yog ib qho tseem ceeb uas yuav tsum tau ceev faj txog cov tsheb uas koj xav tau ua thiab tso cai rau feem ntau raug tsis lees paub. Cov tsheb uas tau cim tias yog 'pom' hauv txoj cai ua ntej DNAT yuav tsis raug tshuaj xyuas los ntawm txoj cai hostendpoint lawm, thaum kev khiav tsheb uas tsis ua ntej DNAT txoj cai yuav txuas ntxiv mus los ntawm cov saw txuas ntxiv.
Calico tau ua kom nws yuav tsum tau ua kom qhov kev xaiv ntawm qhov kev xaiv applyOnForward thaum siv preDNAT, txij li thaum lub ntsiab lus ntawm cov tsheb khiav tsis tau raug xaiv. Kev tsheb tuaj yeem raug coj mus rau cov txheej txheem tswv tsev, lossis nws tuaj yeem xa mus rau lub pod lossis lwm qhov.

Txoj cai tsis raug cai (5)

Networks thiab daim ntawv thov tuaj yeem muaj qhov sib txawv loj hauv kev coj cwj pwm. Hauv qee qhov xwm txheej, cov ntawv thov tuaj yeem tsim ntau qhov sib txuas luv luv. Qhov no tuaj yeem ua rau conntrack (ib feem tseem ceeb ntawm Linux networking pawg) kom khiav tawm ntawm lub cim xeeb. Kev lig kev cai, txhawm rau khiav cov ntawv thov no ntawm Linux, koj yuav tsum tau teeb tsa los yog lov tes taw conntrack, lossis sau cov cai iptables kom hla dhau conntrack. Untracked txoj cai hauv Calico yog qhov kev xaiv yooj yim dua thiab muaj txiaj ntsig yog tias koj xav ua cov kev sib txuas sai li sai tau. Piv txwv li, yog tias koj siv loj heev memcache los yog raws li kev ntsuas ntxiv ntawm kev tiv thaiv DDOS.

Nyeem qhov no blog ncej (los yog peb txhais lus) kom paub ntau ntxiv, suav nrog kev ntsuas kev ua tau zoo siv txoj cai tsis raug cai.

Thaum koj teeb tsa "doNotTrack: tseeb" kev xaiv hauv Calico globalNetworkPolicy, nws dhau los ua txoj cai ** untracked ** thiab tau siv thaum ntxov hauv Linux pob ntawv ua cov raj xa dej. Saib ntawm daim duab saum toj no, untracked txoj cai yog siv nyob rau hauv PREROUTING thiab OUTPUT chains nyob rau hauv lub rooj raw ua ntej kev twb kev txuas mus txog qhovtwg (conntrack) yog pib. Thaum ib pob ntawv tso cai los ntawm txoj cai tsis raug cai, nws raug cim kom kaw qhov kev sib txuas taug qab rau pob ntawv ntawd. Nws txhais tau tias:

  • Txoj cai txwv tsis pub siv yog siv rau ntawm ib pob ntawv. Tsis muaj lub tswv yim ntawm kev sib txuas (lossis ntws). Tsis muaj kev sib txuas muaj ob peb yam tseem ceeb:
  • Yog tias koj xav tso cai rau ob qho tib si thov thiab teb cov lus teb, koj xav tau txoj cai rau ob qho tib si sab hauv thiab sab nraud (vim Calico feem ntau siv conntrack los kos cov lus teb raws li kev tso cai).
  • Txoj cai tsis raug cai tsis ua haujlwm rau Kubernetes workloads (pods), vim hais tias nyob rau hauv rooj plaub no tsis muaj txoj hauv kev los taug qab qhov kev sib txuas tawm ntawm lub pods.
  • NAT tsis ua haujlwm kom raug nrog cov pob ntawv tsis raug (vim cov ntsiav khaws cov NAT daim ntawv qhia hauv conntrack).
  • Thaum dhau los ntawm txoj cai "tso cai" nyob rau hauv txoj cai untracked, tag nrho cov pob ntawv yuav raug cim tias untracked. Qhov no yuav luag txhua zaus tsis yog qhov koj xav tau, yog li nws tseem ceeb heev uas yuav tsum xaiv ntau yam ntawm cov pob ntawv tso cai los ntawm cov cai tsis raug cai (thiab tso cai rau cov tsheb feem ntau mus los ntawm txoj cai taug qab).
  • Untracked txoj cai yog siv nyob rau hauv thaum pib ntawm lub pob ntawv ua cov raj xa dej. Qhov no tseem ceeb heev kom nkag siab thaum tsim Calico cov cai. Koj tuaj yeem muaj txoj cai pod nrog kev txiav txim: 1 thiab txoj cai tsis raug nrog kev txiav txim: 1000. Nws yuav tsis muaj teeb meem. Txoj cai Untracked yuav raug siv ua ntej txoj cai rau lub pod. Untracked txoj cai hwm kev txiav txim tsuas yog ntawm lawv tus kheej.

Vim tias ib qho ntawm cov hom phiaj ntawm txoj cai doNotTrack yog los tswj txoj cai thaum ntxov hauv Linux pob ntawv ua cov raj xa dej, Calico ua rau nws yuav tsum tau qhia txog qhov kev xaiv sivOnForward thaum siv doNotTrack. Xa mus rau daim duab ua cov pob ntawv, nco ntsoov tias txoj cai tsis raug cai raug siv ua ntej kev txiav txim siab. Kev tsheb tuaj yeem raug coj mus rau cov txheej txheem tswv tsev, lossis nws tuaj yeem xa mus rau lub pod lossis lwm qhov.

Cov txiaj ntsim tau los

Peb tau saib ntau yam kev xaiv txoj cai (Host endpoint, ApplyOnForward, preDNAT, thiab Untracked) hauv Calico thiab lawv yuav siv li cas raws li cov txheej txheem txheej txheem. Kev nkag siab tias lawv ua haujlwm li cas pab tsim cov cai tswjfwm zoo thiab nyab xeeb. Nrog Calico koj tuaj yeem siv txoj cai thoob ntiaj teb network uas siv rau daim ntawv lo (ib pab pawg ntawm cov nodes thiab pods) thiab siv cov cai nrog ntau yam kev txwv. Qhov no tso cai rau cov kws tshaj lij kev ruaj ntseg thiab kev tsim network kom yooj yim tiv thaiv "txhua yam" (qhov kawg hom) ib zaug siv ib hom lus nrog Calico cov cai.

Kev lees paub: Kuv xav ua tsaug Sean Crampton ΠΈ Alexa Pollitta: koj puas xav tau ntau tus thwjtim? rau lawv cov kev txheeb xyuas thiab cov ntaub ntawv tseem ceeb.

Tau qhov twg los: www.hab.com

Ntxiv ib saib