Kubernetes: Open Source vs Verkeeferspezifesch

Moien, mäin Numm ass Dmitry Krasnov. Fir méi wéi fënnef Joer hunn ech Kubernetes Cluster verwalt a komplex Mikroservicearchitekturen opgebaut. Am Ufank vun dësem Joer hu mir e Service gestart fir Kubernetes Cluster ze managen baséiert op Containerum. Mat dëser Geleeënheet wäert ech Iech soen wat Kubernetes ass a wéi d'Integratioun mat engem Verkeefer vun der Open Source ënnerscheet.

Fir unzefänken, wat ass Kubernetes. Dëst ass e System fir Container op enger grousser Zuel vu Hosten ze managen. Vu griichesche gëtt et iwwregens als "Pilot" oder "Ruerger" iwwersat. Ursprénglech vu Google entwéckelt an duerno als Technologie Bäitrag un d'Cloud Native Computing Foundation gespent, eng international Associatioun ouni Gewënnzweck déi weltwäit féierend Entwéckler, Endbenotzer a Containertechnologie Ubidder zesummebréngt.

Kubernetes: Open Source vs Verkeeferspezifesch

Managen eng grouss Zuel vu Container

Loosst eis elo erausfannen wéi eng Zort Container dëst sinn. Dëst ass eng Applikatioun mat senger ganzer Ëmwelt - haaptsächlech d'Bibliothéiken op deenen de Programm hänkt. All dëst ass an Archiver verpackt a presentéiert a Form vun engem Bild dat onofhängeg vum Betribssystem lafen kann, getest a méi. Awer et gëtt e Problem - d'Gestioun vu Container op enger grousser Zuel vu Hosten ass ganz schwéier. Dofir gouf Kubernetes erstallt.

E Containerbild representéiert eng Applikatioun plus seng Ofhängegkeeten. D'Applikatioun, seng Ofhängegkeeten an d'OS Dateisystembild sinn a verschiddenen Deeler vum Bild, sougenannte Schichten. Schichten kënne fir verschidde Container weiderbenotzt ginn. Zum Beispill kënnen all Uwendungen an enger Firma d'Ubuntu Basisschicht benotzen. Wann Dir Container leeft, ass et net néideg fir verschidde Kopien vun enger eenzeger Basisschicht um Host ze späicheren. Dëst erlaabt Iech Bildlagerung a Liwwerung ze optimiséieren.

Wa mir eng Applikatioun aus engem Container wëllen ausféieren, ginn déi néideg Schichten openeen iwwerlagert an en Overlay Dateiesystem gëtt geformt. Eng Opnamschicht gëtt uewen geluecht, déi ewechgeholl gëtt wann de Container stoppt. Dëst garantéiert datt wann de Container leeft, d'Applikatioun ëmmer datselwecht Ëmfeld huet, wat net geännert ka ginn. Dëst garantéiert d'Reproduktioun vun der Ëmwelt op verschiddene Host-OSen. Egal ob et Ubuntu oder CentOS ass, d'Ëmfeld wäert ëmmer d'selwecht sinn. Zousätzlech ass de Container vum Host isoléiert mat Mechanismen, déi an de Linux Kernel gebaut sinn. Uwendungen an engem Container gesinn keng Dateien, Prozesser vum Host an Nopeschcontainer. Dës Isolatioun vun Uwendungen vum Host OS bitt eng zousätzlech Schicht vu Sécherheet.

Et gi vill Tools verfügbar fir Container op engem Host ze managen. Déi populärste vun hinnen ass Docker. Et erlaabt Iech de ganze Liewenszyklus vu Container ze bidden. Wéi och ëmmer, et funktionnéiert nëmmen op engem Host. Wann Dir Container iwwer verschidde Hosten managen musst, kann Docker d'Liewen Häll fir Ingenieuren maachen. Dofir gouf Kubernetes erstallt.

D'Demande fir Kubernetes ass präzis wéinst der Fäegkeet Gruppen vu Container op verschidde Hosten als eng Aart vun enger eenzeger Entitéit ze managen. D'Popularitéit vum System bitt d'Méiglechkeet fir DevOps oder Entwécklungsoperatiounen ze bauen, an deenen Kubernetes benotzt gëtt fir d'Prozesser vun dësem ganz DevOps ze lafen.

Kubernetes: Open Source vs Verkeeferspezifesch

Figur 1. Schematesch Representatioun vun wéi Kubernetes Wierker

Voll Automatisatioun

DevOps ass am Fong d'Automatiséierung vum Entwécklungsprozess. Grof geschwat, Entwéckler schreiwen Code deen an de Repository eropgeluede gëtt. Da kann dëse Code automatesch direkt an e Container mat all de Bibliothéiken gesammelt ginn, getest an "ausgerullt" op déi nächst Etapp - Staging, an dann direkt op d'Produktioun.

Zesumme mat Kubernetes erlaabt DevOps Iech dëse Prozess ze automatiséieren sou datt et praktesch keng Participatioun vun den Entwéckler selwer geschitt. Dofir ass de Bau wesentlech méi séier, well den Entwéckler dat net op sengem Computer muss maachen - hie schreift einfach e Stéck Code, dréckt de Code an de Repository, duerno gëtt d'Pipeline gestart, wat de Prozess kann enthalen vum Bauen, Testen, an Ausrollen. An dëst geschitt mat all Engagement, sou datt Testen kontinuéierlech geschitt.

Zur selwechter Zäit erlaabt d'Benotzung vun engem Container Iech sécher ze sinn datt d'ganz Ëmfeld vun dësem Programm an d'Produktioun genee an der Form verëffentlecht gëtt an där et getest gouf. Dat ass, et gi keng Probleemer wéi "et waren e puer Versiounen am Test, anerer an der Produktioun, awer wa mir se installéiert hunn, ass alles gefall." A zënter haut hu mir en Trend a Richtung Mikroservicearchitektur, wann amplaz vun enger rieseger Applikatioun et Honnerte vu Klenge sinn, fir se manuell ze verwalten, wäert e grousst Personal u Mataarbechter erfuerderlech sinn. Dofir benotze mir Kubernetes.

Pros, Pros, Pros


Wa mir iwwer d'Virdeeler vu Kubernetes als Plattform schwätzen, dann huet et bedeitend Virdeeler aus der Siicht vun der Gestioun vun enger Mikroservicearchitektur.

  • Multiple Repliken managen. Déi wichtegst Saach ass d'Gestioun vu Container iwwer verschidde Hosten. Méi wichteg, verwalten verschidde Applikatiounsrepliken a Container als eenzeg Entitéit. Dank dësem mussen d'Ingenieuren sech net iwwer all eenzel Container këmmeren. Wann ee vun de Container crasht, gesäit Kubernetes dëst an nei starten.
  • Cluster Netzwierk. Kubernetes huet och e sougenannte Clusternetz mat engem eegene Adressraum. Dank dësem huet all Pod seng eege Adress. E Subpod gëtt als minimal strukturell Eenheet vun engem Cluster versteet, an deem Container direkt lancéiert ginn. Zousätzlech huet Kubernetes Funktionalitéit déi e Lastbalancer a Service Discovery kombinéiert. Dëst erlaabt Iech vun der manueller IP Adressverwaltung lass ze ginn an dës Aufgab op Kubernetes ze delegéieren. An automatesch Gesondheetschecken hëllefen Probleemer z'entdecken an de Verkéier op d'Aarbechtsplazen ëmzeleeden.
  • Configuratioun Gestioun. Wann Dir eng grouss Unzuel vun Uwendungen verwalten, gëtt et schwéier d'Applikatiounskonfiguratioun ze managen. Fir dësen Zweck huet Kubernetes speziell ConfigMap Ressourcen. Si erlaben Iech Konfiguratiounen zentral ze späicheren an se op Pods auszesetzen wann Dir Uwendungen leeft. Dëse Mechanismus erlaabt eis d'Konsistenz vun der Konfiguratioun an op d'mannst zéng oder honnert Applikatiounsrepliken ze garantéieren.
  • Persistent Volumen. Container sinn inherent onverännerbar a wann de Container gestoppt gëtt, ginn all Daten, déi an de Dateiesystem geschriwwe sinn, zerstéiert. Awer e puer Uwendungen späicheren Daten direkt op Disk. Fir dëse Problem ze léisen, huet Kubernetes eng Disk Storage Management Funktionalitéit - Persistent Volumes. Dëse Mechanismus benotzt extern Späichere fir Daten a ka persistent Lagerung, Block oder Datei an Container transferéieren. Dës Léisung erlaabt Iech Daten getrennt vun den Aarbechter ze späicheren, wat se spuert wann déiselwecht Aarbechter ofbriechen.
  • Load Balancer. Och wa mir a Kubernetes abstrakt Entitéite wéi Deployment, StatefulSet, etc. Si sinn net perfekt a kënnen zu all Moment falen. Kubernetes wäert dëst gesinn an den internen Traffic op aner Repliken viruleeden. Awer wat maache mam Traffic dee vu baussen kënnt? Wann Dir einfach de Verkéier op ee vun den Aarbechter leet, wann et klappt, gëtt de Service net verfügbar. Fir dëse Problem ze léisen, huet Kubernetes Servicer wéi Load Balancer. Si sinn entwéckelt fir automatesch en externen Cloud Balancer fir all Aarbechter am Cluster ze konfiguréieren. Dësen externen Balancer riicht den externen Traffic op d'Aarbechter an iwwerwaacht hire Status selwer. Wann een oder méi Aarbechter net verfügbar sinn, gëtt de Verkéier op anerer ëmgeleet. Dëst erlaabt Iech héich verfügbare Servicer mat Kubernetes ze kreéieren.

Kubernetes funktionnéiert am Beschten wann Dir Mikroservicearchitekturen leeft. Et ass méiglech de System an der klassescher Architektur ëmzesetzen, awer et ass sënnlos. Wann eng Applikatioun net op multiple Repliken lafen kann, wat mécht et dann - a Kubernetes oder net?

Open Source Kubernetes


Open Source Kubernetes ass eng super Saach: ech hunn et installéiert an et funktionnéiert. Dir kënnt et op Ären eegene Hardware-Server ofsetzen, op Ärer eegener Infrastruktur, Masters an Aarbechter installéieren, op deenen all Applikatioune lafen. A virun allem ass dat alles gratis. Allerdéngs ginn et Nuancen.

  • Déi éischt ass d'Demande fir Wëssen an Erfarung vun Administrateuren an Ingenieuren, déi dëst alles ofsetzen an ënnerstëtzen. Well de Client eng komplett Handlungsfräiheet am Cluster kritt, ass hien verantwortlech fir d'Leeschtung vum Cluster selwer. An et ass ganz einfach alles hei ze briechen.
  • Déi zweet ass de Mangel un Integratiounen. Wann Dir Kubernetes ouni eng populär Virtualiséierungsplattform leeft, kritt Dir net all d'Virdeeler vum Programm. Wéi benotzt Persistent Volumen a Load Balancer Servicer.

Kubernetes: Open Source vs Verkeeferspezifesch

Figur 2. k8s Architektur

Kubernetes vum Verkeefer


Integratioun mat engem Cloud Provider bitt zwou Méiglechkeeten:

  • Als éischt kann eng Persoun einfach op de "Cluster erstellen" Knäppche klickt an e Cluster scho konfiguréiert a prett fir ze benotzen.
  • Zweetens, de Verkeefer selwer installéiert de Cluster an setzt d'Integratioun mat der Wollek op.

Wéi geschitt et hei. Den Ingenieur, deen de Stärekoup ufänkt, spezifizéiert wéivill Aarbechter hien brauch a mat wéi enge Parameteren (zum Beispill 5 Aarbechter, jidderee mat 10 CPUs, 16 GB RAM an, soen, 100 GB Disk). Duerno kritt en Zougang zum scho geformte Cluster. An dësem Fall sinn d'Aarbechter, op deenen d'Laascht lancéiert gëtt, komplett un de Client transferéiert ginn, awer de ganze Managementfliger bleift ënner der Verantwortung vum Verkeefer (wann de Service no dem verwalteten Servicemodell geliwwert gëtt).

Allerdéngs huet dëse Schema seng Nodeeler. Wéinst der Tatsaach, datt d'Gestioun Fliger bleift mat de Verkeefer, gëtt de Verkeefer net voll Zougang zum Client, an dëst reduzéiert Flexibilitéit an Aarbecht mat Kubernetes. Heiansdo geschitt et datt e Client e puer spezifesch Funktionalitéit op Kubernetes wëllt addéieren, Zum Beispill, Authentifikatioun iwwer LDAP, awer d'Konfiguratioun vum Gestiounsfliger erlaabt dat net.

Kubernetes: Open Source vs Verkeeferspezifesch

Figur 3. Beispill vun engem Kubernetes Stärekoup vun enger Wollek Provider

Wat ze wielen: Open Source oder Verkeefer


Also, ass Kubernetes Open Source oder Verkeefer spezifesch? Wa mir Open Source Kubernetes huelen, da mécht de Benotzer wat e wëllt mat him. Awer et ass eng grouss Chance fir Iech selwer an de Fouss ze schéissen. Mam Verkeefer ass et méi schwéier, well alles ass geduecht a fir d'Firma konfiguréiert. De gréissten Nodeel vun Open Source Kubernetes ass d'Ufuerderung fir Spezialisten. Mat enger Verkeeferoptioun ass d'Firma vun dësem Kappwéi befreit, awer et muss entscheeden ob hir Spezialisten oder de Verkeefer bezuelen.

Kubernetes: Open Source vs Verkeeferspezifesch

Kubernetes: Open Source vs Verkeeferspezifesch

Gutt, d'Virdeeler sinn offensichtlech, d'Nodeeler sinn och bekannt. Eng Saach ass konstant: Kubernetes léist vill Probleemer andeems d'Gestioun vu ville Container automatiséiert gëtt. A wéi ee fir ze wielen, Open Source oder Verkeefer - jidderee mécht seng eegen Entscheedung.

Den Artikel gouf vum Dmitry Krasnov virbereet, féierend Architekt vum Containerum Service vum #CloudMTS Provider

Source: will.com

Setzt e Commentaire