KÄ savienot Kubernetes klasterus dažÄdos datu centros
Laipni lÅ«dzam mÅ«su Kubernetes Quick Start sÄrijÄ. Å Ä« ir regulÄra sleja ar interesantÄkajiem jautÄjumiem, ko saÅemam tieÅ”saistÄ un mÅ«su apmÄcÄ«bÄs. Kubernetes eksperts atbild.
Å odienas eksperts ir Daniels PolenÄiks (Daniele PoleÄiÄa). Daniels strÄdÄ par instruktoru un programmatÅ«ras izstrÄdÄtÄju Learnk8s.
Diezgan bieži infrastruktÅ«ra tiek replicÄta un izplatÄ«ta dažÄdos reÄ£ionos, Ä«paÅ”i kontrolÄtÄ vidÄ.
Ja viens reÄ£ions nav pieejams, satiksme tiek novirzÄ«ta uz citu, lai izvairÄ«tos no traucÄjumiem.
Izmantojot Kubernetes, varat izmantot lÄ«dzÄ«gu stratÄÄ£iju un sadalÄ«t darba slodzi dažÄdos reÄ£ionos.
Katrai komandai, reÄ£ionam, videi vai Å”o elementu kombinÄcijai var bÅ«t viena vai vairÄkas kopas.
JÅ«su kopas var tikt mitinÄtas dažÄdos mÄkoÅos un lokÄlos.
Bet kÄ jÅ«s plÄnojat infrastruktÅ«ru Å”Ädai Ä£eogrÄfiskai izplatÄ«bai?
Vai jums ir jÄizveido viens liels klasteris vairÄkÄm mÄkoÅa vidÄm vienÄ tÄ«klÄ?
Vai arÄ« jums ir daudz mazu kopu un atrodiet veidu, kÄ tos kontrolÄt un sinhronizÄt?
Viens līderu klasteris
Viena klastera izveide vienÄ tÄ«klÄ nav tik vienkÄrÅ”a.
IedomÄjieties, ka jums ir noticis negadÄ«jums, savienojums starp klastera segmentiem tiek zaudÄts.
Ja jums ir viens galvenais serveris, puse resursu nevarÄs saÅemt jaunas komandas, jo viÅi nevarÄs sazinÄties ar galveno serveri.
Un tajÄ paÅ”Ä laikÄ jums ir vecas marÅ”rutÄÅ”anas tabulas (kube-proxy nevar lejupielÄdÄt jaunus) un nekÄdu papildu aplikumu (kubelet nevar pieprasÄ«t atjauninÄjumus).
Lai padarÄ«tu situÄciju vÄl ļaunÄku, ja Kubernetes neredz mezglu, tas atzÄ«mÄ to kÄ bÄreÅu un izdala trÅ«kstoÅ”os mezglus esoÅ”ajiem mezgliem.
TÄ rezultÄtÄ jums ir divreiz vairÄk pÄkstÄ«m.
Ja katram reÄ£ionam izveidosit vienu galveno serveri, radÄ«sies problÄmas ar konsensa algoritmu etcd datu bÄzÄ. (apm. ed. ā Faktiski etcd datubÄzei nav obligÄti jÄatrodas galvenajos serveros. To var palaist atseviÅ”Ä·Ä serveru grupÄ tajÄ paÅ”Ä reÄ£ionÄ. Tiesa, tajÄ paÅ”Ä laikÄ iegÅ«stot klastera neveiksmes punktu. Bet Ätri.)
etcd lietojumi plostu algoritmslai vienotos par vÄrtÄ«bu pirms tÄs ierakstÄ«Å”anas diskÄ.
Tas nozÄ«mÄ, ka lielÄkajai daļai gadÄ«jumu ir jÄpanÄk vienprÄtÄ«ba, pirms valsti var rakstÄ«t uz etcd.
Ja latentums starp etcd gadÄ«jumiem dramatiski palielinÄs, kÄ tas notiek ar trim etcd gadÄ«jumiem dažÄdos reÄ£ionos, ir nepiecieÅ”ams ilgs laiks, lai vienotos par vÄrtÄ«bu un ierakstÄ«tu to diskÄ.
Tas ir atspoguļots Kubernetes kontrolieros.
Kontroliera pÄrvaldniekam ir nepiecieÅ”ams vairÄk laika, lai uzzinÄtu par izmaiÅÄm un uzrakstÄ«tu atbildi datu bÄzÄ.
Un tÄ kÄ kontrolieris nav viens, bet vairÄki, rodas Ä·Ädes reakcija, un viss klasteris sÄk darboties ļoti lÄni.
Pirmo reizi mÄs mÄÄ£inÄjÄm pÄrvaldÄ«t klasteru kolekciju kÄ vienu objektu, izmantojot kube federÄcijas rÄ«ku.
SÄkums bija labs, bet beigÄs kube federÄcija nekad nekļuva populÄra, jo neatbalstÄ«ja visus resursus.
Tas atbalstÄ«ja apvienotÄs piegÄdes un pakalpojumus, bet ne, piemÄram, StatefulSets.
ArÄ« federÄcijas konfigurÄcija tika pÄrsÅ«tÄ«ta anotÄciju veidÄ un nebija elastÄ«ga.
IedomÄjieties, kÄ jÅ«s varÄtu aprakstÄ«t katra federÄcijas klastera replikas sadalÄ«Å”anu, izmantojot tikai anotÄcijas.
Tas bija pilnīgs bardaks.
SIG klasteris paveica daudz darba pÄc kubefed v1 un nolÄma pievÄrsties problÄmai no cita leÅÄ·a.
AnotÄciju vietÄ viÅi nolÄma atbrÄ«vot kontrolieri, kas ir instalÄts klasteros. To var pielÄgot, izmantojot pielÄgotÄs resursu definÄ«cijas (CRD).
Katram resursam, kas bÅ«s daļa no federÄcijas, jums ir pielÄgota CRD definÄ«cija ar trim sadaļÄm:
standarta resursa definÄ«cija, piemÄram, izvietoÅ”ana;
daļa placement, kur jÅ«s definÄjat, kÄ resurss tiks izplatÄ«ts federÄcijÄ;
daļa override, kur konkrÄtam resursam varat ignorÄt svaru un parametrus no izvietojuma.
Å eit ir piemÄrs kombinÄtai piegÄdei ar izvietoÅ”anas un ignorÄÅ”anas sadaļÄm.
KÄ redzat, piedÄvÄjums ir sadalÄ«ts divÄs kopÄs: cluster1 Šø cluster2.
Pirmais klasteris nodroŔina trīs kopijas, bet otrais ir iestatīts uz 5.
Ja jums ir nepiecieÅ”ama lielÄka kontrole pÄr reprodukciju skaitu, kubefed2 nodroÅ”ina jaunu ReplicaSchedulingPreference objektu, kurÄ var svÄrt replikas:
Abi rÄ«ki ļauj pielÄgot vairÄku klasteru izvietoÅ”anas stratÄÄ£iju (kuras kopas tiek izmantotas un cik reprodukciju tÄm ir).
Bet NosÅ«tÄ«tÄja mÄrÄ·is ir samazinÄt kļūdu risku piegÄdes laikÄ.
ProgrammÄ NosÅ«tÄ«tÄjs varat definÄt darbÄ«bu virkni, kas apraksta repliku sadalÄ«jumu starp iepriekÅ”Äjo un paÅ”reizÄjo izvietoÅ”anu un ienÄkoÅ”Äs trafika apjomu.
Nospiežot resursu klasterim, nosÅ«tÄ«tÄja kontrolleris pakÄpeniski izlaiž Ŕīs izmaiÅas visos pievienotajos klasteros.
ArÄ« nosÅ«tÄ«tÄjs ir ļoti ierobežots.
TÄ, piemÄram, tas pieÅem stÅ«res diagrammas kÄ ievadi un neatbalsta vaniļas resursus.
KopumÄ Shipper darbojas Å”Ädi.
Standarta piegÄdes vietÄ jums ir jÄizveido lietojumprogrammas resurss, kas ietver Helm diagrammu:
TaÄu tÄ vietÄ, lai izstrÄdÄtu jaunu veidu, kÄ mijiedarboties ar kopu un iekļaut resursus pielÄgotÄs definÄ«cijÄs, vairÄku klasteru plÄnotÄjs ir iegults standarta Kubernetes dzÄ«ves ciklÄ un pÄrtver visus zvanus, kas rada aplikumus.
Katrs izveidots pods nekavÄjoties tiek aizstÄts ar manekenu.
SÄkotnÄjais pods iziet citu plÄnoÅ”anas ciklu, kurÄ pÄc visas federÄcijas aptaujas tiek pieÅemts lÄmums par izvietojumu.
Visbeidzot, pods tiek piegÄdÄts mÄrÄ·a klasterim.
RezultÄtÄ jums ir papildu pods, kas neko nedara, tikai aizÅem vietu.
PriekÅ”rocÄ«ba ir tÄda, ka jums nebija jÄraksta jauni resursi, lai apvienotu piegÄdes.
Katrs resurss, kas izveido aplikumu, ir automÄtiski gatavs sapludinÄÅ”anai.
Tas ir interesanti, jo pÄkÅ”Åi jums ir piegÄdes, kas ir sadalÄ«tas vairÄkos reÄ£ionos, un jÅ«s pat nepamanÄ«jÄt. TomÄr tas ir diezgan riskanti, jo Å”eit viss balstÄs uz maÄ£iju.
TaÄu, lai gan Shipper cenÅ”as galvenokÄrt mazinÄt piegÄžu ietekmi, vairÄku klasteru plÄnotÄjs apstrÄdÄ vispÄrÄ«gÄkus uzdevumus un, iespÄjams, ir labÄk piemÄrots pakeÅ”u darbiem.
Tam nav uzlabota pakÄpeniskas piegÄdes mehÄnisma.
VairÄk par vairÄku klasteru plÄnotÄju var atrast vietnÄ oficiÄlÄ repozitorija lapa.
Ja vÄlaties lasÄ«t par vairÄku klasteru plÄnotÄju darbÄ«bu, AdmiralitÄte to ir izdarÄ«jusi interesants lietoÅ”anas gadÄ«jums ar Argo ā darbplÅ«smas, notikumi, CI un CD Kubernetes.
Citi instrumenti un risinÄjumi
VairÄku klasteru savienoÅ”ana un pÄrvaldÄ«ba ir sarežģīts uzdevums, un nav universÄla risinÄjuma.
Ja vÄlaties izpÄtÄ«t Å”o tÄmu sÄ«kÄk, Å”eit ir daži resursi:
Ja zinÄt, kÄ efektÄ«vÄk savienot vairÄkus klasterus, PastÄsti mums.
MÄs pievienosim saitÄm jÅ«su metodi.
ÄŖpaÅ”s paldies Krisam Nesbitam-Smitam (Kriss Nesbits-Smits) un Vincents de SmÄ (Vincents De Smets) (uzticamÄ«bas inženieris swatmobile.io), lai izlasÄ«tu rakstu un padalÄ«tos ar noderÄ«gu informÄciju par federÄcijas darbÄ«bu.