Programiranje

4 razlogi, da bi morali uporabljati zdravilo Kubernetes

Sirish Raghuram je soustanovitelj in izvršni direktor Platform9 Systems.

Kot lahko potrdi večina sodobnih razvijalcev programske opreme, so nam kontejnerji zagotovili bistveno večjo prilagodljivost pri zagonu aplikacij, ki temeljijo na oblaku, na fizični in navidezni infrastrukturi. Zabojniki pakirajo storitve, ki vsebujejo aplikacijo, in jih naredijo prenosne v različnih računalniških okoljih, tako za razvojno / testno kot tudi za proizvodno uporabo. S kontejnerji lahko hitro razširite primerke aplikacij, da se ujemajo z večjimi povpraševanji. In ker vsebniki črpajo iz virov gostiteljskega OS, so veliko lažji od navideznih strojev. To pomeni, da zabojniki zelo učinkovito uporabljajo osnovno strežniško infrastrukturo.

Zaenkrat dobro. Čeprav so API-ji za izvajanje vsebnikov zelo primerni za upravljanje posameznih vsebnikov, so zelo neustrezni, ko gre za upravljanje aplikacij, ki bi lahko obsegale stotine vsebnikov, razporejenih na več gostiteljih. Zabojnike je treba upravljati in povezati z zunanjim svetom za naloge, kot so razporejanje, uravnoteženje obremenitve in distribucija, in tu pride na vrsto orodje za orkestracijo zabojnikov, kot je Kubernetes.

Odprtokodni sistem za uvajanje, spreminjanje velikosti in upravljanje kontejnerskih aplikacij, Kubernetes ureja delo razporejanja vsebnikov v računski gruči in upravlja delovne obremenitve, da zagotovi, da delujejo, kot je predvidel uporabnik. Namesto, da bi Kubernetes vnaprej razmišljal o operacijah, načrtno združuje razvoj programske opreme in operacije. Z uporabo deklarativnih infrastrukturno-agnostičnih konstruktov, ki opisujejo, kako so sestavljene aplikacije, kako medsebojno delujejo in kako se z njimi upravlja, Kubernetes omogoča povečanje operativnosti sodobnih programskih sistemov za večji vrstni red.

Kubernetes je Google zgradil na podlagi lastnih izkušenj pri zagonu kontejnerjev v proizvodnji in svoj uspeh zagotovo dolguje Googlovi udeležbi. Google ima nekaj najbolj nadarjenih razvijalcev programske opreme na svetu in izvaja nekatere največje programske storitve po obsegu. Ta kombinacija je zagotovila, da bo Kubernetes postal trdna platforma, ki bo lahko zadostila potrebam skoraj vseh organizacij. Ta članek pojasnjuje, zakaj je Kubernetes pomemben in zakaj pomeni pomemben korak naprej za ekipe devopsa.

Povezani video: Kaj je Kubernetes?

V tem 90-sekundnem videoposnetku se o Kubernetesu, odprtokodnem sistemu za avtomatizacijo kontejnerskih aplikacij, seznanite od enega od izumiteljev tehnologije Joeja Bede, ustanovitelja in tehničnega direktorja podjetja Heptio.

Današnji infrastrukturni okvir

Danes so razvijalci pozvani k pisanju aplikacij, ki se izvajajo v več operacijskih okoljih, vključno z namenskimi vgrajenimi strežniki, virtualiziranimi zasebnimi oblaki in javnimi oblaki, kot sta AWS in Azure. Tradicionalno so bili programi in orodja, ki jih podpirajo, tesno povezani z osnovno infrastrukturo, zato je bilo drago uporabljati druge modele uvajanja kljub njihovim potencialnim prednostim. To je pomenilo, da so aplikacije postale odvisne od določenega okolja v več pogledih, vključno z vprašanji zmogljivosti, povezanimi z določeno mrežno arhitekturo; spoštovanje konstruktov, specifičnih za ponudnike oblakov, kot so lastniške tehnike orkestracije; in odvisnosti od določenega zalednega sistema za shranjevanje.

PaaS skuša rešiti ta vprašanja, vendar pogosto za ceno vsiljevanja strogih zahtev na področjih, kot so programski jeziki in ogrodja aplikacij. Tako je PaaS za številne razvojne skupine izključen.

Kubernetes odpravlja zaklepanje infrastrukture z zagotavljanjem osnovnih zmogljivosti zabojnikov brez uvedbe omejitev. To doseže s kombinacijo funkcij znotraj platforme Kubernetes, vključno s podom in storitvami.

Boljše upravljanje z modularnostjo

Zabojniki omogočajo razgradnjo aplikacij na manjše dele z jasnim ločevanjem skrbi. Abstrakcijski sloj, ki je na voljo za posamezno sliko posode, nam omogoča, da temeljito premislimo, kako so zgrajene porazdeljene aplikacije. Ta modularni pristop omogoča hitrejši razvoj manjših, bolj osredotočenih skupin, ki so odgovorne za določene zabojnike. Omogoča nam tudi ločevanje odvisnosti in širšo uporabo dobro nastavljenih manjših komponent.

A tega ne morejo doseči samo zabojniki; zahteva sistem za integracijo in orkestriranje teh modularnih delov. Kubernetes to deloma doseže z uporabo Pods - običajno zbirko vsebnikov, ki jih nadzorujemo kot en sam program. Vsebniki si delijo vire, kot so datotečni sistemi, imenski prostori jedra in naslov IP. Če dovoli, da se vsebniki sestavijo na ta način, Kubernetes odstrani skušnjavo, da bi preveč funkcij strnil v eno sliko vsebnika.

Koncept storitve v Kubernetesu se uporablja za združevanje zbirke strokov, ki opravljajo podobno funkcijo. Storitve je mogoče enostavno konfigurirati za odkrivanje, opaznost, vodoravno skaliranje in uravnoteženje obremenitve.

Uvajanje in posodabljanje programske opreme v obsegu

Devops so se pojavili kot metoda za pospešitev postopka izdelave, testiranja in izdaje programske opreme. Posledica tega je preusmeritev poudarka z upravljanja infrastrukture na upravljanje razširjanja in posodabljanja programske opreme. Večina infrastrukturnih okvirov tega modela ne podpira, Kubernetes pa ga podpira, deloma prek Kubernetes Controllerjev. Zahvaljujoč krmilnikom je enostavna uporaba infrastrukture za upravljanje življenjskega cikla aplikacije.

Krmilnik razmestitve poenostavlja številne zapletene naloge upravljanja. Na primer:

  • Razširljivost. Programsko opremo je mogoče prvič uvesti v razširjenem načinu na Pods in razmestitve lahko kadar koli prilagodite ali razširite.
  • Vidnost. Ugotovite dokončane, v postopku in neuspešne razmestitve z možnostmi poizvedb stanja.
  • Prihranek časa. Uvajanje kadar koli zaustavite in nadaljujte pozneje.
  • Nadzor različic. Posodobite uvedene Pods z novejšimi različicami slik aplikacij in se vrnite na prejšnjo razmestitev, če trenutna različica ni stabilna.

Med drugimi možnostmi Kubernetes poenostavi nekaj specifičnih operacij uvajanja, ki so še posebej dragocene za razvijalce sodobnih aplikacij. Sem spadajo naslednje:

  • Horizontalno samodejno skaliranje. Kubernetesovi samodejni skalatorji samodejno prilagodijo število pod-strežkov razmestitve glede na uporabo določenih virov (v določenih mejah).
  • Tekoče posodobitve. Posodobitve uvajanja Kubernetesa so organizirane na "tekoč način" po vseh podseh uvajanja. Te tekoče posodobitve se pripravijo pri delu z neobveznimi vnaprej določenimi omejitvami števila pods, ki so lahko nedostopne, in števila nadomestnih pod, ki lahko začasno obstajajo.
  • Kanarske razmestitve. Koristni vzorec pri uvajanju nove različice uvajanja je, da najprej preizkusite novo uvajanje v proizvodnji, vzporedno s prejšnjo različico, in razširite novo uvajanje, hkrati pa zmanjšate prejšnjo uvajanje.

V nasprotju s tradicionalnimi ponudbami PaaS, ki vključujejo, Kubernetes ponuja široko širino za vrste podprtih aplikacij. Ne narekuje ogrodja aplikacij (kot je Wildfly), ne omejuje podprtega časa izvajanja jezika (Java, Python, Ruby), ne skrbi samo za 12-faktorne programe ali razlikuje med "aplikacijami" in "storitvami". Kubernetes podpira široko paleto delovnih obremenitev, vključno z delovnimi obremenitvami brez državljanstva, državami in obdelavo podatkov. Če se aplikacija lahko izvaja v vsebniku, bi morala dobro delovati na Kubernetesu.

Postavitev temeljev za aplikacije v domačem oblaku

Glede na zanimanje za zabojnike ni presenetljivo, da so se pojavila druga orodja za upravljanje in orkestracijo. Priljubljene alternative vključujejo Apache Mesos z maratonom, Docker Swarm, AWS EC2 Container Service (ECS) in HashiCorpov Nomad.

Vsak ima svoje prednosti. Docker Swarm je tesno povezan z izvajanjem Dockerja, tako da lahko uporabniki enostavno preidejo iz Dockerja v Swarm; Mesos z Marathonom ni omejen na zabojnike, lahko pa uporabi kakršno koli aplikacijo; AWS ECS je lažji dostop trenutnim uporabnikom AWS. Vendar lahko grozdi Kubernetes delujejo na EC2 in se integrirajo s storitvami, kot so Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups itd.

Ti okviri se med seboj začnejo podvajati po značilnostih in funkcionalnosti, a Kubernetes ostaja izjemno priljubljen zaradi svoje arhitekture, inovativnosti in velike odprtokodne skupnosti okoli sebe.

Kubernetes označuje preboj za devops, ker omogoča ekipam, da sledijo zahtevam sodobnega razvoja programske opreme. V odsotnosti Kubernetesa so bile skupine pogosto prisiljene oblikovati lastne postopke uvajanja, spreminjanja in posodabljanja programske opreme. Nekatere organizacije zaposlujejo velike ekipe, ki se same ukvarjajo s temi nalogami. Kubernetes nam omogoča, da iz kontejnerjev pridobimo največjo koristnost in izdelamo aplikacije, ki temeljijo na oblaku in se lahko izvajajo kjer koli, neodvisno od zahtev v oblaku. To je očitno učinkovit model za razvoj aplikacij in operacij, ki smo ga čakali.

Forum New Tech ponuja prizorišče za raziskovanje in razpravo o nastajajoči podjetniški tehnologiji v globini in širini brez primere. Izbor je subjektiven in temelji na našem izboru tehnologij, za katere menimo, da so pomembne in najbolj zanimajo bralce. ne sprejema tržnih zavarovanj za objavo in si pridržuje pravico do urejanja celotne prispevane vsebine. Vsa vprašanja pošljite na [email protected]