4 razloga zbog kojih biste trebali koristiti Kubernetes

Sirish Raghuram je suosnivač i izvršni direktor Platform9 Systems.

Kao što većina modernih programera softvera može potvrditi, spremnici su nam pružili dramatično veću fleksibilnost za pokretanje aplikacija u oblaku na fizičkoj i virtualnoj infrastrukturi. Spremnici pakiraju usluge koje se sastoje od aplikacije i čine ih prijenosnima u različitim računalnim okruženjima, kako za razvojnu / testnu tako i za proizvodnu upotrebu. S kontejnerima je lako brzo povećati instance aplikacija kako bi se popravili skokovi potražnje. A budući da se spremnici oslanjaju na resurse glavnog računala, oni su puno lakši od virtualnih strojeva. To znači da spremnici vrlo učinkovito koriste temeljnu poslužiteljsku infrastrukturu.

Zasada je dobro. No iako su API-ji vremena izvođenja spremnika vrlo pogodni za upravljanje pojedinačnim spremnicima, oni su krajnje neadekvatni kada je riječ o upravljanju aplikacijama koje bi mogle sadržavati stotine spremnika raspoređenih na više hostova. Spremnicima treba upravljati i povezati ih s vanjskim svijetom za zadatke kao što su raspoređivanje, uravnoteženje opterećenja i distribucija, a tu alat za orkestraciju spremnika poput Kubernetesa dolazi na svoje.

Sustav otvorenog koda za razmještanje, skaliranje i upravljanje kontejneriranim aplikacijama, Kubernetes upravlja radom raspoređivanja spremnika na računski klaster i upravlja radnim opterećenjima kako bi osigurao da se izvode onako kako je korisnik planirao. Umjesto da se na operacijama razmišlja naknadno, Kubernetes dizajnom objedinjuje razvoj softvera i operacije. Korištenjem deklarativnih, infrastrukturno-agnostičkih konstrukata za opisivanje načina na koji su aplikacije sastavljene, kako međusobno komuniciraju i kako se njima upravlja, Kubernetes omogućuje povećanje redoslijeda operativnosti suvremenih softverskih sustava.

Kubernetes je Google stvorio na temelju vlastitog iskustva u vođenju kontejnera u proizvodnji, a svoj uspjeh zasigurno duguje Googleovom sudjelovanju. Google ima neke od najtalentiranijih programera softvera na planeti i pokreće neke od najvećih softverskih usluga. Ova kombinacija osigurala je da će Kubernetes postati čvrsta platforma koja može zadovoljiti potrebe za skaliranjem gotovo svake organizacije. Ovaj članak objašnjava zašto je Kubernetes važan i zašto označava značajan korak naprijed za devopsove timove.

Povezani video: Što je Kubernetes?

U ovom videozapisu od 90 sekundi saznajte o Kubernetesu, sustavu otvorenog koda za automatizaciju kontejnerskih aplikacija, od jednog od izumitelja tehnologije, Joea Bede, osnivača i tehničkog direktora tvrtke Heptio.

Infrastrukturni okvir za danas

Ovih dana programeri su pozvani da napišu programe koji se izvode u više operativnih okruženja, uključujući namjenske poslužitelje, virtualizirane privatne oblake i javne oblake kao što su AWS i Azure. Tradicionalno su aplikacije i alati koji ih podržavaju usko povezani s temeljnom infrastrukturom, pa je bilo skupo koristiti druge modele implementacije unatoč njihovim potencijalnim prednostima. To je značilo da su aplikacije postale ovisne o određenom okruženju u nekoliko aspekata, uključujući probleme izvedbe povezane s određenom mrežnom arhitekturom; pridržavanje konstrukcija specifičnih za davatelje usluga u oblaku, poput vlastitih tehnika orkestracije; i ovisnosti o određenom pozadinskom sustavu za pohranu.

PaaS pokušava zaobići ove probleme, ali često po cijenu nametanja strogih zahtjeva u područjima poput programskih jezika i aplikacijskih okvira. Stoga je PaaS zabranjen mnogim razvojnim timovima.

Kubernetes uklanja blokiranje infrastrukture pružajući osnovne mogućnosti kontejnera bez nametanja ograničenja. To postiže kombinacijom značajki unutar platforme Kubernetes, uključujući Pods i usluge.

Bolje upravljanje modularnošću

Spremnici omogućuju razlaganje aplikacija na manje dijelove uz jasno razdvajanje problema. Sloj apstrakcije predviđen za pojedinu sliku spremnika omogućuje nam temeljno preispitivanje načina gradnje distribuiranih aplikacija. Ovaj modularni pristup omogućuje brži razvoj manjim, fokusiranijim timovima koji su odgovorni za određene kontejnere. Također nam omogućuje izoliranje ovisnosti i širu upotrebu dobro podešenih, manjih komponenata.

Ali to se ne može postići samo kontejnerima; potreban je sustav za integraciju i orkestriranje ovih modularnih dijelova. Kubernetes to postiže dijelom pomoću Pods - obično zbirke spremnika koji se kontroliraju kao jedna aplikacija. Spremnici dijele resurse, kao što su datotečni sustavi, prostori imena jezgre i IP adresa. Dopuštajući da se spremnici mogu kolocirati na ovaj način, Kubernetes uklanja iskušenje da se previše funkcija strpa u jednu sliku spremnika.

Koncept usluge u Kubernetesu koristi se za grupiranje kolekcije mahuna koje obavljaju sličnu funkciju. Usluge se mogu lako konfigurirati za otkrivanje, uočljivost, vodoravno skaliranje i uravnoteženje opterećenja.

Razmještanje i ažuriranje softvera u opsegu

Devops su se pojavili kao metoda za ubrzavanje procesa izrade, testiranja i izdavanja softvera. Njegova posljedica je pomak u naglasku s upravljanja infrastrukturom na upravljanje načinom na koji se softver primjenjuje i ažurira u opsegu. Većina infrastrukturnih okvira ne podržava ovaj model, ali Kubernetes podržava, dijelom i putem Kubernetes Controllera. Zahvaljujući kontrolerima, infrastrukturu je jednostavno koristiti za upravljanje životnim ciklusom aplikacije.

Kontroler postavljanja pojednostavljuje niz složenih zadataka upravljanja. Na primjer:

  • Skalabilnost. Softver se može po prvi puta primijeniti na način smanjenja na Podovima, a implementacije se mogu prilagoditi ili smanjiti u bilo kojem trenutku.
  • Vidljivost. Identificirajte dovršene implementacije u tijeku i neuspjele implementacije s mogućnostima postavljanja upita.
  • Ušteda vremena. Pauziranje implementacije u bilo kojem trenutku i nastavak kasnije.
  • Kontrola verzija. Ažurirajte instalirane Podove koristeći novije verzije slika aplikacija i vratite se na raniju implementaciju ako trenutna verzija nije stabilna.

Između ostalih mogućnosti, Kubernetes pojednostavljuje nekoliko specifičnih operativnih operacija implementacije koje su posebno vrijedne za programere modernih aplikacija. To uključuje sljedeće:

  • Horizontalno automatsko skaliranje. Kubernetesovi autoskaleri automatski određuju broj podsustava implementacije na temelju korištenja određenih resursa (unutar definiranih ograničenja).
  • Rolna ažuriranja. Ažuriranja razmještaja Kubernetesa organiziraju se na "rotirajući način", u svim Podovima ugradnje. Ova valjana ažuriranja organiziraju se tijekom rada s neobaveznim unaprijed definiranim ograničenjima broja Podova koji mogu biti nedostupni i broja rezervnih Podova koji mogu privremeno postojati.
  • Kanarski rasporedi. Korisni obrazac prilikom postavljanja nove verzije implementacije je prvo testiranje nove implementacije u proizvodnji, paralelno s prethodnom verzijom, i povećavanje nove implementacije uz istovremeno smanjivanje prethodne implementacije.

Za razliku od tradicionalnih, sveobuhvatnih PaaS ponuda, Kubernetes pruža široku dostupnost za vrste podržanih aplikacija. Ne diktira okvire aplikacija (kao što je Wildfly), ne ograničava podržana izvođenja jezika (Java, Python, Ruby), ne zadovoljava samo 12-faktorske aplikacije niti razlikuje „aplikacije“ od „usluga“. Kubernetes podržava širok spektar radnih opterećenja, uključujući radna opterećenja bez državljanstva, stanja i obrade podataka. Ako se aplikacija može izvoditi u spremniku, trebala bi dobro raditi na Kubernetesu.

Postavljanje temelja za aplikacije u izvornom oblaku

Ne iznenađuje s obzirom na zanimanje za kontejnere, pojavili su se drugi alati za upravljanje i orkestraciju. Popularne alternative uključuju Apache Mesos s maratonom, Docker Swarm, AWS EC2 Container Service (ECS) i HashiCorpov Nomad.

Svaka ima svoje zasluge. Docker Swarm čvrsto je povezan s Docker runtimeom, tako da korisnici mogu lako prijeći s Dockera na Swarm; Mesos s Marathonom nije ograničen na spremnike, ali može primijeniti bilo koju vrstu aplikacije; AWS ECS-u je lakši pristup trenutnim AWS korisnicima. Međutim, Kubernetes klasteri mogu se pokretati na EC2 i integrirati sa uslugama poput Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups, i tako dalje.

Ti se okviri počinju međusobno duplicirati u značajkama i funkcionalnosti, ali Kubernetes ostaje izuzetno popularan zbog svoje arhitekture, inovativnosti i velike zajednice otvorenog koda oko sebe.

Kubernetes označava proboj za devope jer omogućava timovima da idu u korak sa zahtjevima modernog razvoja softvera. U odsustvu Kubernetesa, timovi su često bili prisiljeni skriptirati vlastiti tijek implementacije, skaliranja i ažuriranja softvera. Neke organizacije zapošljavaju velike timove koji se sami bave tim zadacima. Kubernetes nam omogućuje da iz spremnika izvučemo maksimalnu korisnost i izradimo matične aplikacije koje se mogu pokretati bilo gdje, neovisno o zahtjevima specifičnim za oblak. Ovo je očito učinkovit model za razvoj aplikacija i operacija koje smo čekali.

New Tech Forum pruža mjesto za istraživanje i raspravu o novonastaloj tehnologiji poduzeća u neviđenoj dubini i širini. Izbor je subjektivan, zasnovan na našem odabiru tehnologija za koje vjerujemo da su važne i da najviše zanimaju čitatelje. ne prihvaća marketinške kolaterale za objavljivanje i zadržava pravo uređivanja cjelokupnog sadržaja. Pošaljite sve upite na [email protected]