GKE podai prarado VPN prieigą po 1.14: du būdai sutaisyti šaltinį
Po 1.14 podai pasiekia VPN su savo adresais, todėl partneriai atmeta atsakymus. Pasirinkite šaltinio sutartį ir tada nustatykite nonMasqueradeCIDRs pagal ją.
Ateina naujinys, ir sistemų kitoje tunelio pusėje pradeda atmesti podų srautą, kuris veikė praėjusią savaitę. Tunelis veikia, užkardos taisyklės nepaliestos, ir niekas neredagavo partnerio politikos. Tai, kas pasikeitė, klasterio žurnaluose nematoma: šaltinio adresas, kurį tos sistemos dabar mato. Šis tarpas paaiškina gedimą, kuris atrodo kaip tinklo sutrikimas ir elgiasi kaip leidimų problema.
Yra du galiojantys atsakymai, ir jie veda į skirtingas vietas. Pasirinkite šaltinio sutartį prieš redaguodami ConfigMap.
Numatytoji taisyklė, kurios nebėra įdiegiama
Ankstesnės GKE versijos įdiegdavo masquerade taisyklę, kuri podų šaltinius pakeisdavo mazgo adresu, kai tik paskirties vieta būdavo už 10.0.0.0/8 ribų. VPN šliuzas šiame diapazone matydavo podo adresą, o visa, kas toliau, atrodydavo kaip atėję iš mazgo. Partneriai kūrė leidžiamų sąrašus ir grįžtamuosius maršrutus aplink mazgų adresus, nes tai ir stebėjo.
Vėlesnės versijos nustojo diegti tą numatytąją taisyklę. Podų srautas dabar pasiekia šliuzą su podų adresais, kad ir kokia būtų paskirtis. Partneris, kuris maršrutizuoja tik mazgų adresus, atmeta atsakymus, ir nė viena pusė neįrašo naudingo žurnalo įrašo. Užklausa gali net pavykti tolimajame gale, ir tai daro gedimą sunkiai sugaunamą.
Niekas nesugedę mirusio komponento prasme. Dvi pusės tiesiog nesutaria, kuris šaltinis yra teisėtas.
Pasirinkite šaltinį, kurį partneris turėtų matyti
Podų adresų išlaikymas yra tikslesnė sutartis. Tolimoji pusė mato darbo krūvį, kuris sukūrė srautą, žurnalai išlieka sąžiningi, ir politika kiekvienam podui tampa įmanoma. Kaina ta, kad partneris turi nešti podų priešdėlį.
Mazgų adresų išlaikymas yra pigesnė sutartis. Vėl įjunkite masquerade tai paskirčiai, ir partneris toliau matys adresą, kuriuo jau pasitiki.
Vienas klausimas nusprendžia tarp jų: ką partneris daro su šaltiniu? Jei jis registruoja, taiko politiką pagal šaltinį arba reikalauja siauro grįžtamojo maršrutizavimo, podų adresai pateisina papildomą konfigūraciją. Jei jam reikia tik siųsti atsakymus, masquerade kainuoja mažiau ir nieko nereikalauja iš kitos pusės. Bet kuris pasirinkimas yra apginamas, kol abi komandos jį užrašo.
Trečiasis variantas paprastai yra klaida: maskuoti viską ir prarasti galimybę priskirti srautą. Venkite jo, nebent partneris tikrai negali maršrutizuoti nieko, išskyrus mazgų adresus.
Nukreipkite nonMasqueradeCIDRs į tikruosius diapazonus
GKE paleidžia ip-masq-agent kube-system aplinkoje, ir jo ConfigMap išvardija paskirties vietas, kurios praleidžia masquerade. Kad podų šaltiniai būtų išsaugoti link tunelio, podų diapazonas, mazgo potinklis ir vietinis priešdėlis visi priklauso tam sąrašui.
Pakeiskite pavyzdines reikšmes savo klasterio diapazonais. Nedarykite sąrašo platesnio, nei reikalauja poreikis, nes kiekvienas papildomas įrašas keičia, ką mato kokia nors kita paskirtis. Trys įrašai žemiau žymi podų tinklą, mazgo potinklį ir priešdėlį už tunelio:
nonMasqueradeCIDRs:
- 10.12.0.0/14
- 10.100.0.0/16
- 172.16.0.0/12
masqLinkLocal: false
resyncInterval: 60sĮrašas 0.0.0.0/0 išjungia masquerade visoms paskirties vietoms, o tai keičia, kaip nesusiję darbo krūviai atrodo išorinėms paslaugoms, ir retai būna tyčinis. Agentas iš naujo perskaito savo konfigūraciją esant resyncInterval, todėl pakartotinis paleidimas paprastai nereikalingas. Patikrinkite, ar agento podas veikia, tada atidarykite prijungtą failą jo viduje. Būtent to failo perskaitymas įrodo, kad pakeitimas atkeliavo.
Grįžtamasis kelias yra kita pusė
Masquerade keičia užklausos šaltinį ir nieko daugiau. Kad ir kokį šaltinį partneris gautų, jam vis dar reikia maršruto atgal į jį, o klasteriui vis dar reikia maršruto link partnerio.
Užfiksuotas srautas VPN šliuze greitai atskiria abu gedimus. Paketai, kurie atvyksta su podų adresais ir niekada negauna atsakymo, reiškia, kad partneriui trūksta maršruto podų priešdėliui. Atsakymas, kuris pasirodo šliuze, bet niekada nepasiekia klasterio, reiškia, kad trūksta vietinio maršruto. Vis tiek įrašykite sutartį į bilietą: kokį šaltinį mato partneris ir į kokį priešdėlį jis nukreipia atsakymą.
Patikrinkite iš naujo po kiekvieno naujinio
Numatytasis masquerade elgesys jau kartą pasikeitė, o mazgų telkinio pakeitimas gali atstatyti klasterio tinklą. Laikykite šaltinio sutartį tuo, ką reikia patikrinti, o ne tuo, ką galima daryti prielaidą.
Po naujinio nusiųskite vieną užklausą iš podo į vietinę paslaugą ir perskaitykite šaltinį, kurį registruoja partneris. Tas vienas stebėjimas pagauna regresiją, kurią tunelio būsenos puslapis mielai praneštų kaip sveiką. Kartojimas kainuoja minutę ir sutaupo kitam žmogui vakarą.