Ping virkar frá nóðunni og mistekst frá poddinu, og ekkert kemur á staðinn. Göngin og leiðin eru í lagi; upprunafangið á vírnum er það ekki. Það sem greinir þessi tvö tilvik er hvað pakkinn segist vera þegar hann yfirgefur þyrpinguna, og GKE hefur skoðun á því. Aðferðin er undantekningalisti masquerade, og að lesa hann tekur eina skipun.

Lestu gildandi listann áður en þú breytir nokkru

GKE sendir með umboð sem ákveður, fyrir hvert áfangastaðabil, hvort podumferð sé endurskrifuð á fang nóðunnar á útleið. Uppsetning þess nefnir þrjú RFC1918-blokkin, 10.0.0.0/8, 172.16.0.0/12 og 192.168.0.0/16, sem undanþegin áfangastaði. Þess vegna yfirgefur allt sem þú sendir frá poddi á staðbundið 10.x-hýsil nóðuna með eigið fang poddsins enn fest. Umferð nóðunnar sjálfrar er ekki endurskrifuð, og það er einmitt hvers vegna ping hennar virkar.

Lestu fyrirhugaða uppsetningu og uppsettu reglurnar, því þær geta verið ósammála. kubectl -n kube-system get configmap ip-masq-agent -o yaml sýnir hvað var sagt við umboðið, og kubectl -n kube-system get pods -l k8s-app=ip-masq-agent sýnir hvort eitthvað keyrir sem beitir því. Á nóðu sýnir iptables-save | grep -i masq reglurnar sem eru í raun í kjarnanum. Þegar ConfigMap segir eitt og reglurnar annað er grunurinn umboðið, ekki netið.

Staðfestu upprunafangið með grípun

Gerðu grípun áður en þú breytir lista. Sía á eina áfangastaðinn heldur úttakinu læsilegu: tcpdump -ni any host 10.20.30.40.

Berðu það saman við það sem hin hliðin greinir frá. Grípun á staðnum sem sýnir fang poddsins og ekkert svar lokar hringnum: undantekningalistinn útskýrir ósamhverfuna án nokkurrar bilunar í göngunum. Tvær athuganir á einu upprunafangi nægja til að hætta að giska á CNI.

Þrengdu undantekninguna að CIDR podda

Studd viðgerð þrengir undanþáguna í stað þess að fjarlægja hana: haltu CIDR podda undanþegnu og slepptu restinni af 10.x-rýminu. Sá listi býr í ConfigMap umboðsins undir nonMasqueradeCIDRs, og að breyta honum er breyting og svo útbreiðsla. Skiptu breiðu færslunni út fyrir raunverulegt podbil þyrpingarinnar, haltu öðrum einkablokkum ef umferð innan þyrpingarinnar þarf þau enn, og láttu resyncInterval í friði nema þú hafir ástæðu. Beitir því, staðfestu að pod umboðsins hafi endurræst og staðfestu að reglur kjarnans hafi breyst.

Þetta er breyting á öllum þyrpingnum með raunverulegt áhrifasvið. Þegar hún hefur tekið gildi kemur umferð sem áður hélt pod-uppruna sínum nú endurskrifuð á nóðuna, svo allt sem var lyklað á þau podföng sér annan sendanda. Fórnarlömbin eru annálar, heimilalistar og staðbundnar eldveggsreglur sem nefna podföng, og þau mistekst hljóðlega. Tilkynntu breytinguna sem atferlisbreytingu, ekki sem viðgerð.

Í þyrpingu með nokkrum nóðuhópum skal athuga að umboðið sé tímasett á nóðurnar þar sem viðkomandi pod keyra í raun. Hópur án DaemonSet heldur gömlu reglunum sínum, og ekkert í ConfigMap mun sýna það.

Valkosturinn og kostnaður hans

Hinn valkosturinn heldur podföngum ósnortnum og kennir leiðinni um þau. CIDR podda fer í umferðarval Cloud VPN, og staðbundna hliðin þarf afturleið fyrir það svo svör viti hvert þau eigi að fara. Það varðveitir auðkenni poddsins, sem sumar öryggislíkanir vilja, og það víkkar bæði leiðar- og eldveggssviðið sem hin hliðin verður að samþykkja.

Skiptin eru læsileiki gegn sviði. Þýðing lætur staðbundnu hliðina sjá eitt fang á hverja nóðu, sem er auðvelt að setja á heimilalista og felur hvaða pod sendi hvað. Engin þýðing heldur fangi poddsins frá enda til enda, sem er betra fyrir rekjanleika og verra fyrir hvert tæki á leiðinni sem þarf að læra nýtt bil. Hvorugur valkosturinn er galli í Docker eða CNI; báðir eru leiðarákvarðanir með rekstrarreikningi. Veldu þann sem teymið þitt getur borgað reikninginn fyrir, og skrifaðu niður hvers vegna.

Staðfestu og farðu til baka

Keyrðu sömu grípun aftur. Grípun á nóðustigi sem prentar enn fang poddsins eftir breytinguna þína þýðir að reglurnar breyttust aldrei, hvað sem ConfigMap segir. Vírinn er staðreyndin; allt annað er ályktun.

Athugaðu svo öfuga áttina, því helmingur þessara breytinga er aðeins staðfestur út á við. Staðfestu að svarið nái nóðunni eða poddinu sem sendi beiðnina, og staðfestu að forritið hafi klárað í stað þess að fá bara SYN. Grípun sem sýnir beiðni án svars er leiðarvandamál hinum megin, ekki masquerade-vandamál þessum megin.

Afturköllun er fyrri ConfigMap, beitt á sama hátt, með sömu staðfestingu að umboðið hafi endurræst og reglurnar breyst. Geymdu upprunafangið fyrir og eftir fyrir eina þekkta beiðni í breytingaskránni, því einmitt sú eina lína sannar að breytingin gerði það sem þú sagðir. Leiðarvísir GKE um IP-masquerade umboðið skjalfestir sjálfgefin gildi og ConfigMap-reiti. Ef upprunafangið er óbreytt eftir útbreiðsluna keyrir umboðið ekki á þeirri nóðu og engin YAML-breyting mun laga það.

Tengdir greinar