Wéi verbënnt Kubernetes Cluster a verschiddenen Datenzenteren
Wëllkomm op eiser Kubernetes Quick Start Serie. Dëst ass eng regulär Kolonn mat den interessantsten Froen déi mir online an an eisen Trainingen kréien. Kubernetes Expert Äntwerten.
Den Expert vun haut ass den Daniel Polenchik (Daniele Polencic). Daniel schafft als Instruktor a Software Entwéckler bei Léiert 8s.
Zimlech dacks gëtt Infrastruktur replizéiert a verdeelt iwwer verschidde Regiounen, besonnesch a kontrolléiert Ëmfeld.
Wann eng Regioun net verfügbar ass, gëtt de Traffic op eng aner ëmgeleet fir Ënnerbriechungen ze vermeiden.
Mat Kubernetes kënnt Dir eng ähnlech Strategie benotzen an Aarbechtslaascht iwwer verschidde Regiounen verdeelen.
Dir kënnt een oder méi Cluster pro Team, Regioun, Ëmfeld oder eng Kombinatioun vun dësen Elementer hunn.
Är Cluster kënnen a verschiddene Wolleken an op der Plaz gehost ginn.
Awer wéi plangt Dir Infrastruktur fir sou geographesch Verbreedung?
Braucht Dir e grousse Stärekoup fir verschidde Cloud-Ëmfeld iwwer engem eenzegen Netz ze kreéieren?
Oder hu vill kleng Stärekéip an e Wee fannen fir se ze kontrolléieren an ze synchroniséieren?
Ee Leadership Cluster
Ee Cluster iwwer engem eenzegen Netzwierk erstellen ass net sou einfach.
Stellt Iech vir datt Dir en Accident hutt, d'Konnektivitéit tëscht Cluster Segmenter ass verluer.
Wann Dir e Master-Server hutt, kënnen d'Halschent vun de Ressourcen net nei Kommandoen kréien, well se net fäeg sinn de Master ze kontaktéieren.
A gläichzäiteg hutt Dir al Routingtabellen (kube-proxy kann net nei eroflueden) a keng zousätzlech Pods (kubelet kann net Updates ufroen).
Fir d'Saache méi schlëmm ze maachen, wann de Kubernetes keen Node gesäit, markéiert se et als verwaist a verdeelt déi fehlend Pods op existent Noden.
Als Resultat hutt Dir duebel sou vill Pods.
Wann Dir e Master-Server fir all Regioun maacht, gëtt et Problemer mam Konsens Algorithmus an der etcd Datebank. (ca. ed. - Tatsächlech muss d'etcd Datebank net onbedéngt op de Masterserver sinn. Et kann op enger separater Grupp vu Serveren an der selwechter Regioun lafen. True, gläichzäiteg e Punkt vum Echec vum Cluster ze kréien. Awer séier.)
etcd benotzt Flott Algorithmusfir de Wäert ze verhandelen ier se op Disk schreift.
Dat ass, eng Majoritéit vun Instanzen muss Konsens erreechen, ier de Staat op etcd geschriwwe ka ginn.
Wann d'Latenz tëscht etcd Instanzen dramatesch eropgeet, wéi de Fall mat dräi etcd Instanzen a verschiddene Regiounen ass, dauert et laang Zäit fir e Wäert ze verhandelen an op Scheif ze schreiwen.
Dëst gëtt a Kubernetes Controller reflektéiert.
De Controller Manager brauch méi Zäit fir iwwer d'Ännerung ze léieren an d'Äntwert op d'Datebank ze schreiwen.
A well et net ee Controller ass, mee e puer, eng Kettenreaktioun entsteet an de ganze Stärekoup fänkt ganz lues un.
Et gi momentan keng gutt Beispiller vun engem grousse Netzwierk fir een eenzege Cluster.
Prinzipiell probéieren d'Entwécklergemeinschaft an de SIG-Cluster-Grupp erauszefannen, wéi een Cluster orchestréiert wéi Kubernetes Container orchestréiert.
Fir déi éischte Kéier hu mir probéiert eng Sammlung vu Stärekéip als eenzegen Objet ze verwalten mat dem Kube Federatiounsinstrument.
Den Ufank war gutt, awer um Enn gouf d'Kubefederatioun ni populär well se net all Ressourcen ënnerstëtzt huet.
Et ënnerstëtzt federéiert Liwwerungen a Servicer, awer net StatefulSets, zum Beispill.
Och d'Federatiounskonfiguratioun gouf a Form vun Annotatiounen iwwerdroen a war net flexibel.
Stellt Iech vir wéi Dir d'Replique-Partitionéierung fir all Stärekoup an enger Federatioun beschreiwe kënnt mat just Annotatiounen.
Et war e komplette Mess.
SIG-Cluster huet vill Aarbecht no kubefed v1 an decidéiert de Problem aus engem anere Wénkel ze Approche.
Amplaz vun Annotatiounen, hu se decidéiert e Controller ze verëffentlechen deen op Cluster installéiert ass. Et kann personaliséiert ginn mat Custom Ressource Definitions (CRDs).
Fir all Ressource déi Deel vun der Federatioun wäert sinn, hutt Dir eng personaliséiert CRD Definitioun mat dräi Sektiounen:
Standard Definitioun vun enger Ressource, zum Beispill Deployment;
Sektioun placement, wou Dir definéiert wéi d'Ressource an der Federatioun verdeelt gëtt;
Sektioun override, Wou fir eng spezifesch Ressource kënnt Dir d'Gewiicht an d'Parameter vun der Placement iwwerschreiden.
Hei ass e Beispill vun enger kombinéierter Liwwerung mat Placement- an Iwwerschreiden Sektiounen.
Wéi Dir kënnt gesinn, ass d'Versuergung iwwer zwee Cluster verdeelt: cluster1 и cluster2.
Den éischte Stärekoup liwwert dräi Repliken, an déi zweet ass op 5 gesat.
Wann Dir méi Kontroll iwwer d'Zuel vun de Repliken braucht, bitt kubefed2 en neien ReplicaSchedulingPreference-Objekt wou Repliken gewiicht kënne ginn:
Optioun 2: Kombinéiere vu Cluster am Booking.com-Stil
D'Entwéckler vu Booking.com hunn net op kubefed v2 geschafft, awer si koumen mam Shipper - e Bedreiwer fir d'Liwwerung op verschidde Cluster, a verschiddene Regiounen an a verschiddene Wolleken.
Béid Tools erlaaben Iech Är Multi-Cluster-Deploymentstrategie ze personaliséieren (wéi eng Cluster gi benotzt a wéi vill Repliken se hunn).
mä D'Ziel vum Shipper ass de Risiko vu Feeler während der Liwwerung ze reduzéieren.
Am Shipper kënnt Dir eng Serie vu Schrëtt definéieren, déi d'Divisioun vun de Repliken tëscht der viregter an der aktueller Détachement an dem Volume vum erakommende Verkéier beschreiwen.
Wann Dir eng Ressource an e Stärekoup dréckt, rullt de Shipper Controller inkrementell dës Ännerung iwwer all verbonne Cluster aus.
Och de Shipper ass ganz limitéiert.
Zum Beispill, et akzeptéiert Helm Charts als Input an ënnerstëtzt net Vanill Ressourcen.
Am Allgemengen, Shipper funktionnéiert esou.
Amplaz Standard Liwwerung, musst Dir eng Applikatiounsressource erstellen déi e Helm Chart enthält:
Awer amplaz mat engem neie Wee ze kommen fir mam Cluster ze interagéieren an d'Ressourcen a personaliséiert Definitiounen ze wéckelen, ass Multi-Cluster-Scheduler am Standard Kubernetes Liewenszyklus agebonnen an interceptéiert all Uruff déi Pods erstellen.
All erstallt Pod gëtt direkt mat engem Dummy ersat.
Den urspréngleche Pod geet duerch en anere Planungszyklus, wou no der Ëmfro vun der ganzer Federatioun eng Placement-Decisioun geholl gëtt.
Schlussendlech gëtt de Pod an den Zilcluster geliwwert.
Als Resultat hutt Dir en extra Pod deen näischt mécht, just Plaz ophëlt.
De Virdeel ass datt Dir keng nei Ressourcen musst schreiwen fir d'Versuergung ze kombinéieren.
All Ressource déi e Pod erstellt ass automatesch prett fir ze fusionéieren.
Dëst ass interessant, well op eemol hutt Dir Versuergung iwwer verschidde Regiounen verdeelt, an Dir hutt net emol gemierkt. Dëst ass awer zimlech riskant, well alles hei op Magie hänkt.
Awer wärend de Shipper probéiert meeschtens den Impakt vun de Liwwerungen ze reduzéieren, handhabt de Multi-Cluster-Scheduler méi allgemeng Aufgaben an ass vläicht besser gëeegent fir Batchjobs.
Et huet keen fortgeschratt graduelle Liwwerungsmechanismus.
Méi iwwer Multi-Cluster-Scheduler fannt Dir op offiziell Repository Säit.
Wann Dir wëllt iwwer Multi-Cluster-Scheduler an Aktioun liesen, Admiralitéit huet interessant Benotzungsfall mat Argo - Workflows, Eventer, CI an CD Kubernetes.
Aner Tools a Léisungen
Multiple Cluster verbannen a managen ass eng komplex Aufgab, an et gëtt keng universell Léisung.
Wann Dir dëst Thema weider wëllt entdecken, hei sinn e puer Ressourcen:
Submariner vun Rancher ass en Tool dat Overlay Netzwierker vu verschiddene Kubernetes Cluster verbënnt.
Cilium, e Container Netzwierk Interface Plugin, bitt Cluster Mesh Funktioun, wat Iech erlaabt verschidde Cluster ze kombinéieren
Dat ass alles fir haut
Merci fir d'Liesen bis zum Schluss!
Wann Dir wësst wéi Dir méi Cluster méi effizient verbënnt, erziel eis.
Mir addéieren Är Method op d'Links.
E spezielle Merci un Chris Nesbitt-Smith (Chris Nesbitt-Smith) und Vincent de Sme (Vincent De Smet) (Reliability Engineer in swatmobile.io) fir den Artikel ze liesen an nëtzlech Informatiounen ze deelen iwwer wéi d'Federatioun funktionnéiert.