Što je Kubernetes? Sljedeća platforma za prijavu

Kubernetes je popularna platforma otvorenog koda za orkestraciju spremnika - odnosno za upravljanje aplikacijama izgrađenim od višestrukih, uglavnom samostalnih runtimeova koji se nazivaju spremnici. Spremnici postaju sve popularniji od pokretanja projekta kontejneriranja Docker 2013. godine, ali velike, distribuirane kontejnerirane aplikacije mogu postati sve teže koordinirati. Zahvaljujući dramatičnom jednostavnijem upravljanju kontejnerskim aplikacijama, Kubernetes je postao ključni dio revolucije kontejnera.

Što je orkestracija kontejnera?

Spremnici podržavaju razdvajanje problema nalik VM-u, ali s daleko manje troškova i daleko većom fleksibilnošću. Kao rezultat toga, spremnici su preoblikovali način na koji ljudi razmišljaju o razvoju, postavljanju i održavanju softvera. U kontejneriziranoj arhitekturi, različite usluge koje čine aplikaciju pakiraju se u zasebne spremnike i raspoređuju na klasteru fizičkih ili virtualnih strojeva. Ali to dovodi do potrebe za orkestracijom spremnika - alatom koji automatizira postavljanje, upravljanje, skaliranje, umrežavanje i dostupnost aplikacija temeljenih na spremnicima.

Što je Kubernetes?

Kubernetes je projekt otvorenog koda koji je postao jedan od najpopularnijih alata za orkestraciju kontejnera; omogućuje vam razmještanje i upravljanje aplikacijama s više spremnika u velikoj mjeri. Iako se u praksi Kubernetes najčešće koristi s Dockerom, najpopularnijom platformom za kontejnerizaciju, može raditi i sa bilo kojim sustavom spremnika koji je u skladu sa standardima Open Container Initiative (OCI) za formate slika spremnika i vrijeme izvođenja. A budući da je Kubernetes otvoreni izvor, s relativno malo ograničenja kako se može koristiti, može ga slobodno koristiti svatko tko želi pokretati spremnike, najviše bilo gdje gdje želi da ih pokreće - u lokalu, u javnom oblaku ili oboje .

Google i Kubernetes

Kubernetes je započeo život kao projekt u Googleu. Nasljednik je - iako ne izravni potomak - Google Borga, ranijeg alata za upravljanje spremnicima koji je Google interno koristio. Google je 2014. otvorio izvor Kubernetes, dijelom i zbog toga što arhitektura distribuiranih mikroservisa koju Kubernetes olakšava olakšava pokretanje aplikacija u oblaku. Google prihvaćanje spremnika, mikroservisa i Kubernetesa vidi kao potencijalno usmjeravanje kupaca na svoje usluge u oblaku (iako Kubernetes zasigurno radi i s Azureom i AWS-om). Kubernetes trenutno održava Cloud Native Computing Foundation, koja je i sama pod kišobranom Linux Foundation.

Kubernetes protiv Dockera i Kubernetes protiv Dockera Roj

Kubernetes ne zamjenjuje Dockera, već ga povećava. Međutim, Kubernetes se zamijeniti neke od tehnologija na višim razinama koje su se pojavile oko lučki radnik.

Jedna od takvih tehnologija je Docker Swarm, orkestrator u paketu s Dockerom. Još uvijek je moguće koristiti Docker Swarm umjesto Kubernetesa, ali Docker Inc. je odlučio Kubernetes učiniti dijelom Docker Community i Docker Enterprise izdanja koja idu dalje.

Nije da je Kubernetes zamjena za Docker Swarm. Kubernetes je znatno složeniji od Swarma i zahtijeva više posla za raspoređivanje. Ali opet, radom se želi dugoročno pružiti velika isplativost - upravljivija, otpornija infrastruktura aplikacija. Za razvojne radove i manje klastere kontejnera, Docker Swarm predstavlja jednostavniji izbor. 

Kubernetes protiv Mesosa

Još jedan projekt za koji ste možda čuli kao konkurenta Kubernetesu je Mesos . Mesos je Apache projekt koji je izvorno nastao od programera na Twitteru; zapravo se na to gledalo kao na odgovor na projekt Google Borg.

Mesos zapravo nudi usluge orkestracije kontejnera, ali njegove ambicije idu daleko dalje od toga: želi biti vrsta operativnog sustava u oblaku koji može koordinirati i kontejnerirane i nekontejnerirane komponente. U tu svrhu unutar Mesosa može raditi puno različitih platformi - uključujući i sam Kubernetes.

Kubernetesova arhitektura: kako Kubernetes radi

Kubernetesova arhitektura koristi se raznim konceptima i apstrakcijama. Neke od njih su varijacije postojećih, poznatih pojmova, ali druge su specifične za Kubernetes.

Skupine Kubernetes

Apstrakcija Kubernetesa na najvišoj razini, klaster , odnosi se na skupinu strojeva koji pokreću Kubernetes (sam po sebi klasteriranu aplikaciju) i spremnike kojima njime upravlja. Klaster Kubernetes mora imati master , sustav koji zapovijeda i kontrolira sve ostale Kubernetesove strojeve u klasteru. Izuzetno dostupan Kubernetes klaster replicira gospodareve mogućnosti na više strojeva. Ali samo jedan master istodobno pokreće planer poslova i upravitelj kontrolera.

Čvorovi i mahune Kubernetesa

Svaka klaster sadrži Kubernetesove čvorove . Čvorovi mogu biti fizički strojevi ili VM-ovi. Ponovno, ideja je apstrakcija: bez obzira na to koja se aplikacija izvršava, Kubernetes upravlja postavljanjem na toj podlozi. Kubernetes čak omogućuje osiguravanje da određeni spremnici rade samo na VM-ima ili samo na golom metalu.

Čvorovi pokreću mahune , najosnovnije Kubernetesove objekte koji se mogu stvoriti ili upravljati njima. Svaka mahuna predstavlja jednu instancu aplikacije ili pokrenutog postupka u Kubernetesu, a sastoji se od jednog ili više spremnika. Kubernetes pokreće, zaustavlja i umnožava sve spremnike u mahuni kao grupu. Podovi zadržavaju pažnju korisnika na aplikaciji, a ne na samim spremnicima. Pojedinosti o tome kako treba konfigurirati Kubernetes, od stanja mahuna naviše, čuvaju se u Etcd , distribuiranoj trgovini ključeva i vrijednosti.

Podovi se stvaraju i uništavaju na čvorovima po potrebi kako bi se prilagodili željenom stanju koje je korisnik odredio u definiciji podova. Kubernetes pruža apstrakciju koja se naziva kontroler za bavljenje logistikom kako se mahune vrte , kotrljaju i okreću prema dolje. Upravljači dolaze u nekoliko različitih okusa, ovisno o vrsti aplikacije kojom se upravlja. Na primjer, nedavno predstavljeni kontroler “StatefulSet” koristi se za rješavanje aplikacija kojima treba trajno stanje. Druga vrsta kontrolera, implementacija , koristi se za skaliranje aplikacije prema gore ili prema dolje, ažuriranje aplikacije na novu verziju ili vraćanje aplikacije na poznatu i dobru verziju ako postoji problem.

Kubernetes usluge

Budući da mahune žive i umiru po potrebi, potrebna nam je drugačija apstrakcija za rješavanje životnog ciklusa aplikacije. Aplikacija bi trebala biti trajni entitet, čak i kada mahune koje pokreću spremnike koji čine aplikaciju nisu same trajne. U tu svrhu Kubernetes pruža apstrakciju koja se naziva usluga.

Usluga u Kubernetesu opisuje kako se određenoj skupini mahuna (ili drugim Kubernetes objektima) može pristupiti putem mreže. Kao što kaže Kubernetesova dokumentacija, mahune koje čine pozadinu aplikacije mogu se promijeniti, ali prednja strana ne bi trebala znati za to ili je pratiti. Usluge to omogućuju.

Još nekoliko internih dijelova Kubernetesa zaokružuje sliku. U planer parcele izvan radnog opterećenja u čvorovima, tako da oni balanced preko sredstava te da implementacija ispunjavaju zahtjeve definicijama primjene. Upravitelj kontrolera osigurava da se stanje sustava - aplikacije, radna opterećenja itd. - podudara sa željenim stanjem definiranim u Etcd-ovim konfiguracijskim postavkama.

Važno je imati na umu da niti jedan od mehanizama niske razine koje koriste kontejneri, poput samog Dockera , nije zamijenjen Kubernetesom. Umjesto toga, Kubernetes nudi veći skup apstrakcija za upotrebu ovih mehanizama radi održavanja aplikacija u velikom opsegu.

Kubernetes Ingress

Za usluge Kubernetesa smatra se da rade unutar klastera. No, morat ćete im omogućiti pristup tim uslugama iz vanjskog svijeta. Kubernetes ima nekoliko komponenata koje to olakšavaju s različitim stupnjevima jednostavnosti i robusnosti, uključujući NodePort i LoadBalancer, ali komponenta s najviše fleksibilnosti je Ingress. Ingress je API koji upravlja vanjskim pristupom uslugama klastera, obično putem HTTP-a.

Za pravilno postavljanje Ingressa potrebna je malo konfiguracije - Matthew Palmer, koji je napisao knjigu o razvoju Kubernetesa, vodi vas kroz postupak na svojoj web stranici.

Kubernetes nadzorna ploča

Jedna Kubernetesova komponenta koja vam pomaže da budete u vrhu nad svim ostalim komponentama je Nadzorna ploča, internetsko sučelje temeljeno na webu pomoću kojeg možete instalirati i rješavati probleme s aplikacijama i upravljati resursima klastera. Nadzorna ploča nije instalirana prema zadanim postavkama, ali dodavanje nije prevelika poteškoća.

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.

Kubernetesove prednosti

Budući da Kubernetes uvodi nove apstrakcije i koncepte, a budući da je krivulja učenja za Kubernetes visoka, normalno je pitati se koliki su dugoročni dobici za upotrebu Kubernetesa. Evo pregleda nekih specifičnih načina na koje pokretanje aplikacija unutar Kubernetesa postaje lakše.

Kubernetes za vas upravlja zdravljem aplikacija, replikacijom, uravnoteženjem opterećenja i dodjelom hardverskih resursa

Jedna od najosnovnijih dužnosti koje Kubernetes skida s vas je zauzeto održavanje aplikacija, pokretanje i reagiranje na zahtjeve korisnika. Aplikacije koje postanu „nezdrave“ ili nisu u skladu s definicijom zdravlja koju im opisujete mogu se automatski izliječiti.

Sljedeća pogodnost koju Kubernetes pruža je maksimiziranje upotrebe hardverskih resursa, uključujući memoriju, I / O pohranu i mrežnu propusnost. Programi mogu imati meka i tvrda ograničenja upotrebe svojih resursa. Mnoge aplikacije koje koriste minimalne resurse mogu se spakirati na isti hardver; aplikacije koje se trebaju razvući mogu se postaviti na sustave gdje imaju prostora za rast. I opet, uvođenje ažuriranja kroz klaster ili vraćanje u slučaju da se ažuriranja pokvare, može se automatizirati.

Kubernetes olakšava postavljanje unaprijed konfiguriranih aplikacija s Helmovim kartama

Upravitelji paketima poput Debian Linuxa APT i Python Pip štede korisnike pri ručnoj instalaciji i konfiguriranju aplikacije. To je posebno zgodno kada aplikacija ima više vanjskih ovisnosti.

Helm je u osnovi voditelj paketa za Kubernetes. Mnoge popularne softverske aplikacije moraju se izvoditi u Kubernetesu kao skupina međusobno ovisnih spremnika. Helm pruža mehanizam definicije, "grafikon", koji opisuje kako se aplikacija ili usluga mogu pokretati kao skupina spremnika unutar Kubernetesa.

Možete stvoriti vlastite ljestvice Helm ispočetka, a možda ćete morati i ako gradite prilagođenu aplikaciju za internu implementaciju. Ali ako koristite popularnu aplikaciju koja ima zajednički obrazac implementacije, velika je vjerojatnost da je netko već sastavio Helmovu tablicu za nju i objavio je u službenom spremištu grafikona Helm. Još jedno mjesto na kojem treba potražiti službene Helmove ljestvice je katalog Kubeapps.com.

Kubernetes pojednostavljuje upravljanje pohranom, tajnama i drugim resursima povezanim s aplikacijama

Kontejneri su nepromjenjivi; sve što u njih stavite ne bi se trebalo promijeniti. Ali aplikacije trebaju stanje, što znači da im je potreban pouzdan način za rješavanje vanjskih volumena pohrane. To je sve komplicirano načinom na koji spremnici žive, umiru i ponovno se rađaju tijekom trajanja aplikacije.

Kubernetes pruža apstrakcije koje omogućuju spremnicima i aplikacijama da se bave pohranom na isti razdvojeni način kao i drugi resursi. Mnogo uobičajenih vrsta pohrane, od Amazon EBS volumena do običnih starih NFS dionica, može se pristupiti putem Kubernetes upravljačkih programa za pohranu, nazvanih volumeni. Obično su volumeni vezani uz određenu mahunu, ali podtip volumena koji se naziva "Perzistentni volumen" može se koristiti za podatke koji trebaju živjeti neovisno o bilo kojem bloku.

Spremnici često trebaju raditi s "tajnama" - vjerodajnicama kao što su API ključevi ili lozinke za usluge za koje ne želite da budu kodirane u spremnik ili otvoreno spremljene na disk. Iako su za to dostupna rješenja nezavisnih proizvođača, poput Docker tajni i HashiCorp Vault, Kubernetes ima vlastiti mehanizam za izvorno rukovanje tajnama, iako ga treba pažljivo konfigurirati. Na primjer, Etcd mora biti konfiguriran da koristi SSL / TLS prilikom slanja tajni između čvorova, umjesto u običnom tekstu. 

Kubernetes aplikacije mogu se izvoditi u hibridnim okruženjima i okruženjima s više oblaka

Jedan od dugogodišnjih snova računalstva u oblaku je mogućnost pokretanja bilo koje aplikacije u bilo kojem oblaku ili u bilo kojoj mješavini oblaka, javnih ili privatnih. Ovo nije samo da bi se izbjeglo zaključavanje dobavljača, već i da bi se iskoristile značajke specifične za pojedine oblake.

Kubernetes nudi skup primitiva, zajednički poznatih kao federacija, za međusobno sinkroniziranje više klastera u više regija i oblaka. Na primjer, dano postavljanje aplikacije može se održati dosljednim između više klastera, a različiti klasteri mogu dijeliti otkrivanje usluga tako da se pozadinskom resursu može pristupiti iz bilo kojeg klastera. Federacija se također može koristiti za stvaranje visoko dostupnih Kubernetesovih rasporeda ili otpornih na greške, bez obzira obuhvaćate li više oblačnih okruženja ili ne.

Federacija je još uvijek relativno nova za Kubernetes. Još nisu podržani svi API resursi u federalnim instancama, a nadogradnje još nemaju infrastrukturu automatskog testiranja. Ali ti nedostaci trebali bi se riješiti u budućim verzijama Kubernetesa.

Gdje nabaviti Kubernetesa