TeknologjiDevOpsKontejnerë

Kubernetes

Kubernetes (), i njohur edhe si K8s, është një sistem orkestrimi kontejnerësh me burim të hapur për automatizimin e vendosjes, shkallëzimit dhe menaxhimit të softuerëve.

O

Oltion Elezi

·6 min lexim

1 shikime
Kubernetes

Kubernetes (), i njohur edhe si K8s, është një sistem orkestrimi kontejnerësh me burim të hapur për automatizimin e vendosjes, shkallëzimit dhe menaxhimit të softuerëve. I projektuar fillimisht nga Google, projekti tani mirëmbahet nga një komunitet mbarëbotëror kontribuesish dhe marka tregtare mbahet nga Cloud Native Computing Foundation.

Emri Kubernetes vjen nga termi i lashtë grek κυβερνήτης, kubernḗtēs (timonier, pilot), i cili është gjithashtu origjina e fjalëve kibernetikë dhe (përmes latinishtes) guvernator. "Kubernetes" shpesh shkurtohet me shkurtimin numerik "K8s", që do të thotë "shkronja K, e ndjekur nga 8 shkronja, e ndjekur nga s".

Kubernetes mbledh një ose më shumë kompjuterë, qoftë makina virtuale ose metal të pastër, në një grumbull i cili mund të ekzekutojë ngarkesa pune në kontejnerë. Ai funksionon me kohëzgjatje të ndryshme të kontejnerëve, të tilla si containerd dhe CRI-O. Përshtatshmëria e tij për ekzekutimin dhe menaxhimin e ngarkesave të punës të të gjitha madhësive dhe stileve ka çuar në përdorimin e tij të gjerë në cloud dhe qendra të të dhënave. Ekzistojnë shpërndarje të shumta të kësaj platforme - nga shitësit e pavarur të softuerëve (ISV), si dhe ofertat e hostuara në cloud nga të gjithë shitësit kryesorë publikë të cloud-it.

Softueri përbëhet nga një plan kontrolli dhe nyje mbi të cilat ekzekutohen aplikacionet aktuale. Ai përfshin mjete si kubeadm dhe kubectl të cilat mund të përdoren për të bashkëvepruar me API-në e tij të bazuar në REST.

Histori

Kubernetes u njoftua nga Google më 6 qershor 2014. Projekti u konceptua dhe u krijua nga punonjësit e Google, Joe Beda, Brendan Burns dhe Craig McLuckie. Të tjerë në Google u bashkuan shpejt për të ndihmuar në ndërtimin e projektit, përfshirë Ville Aikas, Dawn Chen, Brian Grant, Tim Hockin dhe Daniel Smith. Kompani të tjera si Red Hat dhe CoreOS iu bashkuan përpjekjes menjëherë pas kësaj, me kontribues të shquar si Clayton Coleman dhe Kelsey Hightower.

Dizajni dhe zhvillimi i Kubernetes u frymëzua nga menaxheri i klasterit Borg i Google dhe u bazua në Teorinë e Promisit. Shumë nga kontribuesit e tij kryesorë kishin punuar më parë në Borg; ata e quajtën Kubernetes "Projekti 7" sipas personazhit ish-Borg të Star Trek, Seven of Nine, dhe i dhanë logos së tij një rrotë anijeje me shtatë rreze (e dizajnuar nga Tim Hockin). Ndryshe nga Borg, i cili u shkrua në C++, Kubernetes është shkruar në gjuhën Go.

Kubernetes u njoftua në qershor 2014 dhe versioni 1.0 u publikua më 21 korrik 2015. Google punoi me Linux Foundation për të formuar Cloud Native Computing Foundation (CNCF) dhe ofroi Kubernetes si teknologjinë fillestare.

Google tashmë ofronte një shërbim të menaxhuar Kubernetes, GKE, dhe Red Hat mbështeste Kubernetes si pjesë të OpenShift që nga fillimi i projektit Kubernetes në vitin 2014. Në vitin 2017, konkurrentët kryesorë u mblodhën rreth Kubernetes dhe njoftuan shtimin e mbështetjes native për të:

  • VMware (përkrahës i Pivotal Cloud Foundry) në gusht,
  • Mesosphere, Inc. (mbështetës i Marathon dhe Mesos) në shtator,
  • Docker, Inc. (përkrahës i Docker) në tetor,
  • Microsoft Azure gjithashtu në tetor,

AWS njoftoi mbështetje për Kubernetes nëpërmjet Shërbimit Elastik Kubernetes (EKS) në nëntor.

Më 6 Mars 2018, Projekti Kubernetes arriti vendin e nëntë në listën e projekteve GitHub për nga numri i angazhimeve, dhe vendin e dytë për nga autorët dhe problemet, pas kernelit Linux.

Deri në versionin 1.18, Kubernetes ndiqte një politikë mbështetjeje N-2, që do të thotë se tre versionet më të fundit të vogla marrin përditësime sigurie dhe rregullime gabimesh. Duke filluar me versionin 1.19, Kubernetes ndjek një politikë mbështetjeje N-3.

Konceptet

Kubernetes përcakton një grup blloqesh ndërtimi ("primitivë") që së bashku ofrojnë mekanizma që vendosin, mirëmbajnë dhe shkallëzojnë aplikacionet bazuar në CPU, memorie ose metrika të personalizuara. Kubernetes është i lidhur lirshëm dhe i zgjerueshëm për të përmbushur nevojat e ngarkesave të ndryshme të punës. Komponentët e brendshëm, si dhe zgjerimet dhe kontejnerët që funksionojnë në Kubernetes, mbështeten në API-n e Kubernetes.

Platforma ushtron kontrollin e saj mbi burimet llogaritëse dhe të ruajtjes duke i përcaktuar burimet si objekte, të cilat më pas mund të menaxhohen si të tilla.

Kubernetes ndjek arkitekturën primare/replikë. Komponentët e Kubernetes mund të ndahen në ato që menaxhojnë një nyje individuale dhe ato që janë pjesë e planit të kontrollit.

Plani i kontrollit

Plani i kontrollit Kubernetes menaxhon ngarkesën e tij të punës dhe drejton komunikimin në të gjithë sistemin. Ai përbëhet nga komponentë të ndryshëm si enkriptimi TLS, kontrolli i aksesit i bazuar në role (RBAC) dhe një metodë e fortë vërtetimi, ndarja e rrjetit, secila me procesin e vet, që mund të funksionojë si në një nyje të vetme ashtu edhe në nyje të shumta duke mbështetur grupe me disponueshmëri të lartë. Komponentët e ndryshëm të planit të kontrollit Kubernetes janë si më poshtë.

etj.

Etcd është një depo e vazhdueshme, e lehtë, e shpërndarë dhe e të dhënave me vlerë çelësi (fillimisht e zhvilluar si pjesë e CoreOS). Ai ruan në mënyrë të besueshme të dhënat e konfigurimit të klasterit, duke përfaqësuar gjendjen e përgjithshme të klasterit në çdo moment të caktuar kohor. Etcd favorizon qëndrueshmërinë mbi disponueshmërinë në rast të një ndarjeje të rrjetit (shih teoremën CAP). Konsistenca është thelbësore për planifikimin dhe operimin e saktë të shërbimeve.

Serveri i API-t

Serveri API i shërben API-t të Kubernetes duke përdorur JSON mbi HTTPS, i cili ofron ndërfaqen e brendshme dhe të jashtme për Kubernetes. Serveri API përpunon, validon kërkesat REST dhe përditëson gjendjen e objekteve API në etcd, duke u lejuar kështu klientëve të konfigurojnë ngarkesat e punës dhe kontejnerët në të gjitha nyjet e punëtorëve. Serveri API përdor API-në e vëzhgimit të etcd për të monitoruar klasterin, për të zbatuar ndryshime kritike të konfigurimit ose për të rikthyer çdo divergjencë të gjendjes së klasterit në gjendjen e dëshiruar siç është deklaruar në etcd.

Si shembull, një operator njerëzor mund të specifikojë që duhet të jenë në ekzekutim tre instanca të një "pod"-i të caktuar (shih më poshtë), dhe etcd e ruan këtë fakt. Nëse kontrolluesi i Vendosjes zbulon se janë në ekzekutim vetëm dy instanca (në konflikt me deklaratën etcd), ai planifikon krijimin e një instance shtesë të atij pod-i.

Planifikuesi

Planifikuesi është një komponent i zgjerueshëm që zgjedh nyjen në të cilën ekzekutohet një grup i paplanifikuar (njësia bazë e ngarkesave të punës që do të planifikohen), bazuar në disponueshmërinë e burimeve dhe kufizime të tjera. Planifikuesi gjurmon shpërndarjen e burimeve në secilën nyje për të siguruar që ngarkesa e punës të mos planifikohet përtej burimeve të disponueshme. Për këtë qëllim, planifikuesi duhet të dijë kërkesat e burimeve, disponueshmërinë e burimeve dhe kufizime të tjera të ofruara nga përdoruesi ose direktiva të politikave, të tilla si cilësia e shërbimit, kërkesat e afinitetit/anti-afinitetit dhe lokaliteti i të dhënave. Roli i planifikuesit është të përputhë "furnizimin" e burimeve me "kërkesën" e ngarkesës së punës.

Kubernetes lejon ekzekutimin e shumë planifikuesve brenda një klasteri të vetëm. Si të tilla, shtojcat e planifikuesve mund të zhvillohen dhe instalohen si zgjerime në proces të planifikuesit origjinal duke e ekzekutuar atë si një planifikues të veçantë, për sa kohë që ato përputhen me strukturën e planifikimit Kubernetes. Kjo u lejon administratorëve të klasterit të zgjerojnë ose modifikojnë sjelljen e planifikuesit të parazgjedhur Kubernetes sipas nevojave të tyre.

Kontrolluesit

Një kontrollues është një lak pajtimi që e drejton gjendjen aktuale të klasterit drejt gjendjes së dëshiruar, duke komunikuar me serverin API për të krijuar, përditësuar dhe fshirë burimet që menaxhon (p.sh., pod-e ose pika fundore të shërbimit).


Lexoni më tej

Docker (softuer)

Docker është një grup produktesh që përdor virtualizimin në nivel sistemi operativ për të ofruar softuer në paketa të quajtura kontejnerë. Docker automatizon vendosjen e aplikacioneve brenda kontejnerëve të lehtë, duke i mundësuar ato të funksionojnë në mënyrë të qëndrueshme në…

Konteinerizimi (informatika)

Në inxhinierinë e softuerëve, kontejnerizimi është virtualizim në nivel sistemi operativ ose virtualizim në nivel aplikacioni mbi burime të shumëfishta, në mënyrë që aplikacionet softuerike të mund të funksionojnë në hapësira të izoluara përdoruesish të quajtura kontejnerë në…

Makinë virtuale

Në informatikë, një makinë virtuale (VM) është virtualizimi ose emulimi i një sistemi kompjuterik. Makinat virtuale bazohen në arkitekturat kompjuterike dhe ofrojnë funksionalitetin e një kompjuteri fizik.

O

Shkruar nga

Oltion Elezi

Founder & CEO of Elei Soft