K8S Multicluster Rees

Hey Habr!

Mir representéieren d'Exness Plattform Team. Virdrun hunn eis Kollegen schonn en Artikel iwwer geschriwwen Produktioun-prett Biller fir k8s. Haut wëlle mir eis Erfahrung mat Migratiounsservicer op Kubernetes deelen.

K8S Multicluster Rees

Fir unzefänken, bidden mir Iech e puer Zuelen fir e bessert Verständnis vun deem wat diskutéiert gëtt:

  • Eis Entwécklungsdepartement besteet aus 100+ Leit, dorënner méi wéi 10 verschidden Teams mat selbstänneg QA, DevOps a Scrum Prozesser. Entwécklung Stack - Python, PHP, C++, Java a Golang. 
  • D'Gréisst vun den Test- a Produktiounsëmfeld ass ongeféier 2000 Container all. Si lafen Rancher v1.6 op hirer eegener Virtualiséierung an ënner VMware. 

Motivatioun

Wéi se soen, näischt dauert fir ëmmer, an de Rancher huet d'Enn vun der Ënnerstëtzung fir Versioun 1.6 viru laanger Zäit ugekënnegt. Jo, a méi wéi dräi Joer hu mir geléiert wéi mir et virbereeden an d'Problemer léisen déi entstinn, awer ëmmer méi dacks si mir mat Probleemer konfrontéiert déi ni korrigéiert ginn. Rancher 1.6 huet och e ossified System fir Rechter auszeginn, wou Dir entweder bal alles oder näischt maache kënnt.

Och wann propriétaire Virtualiséierung méi Kontroll iwwer Datelagerung a seng Sécherheet geliwwert huet, huet et Operatiounskäschte gesat, déi schwéier ze akzeptéieren wéinst dem konstante Wuesstum vun der Firma, der Unzuel u Projeten an Ufuerderunge fir si.

Mir wollten IaC Standarden verfollegen an, wann néideg, Kapazitéit séier kréien, an all geographesch Plaz an ouni Verkeefer Spär, an och fäeg sinn et séier opzeginn.

éischt Schrëtt

Als éischt wollte mir op modern Technologien a Léisungen vertrauen, déi Teams erlaben e méi séier Entwécklungszyklus ze hunn an d'Operatiounskäschte fir d'Interaktioun mat der Plattform ze minimiséieren déi Kraaft ubitt. 
 
Natierlech ass déi éischt Saach, déi eis am Kapp komm ass, Kubernetes, awer mir sinn net opgereegt an hunn e bësse Fuerschung gemaach fir ze kucken ob et déi richteg Wiel war. Mir hunn nëmmen Opensource Léisungen evaluéiert, an an enger ongerechter Schluecht huet de Kubernetes onbedéngt gewonnen.  

Als nächst koum d'Fro vun engem Tool fir Cluster ze kreéieren. Mir verglach déi populärste Léisungen: kops, kubespray, kubeadm.

Fir unzefänken, kubeadm huet eis als ze komplizéierte Wee geschéngt, éischter wéi eng Zort Erfinder vun engem "Vëlo", a Kops haten net genuch Flexibilitéit.

An de Gewënner war:

K8S Multicluster Rees

Mir hunn ugefaang mat eiser eegener Virtualiséierung an AWS ze experimentéieren, probéiert eppes ongeféier ähnlech wéi eise fréiere Ressourcemanagementmuster nei ze kreéieren, wou jidderee dee selwechte "Cluster" gedeelt huet. An elo hu mir eisen éischte Stärekoup vun 10 klenge virtuelle Maschinnen, e puer vun deenen an AWS sinn. Mir hunn ugefaang ze probéieren Teams dohinner ze migréieren, alles schéngt "gutt" ze sinn, an d'Geschicht konnt fäerdeg sinn, awer ...

Éischt Problemer

Ansibel ass op wat kubespray gebaut ass, et ass keen Tool dat Iech erlaabt IaC ze verfollegen: beim Aféierungs- / Ofbauknäppchen ass eppes stänneg falsch gaang an eng Aart Interventioun war erfuerderlech, a wann Dir verschidden OSen benotzt, huet d'Playbook sech anescht behuelen. . Wéi d'Zuel vun den Équipen an Noden am Stärekoup gewuess ass, hu mir ugefaang ze bemierken datt d'Spillbuch méi laang dauert fir ze kompletéieren, an als Resultat war eise Rekord 3,5 Stonnen, wéi ass et mat Ärem? 🙂

An et schéngt wéi kubespray just Ansible ass, an alles ass kloer op den éischte Bléck, awer:

K8S Multicluster Rees

Am Ufank vun der Rees war d'Aufgab Kapazitéiten nëmmen an AWS an op Virtualiséierung ze lancéieren, awer dann, wéi dacks geschitt, hunn d'Ufuerderunge geännert.
 
K8S Multicluster ReesK8S Multicluster Rees

Am Liicht vun dësem gouf et kloer datt eist aalt Muster fir Ressourcen an een Orchestersystem ze kombinéieren net gëeegent war - am Fall wou d'Cluster ganz wäit sinn a vu verschiddene Fournisseuren geréiert ginn. 

Weider méi. Wann all Équipë am selwechte Cluster schaffen, kënne verschidde Servicer mat falsch installéierten NodeSelectors op den "auslännesche" Host vun engem aneren Team fléien an do Ressourcen benotzen, a wann d'Faarf gesat gouf, goufen et konstant Ufroen datt een oder aneren Service net funktionnéiert, net korrekt verdeelt wéinst mënschleche Faktor. En anere Problem war d'Berechnung vun de Käschte, besonnesch wann Dir d'Problemer bei der Verdeelung vu Servicer iwwer Noden berécksiichtegt.

Eng separat Geschicht war d'Emissioun vu Rechter fir d'Mataarbechter: all Team wollt "u Spëtzt" vum Cluster sinn an et komplett verwalten, wat e kompletten Zesummebroch verursaache kéint, well d'Equipen am Fong onofhängeg vuneneen sinn.

Wéi soll et sinn?

Wann Dir déi uewe genannten an d'Wënsch vun den Teams berücksichtegt fir méi onofhängeg ze sinn, hu mir eng einfach Conclusioun gemaach: eng Equipe - ee Stärekoup. 

Also hu mir en zweeten:

K8S Multicluster Rees

An dann den drëtte Cluster: 

K8S Multicluster Rees

Dunn hu mer ugefaang ze denken: Loosst eis soen datt an engem Joer eis Teams méi wéi ee Cluster hunn? A verschiddene geographesche Beräicher, zum Beispill, oder ënner der Kontroll vu verschiddene Fournisseuren? An e puer vun hinnen wëllen séier e temporäre Cluster fir e puer Tester ofsetzen. 

K8S Multicluster Rees

Voll Kubernetes géif kommen! Dëst ass eng Aart vu MultiKubernetes, stellt sech eraus. 

Zur selwechter Zäit wäerte mir all iergendwéi all dës Cluster mussen erhalen, fäeg sinn den Zougang zu hinnen einfach ze verwalten, wéi och nei ze kreéieren an al ouni manuell Interventioun ofzeschafen.

Zënter dem Ufank vun eiser Rees an der Welt vu Kubernetes ass eng Zäit vergaangen, a mir hu beschloss déi verfügbar Léisungen nei z'iwwerpréiwen. Et huet sech erausgestallt datt et schonn um Maart existéiert - Rancher 2.2.

K8S Multicluster Rees

Op der éischter Etapp vun eiser Fuerschung haten Rancher Labs schonn déi éischt Verëffentlechung vun der Versioun 2 gemaach, awer och wann et ganz séier ka erhéicht ginn andeems en Container ouni extern Ofhängegkeete mat e puer Parameteren lancéiert oder déi offiziell HELM Chart benotzt, huet et rau ausgesinn fir eis, a mir wosst net, ob mir op dëser Decisioun vertrauen kéint, ob et wäert entwéckelt oder séier opginn. De Cluster = klickt Paradigma an der UI selwer huet eis och net gepasst, a mir wollten net un RKE gebonnen ginn, well et en zimlech schmuel fokusséiert Tool ass. 

D'Versioun Rancher 2.2 hat schonn e méi funktionéierbar Erscheinungsbild an, zesumme mat deene virdrun, eng Rëtsch interessant Features aus der Këscht, wéi Integratioun mat villen externen Ubidder, een eenzege Punkt vun der Verdeelung vu Rechter a kubeconfig Dateien, lancéiert e kubectl Bild mat Äre Rechter an der UI, nestéiert Nummraim aka Projeten. 

Et war och eng Communautéit schonn ronderëm Rancher geformt 2, an engem Provider genannt HashiCorp Terraform gouf geschaf et ze verwalten, déi gehollef eis alles zesummen.

Wat ass geschitt

Als Resultat hu mir mat engem klenge Cluster deen Rancher leeft, zougänglech fir all aner Cluster, souwéi vill Cluster, déi domat verbonne sinn, Zougang zu jidderengem kann esou einfach wéi e Benotzer an de ldap Verzeichnis bäidroen, onofhängeg vun wou et läit a wéi engem Provider Ressourcen et benotzt.

Mat gitlab-ci an Terraform gouf e System erstallt deen Iech erlaabt e Cluster vun all Konfiguratioun an Cloud Provider oder eis eegen Infrastruktur ze kreéieren an se mat Rancher ze verbannen. All dëst gëtt am IaC-Stil gemaach, wou all Stärekoup vun engem Repository beschriwwe gëtt, a säi Staat Versioun gëtt. Zur selwechter Zäit sinn déi meescht Moduler vun externen Repositories verbonnen, sou datt alles wat bleift ass Variablen ze passéieren oder Är personaliséiert Konfiguratioun fir Instanzen ze beschreiwen, wat hëlleft de Prozentsaz vun der Widderhuelung vum Code ze reduzéieren.

K8S Multicluster Rees

Natierlech ass eis Rees nach laang net eriwwer an et sinn nach vill interessant Aufgaben vir, sou wéi een eenzege Punkt vun der Aarbecht mat Logbicher a Metriken vun all Cluster, Service Mesh, Gitops fir d'Gestioun vun Lasten an engem Multicluster a vill méi. Mir hoffen Dir fannt eis Erfahrung interessant! 

Den Artikel gouf vun A. Antipov, A. Ganush, Plattform Ingenieuren geschriwwen. 

Source: will.com

Setzt e Commentaire