Programiranje

Kaj je Kubernetes? Vaša naslednja platforma za prijavo

Kubernetes je priljubljena odprtokodna platforma za orkestracija zabojnikov - to je za upravljanje aplikacij, zgrajenih iz več, v glavnem samostojnih izvajalnih delov posode. Zabojniki postajajo vse bolj priljubljeni, odkar se je leta 2013 začel projekt kontejneriranja Docker, vendar je velike, razpršene kontejnerske aplikacije vse težje usklajevati. Z izjemno enostavnim upravljanjem kontejnerskih aplikacij je Kubernetes postal ključni del revolucije kontejnerjev.

Kaj je orkestracija zabojnikov?

Zabojniki podpirajo ločevanje skrbi, podobnih VM, vendar z veliko manjšo porabo in veliko večjo prilagodljivostjo. Posledično so vsebniki preoblikovali način razmišljanja ljudi o razvoju, uvajanju in vzdrževanju programske opreme. V kontejnerski arhitekturi so različne storitve, ki sestavljajo aplikacijo, zapakirane v ločene vsebnike in razmeščene v gruči fizičnih ali navideznih strojev. Toda to povzroča potrebo po orkestracija zabojnikov—Orodje, ki avtomatizira uvajanje, upravljanje, spreminjanje velikosti, mreženje in razpoložljivost aplikacij na osnovi vsebnikov.

Kaj je Kubernetes?

Kubernetes je odprtokodni projekt, ki je postal eno najbolj priljubljenih orodij za orkestracijo zabojnikov; omogoča razširjanje in upravljanje aplikacij z več vsebniki v velikem obsegu. Medtem ko se Kubernetes v praksi najpogosteje uporablja z Dockerjem, najbolj priljubljeno platformo za kontejnerizacijo, lahko deluje tudi s katerim koli sistemom kontejnerjev, ki je skladen s standardi Open Intainer Initiative (OCI) za formate slik vsebnikov in čas izvajanja. In ker je Kubernetes odprtokoden, z razmeroma malo omejitvami glede njegove uporabe, ga lahko prosto uporablja vsak, ki želi zagnati zabojnike, večino kjer koli želi, da jih zažene - v krajih, v javnem oblaku ali oboje .

Google in Kubernetes

Kubernetes je začel življenje kot projekt v Googlu. Je naslednik - čeprav ne neposreden potomec - Googla Borg, prejšnjega orodja za upravljanje vsebnikov, ki ga je Google uporabljal interno. Google je leta 2014 odprl vir Kubernetes, deloma tudi zato, ker arhitekture porazdeljenih mikro storitev, ki jih Kubernetes omogoča, olajšajo zagon aplikacij v oblaku. Google sprejetje zabojnikov, mikro storitev in Kubernetes vidi kot potencialno usmerjanje kupcev k svojim oblačnim storitvam (čeprav Kubernetes zagotovo deluje tudi z Azure in AWS). Kubernetes trenutno vzdržuje Cloud Native Computing Foundation, ki je tudi sama pod okriljem Linux Foundation.

Kubernetes proti Dockerju in Kubernetes proti Docker Swarmu

Kubernetes ne zamenja Dockerja, ampak ga poveča. Vendar Kubernetes naredi nadomestiti nekatere tehnologije na višji ravni, ki so se pojavile okoli Dockerja.

Ena takih tehnologij je Docker Swarm, orkestrator v paketu z Dockerjem. Še vedno je mogoče uporabljati Docker Swarm namesto Kubernetesa, vendar se je Docker Inc. odločil, da bo Kubernetes del izdaje Docker Community in Docker Enterprise naprej.

Pa ne, da je Kubernetes zamenjava Docker Swarma. Kubernetes je bistveno bolj zapleten kot Swarm in za uvajanje zahteva več dela. Toda spet je namen dela zagotoviti dolgoročno veliko izplačilo - bolj obvladljivo in odporno aplikacijsko infrastrukturo. Za razvojno delo in manjše grozde zabojnikov Docker Swarm predstavlja enostavnejšo izbiro.

Kubernetes proti Mesosu

Še en projekt, za katerega ste morda že slišali kot konkurent Kubernetesu, je Mesos. Mesos je projekt Apache, ki se je prvotno pojavil pri razvijalcih na Twitterju; pravzaprav je bil videti kot odgovor na projekt Google Borg.

Mesos dejansko ponuja storitve orkestracije zabojnikov, vendar njegove ambicije presegajo to: njegov cilj je biti nekakšen operacijski sistem v oblaku, ki lahko usklajuje tako kontejnerske kot nekontejnerirane komponente. V ta namen lahko znotraj Mesosa deluje veliko različnih platform, vključno s samim Kubernetesom.

Arhitektura Kubernetes: Kako deluje Kubernetes

Kubernetesova arhitektura uporablja različne koncepte in abstrakcije. Nekatere so različice obstoječih, znanih pojmov, druge pa so značilne za Kubernetes.

Grozdi Kubernetes

Najvišja abstrakcija Kubernetes, grozd, se nanaša na skupino strojev, na katerih je nameščen Kubernetes (sam je grozdna aplikacija), in vsebnike, ki jih ta upravlja. Skupina Kubernetes mora imeti mojster, sistem, ki ukazuje in nadzoruje vse druge stroje Kubernetes v gruči. Zelo razpoložljiva grozda Kubernetes ponovi glavne zmogljivosti na več strojih. Toda samo en mojster naenkrat vodi razporejevalnik opravil in vodja krmilnika.

Vozlišča in stroki Kubernetes

Vsaka grozd vsebuje Kubernetes vozlišča. Vozlišča so lahko fizični stroji ali VM. Ideja je spet abstrakcija: ne glede na to, katera aplikacija se izvaja, Kubernetes skrbi za uvajanje na tej podlagi. Kubernetes celo omogoča, da nekateri zabojniki delujejo samo na VM-jih ali samo na goli kovini.

Vozlišča se izvajajo stroki, najosnovnejši predmeti Kubernetes, ki jih je mogoče ustvariti ali upravljati. Vsak pod predstavlja en primerek aplikacije ali izvajanega procesa v Kubernetesu in je sestavljen iz enega ali več vsebnikov. Kubernetes zažene, ustavi in ​​podvoji vse vsebnike v stroku kot skupino. Pods usmerjajo pozornost uporabnika na aplikacijo in ne na same vsebnike. Podrobnosti o tem, kako je treba konfigurirati Kubernetes, od stanja strokov naprej, so shranjene Itd, porazdeljeno shrambo ključ-vrednost.

Pods se ustvarijo in uničijo na vozliščih, kot je potrebno, da ustrezajo želenemu stanju, ki ga uporabnik določi v definiciji pod. Kubernetes ponuja abstrakcijo, imenovano a krmilnik za ukvarjanje z logistiko, kako se stroki zavrtijo, razvaljajo in zavrtijo. Krmilniki so različnih okusov, odvisno od vrste aplikacije, ki jo upravljamo. Na primer, nedavno predstavljeni krmilnik “StatefulSet” se uporablja za obravnavo aplikacij, ki potrebujejo stalno stanje. Druga vrsta krmilnika, uvajanje, se uporablja za razširitev aplikacije navzgor ali navzdol, posodobitev aplikacije na novo različico ali vrnitev aplikacije na znano dobro različico, če obstaja težava.

Kubernetes storitve

Ker stroki po potrebi živijo in umirajo, potrebujemo drugačno abstrakcijo za obravnavo življenjskega cikla aplikacije. Aplikacija naj bi bila trajna entiteta, tudi če stroji, ki izvajajo vsebnike, ki sestavljajo aplikacijo, sami niso trajni. V ta namen Kubernetes ponuja abstrakcijo, imenovano a storitev.

Storitev v Kubernetesu opisuje, kako je do določene skupine pods (ali drugih predmetov Kubernetes) mogoče dostopati prek omrežja. Kot piše v dokumentaciji Kubernetes, se lahko podsklopi, ki predstavljajo zaledje aplikacije, spremenijo, vendar prednji del tega ne bi smel vedeti ali slediti. Storitve to omogočajo.

Še nekaj notranjih del Kubernetesa zaokroži sliko. The razporejevalnik razdeli delovne obremenitve na vozlišča, tako da so uravnotežena med viri in da razmestitve ustrezajo zahtevam opredelitev aplikacij. The vodja krmilnika zagotavlja, da se stanje sistema - aplikacije, delovne obremenitve itd. - ujema z želenim stanjem, opredeljenim v konfiguracijskih nastavitvah Etcd.

Pomembno je vedeti, da noben od mehanizmov nizke ravni, ki jih uporabljajo zabojniki, na primer Docker, ni zamenjal avtor Kubernetes. Kubernetes namesto tega ponuja večji nabor abstrakcij za uporabo teh mehanizmov, da bi lahko aplikacije delovale v obsegu.

Kubernetes Ingress

Za storitve Kubernetes velja, da delujejo znotraj grozd. Vendar boste želeli imeti dostop do teh storitev iz zunanjega sveta. Kubernetes ima več komponent, ki to olajšajo z različno stopnjo preprostosti in robustnosti, vključno z NodePort in LoadBalancer, toda komponenta z največjo prilagodljivostjo je Ingress. Ingress je API, ki upravlja zunanji dostop do storitev grozda, običajno prek HTTP.

Za pravilno nastavitev Ingressja je treba nekoliko konfigurirati - Matthew Palmer, ki je napisal knjigo o razvoju Kubernetesa, vas skozi postopek vodi na svoji spletni strani.

Nadzorna plošča Kubernetes

Ena komponenta Kubernetes, ki vam pomaga, da ostanete na vrhu nad vsemi drugimi komponentami, je Nadzorna plošča, spletni uporabniški vmesnik, s katerim lahko razmestite in odpravite težave ter upravljate vire grozda. Nadzorna plošča ni privzeto nameščena, dodajanje pa ne predstavlja prevelikih težav.

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.

Prednosti Kubernetesa

Ker Kubernetes uvaja nove abstrakcije in koncepte in ker je učna krivulja za Kubernetes visoka, je povsem normalno, da se vprašamo, kakšne so dolgoročne koristi za uporabo Kubernetesa. Tukaj je povzetek nekaterih posebnih načinov, kako zagnati aplikacije znotraj Kubernetesa postane lažje.

Kubernetes za vas upravlja zdravje aplikacij, kopiranje, uravnoteženje obremenitve in dodeljevanje virov strojne opreme

Ena najosnovnejših nalog, ki vam jo Kubernetes vzame iz rok, je zavzetost vzdrževanja, delovanja in odzivanja aplikacije na zahteve uporabnikov. Aplikacije, ki postanejo "nezdrave" ali niso v skladu z opredelitvijo zdravja, ki jo opisujete zanje, se lahko samodejno pozdravijo.

Druga ugodnost, ki jo Kubernetes ponuja, je maksimiranje uporabe strojnih virov, vključno s pomnilnikom, vhodno / izhodnim pomnilnikom in pasovno širino omrežja. Programi imajo lahko omejene in stroge omejitve glede porabe svojih virov. Številne aplikacije, ki uporabljajo minimalne vire, je mogoče pakirati skupaj na isti strojni opremi; aplikacije, ki jih je treba raztegniti, lahko postavite v sisteme, kjer imajo prostor za rast. In spet je mogoče samodejno uvajati posodobitve v gruči ali se vrniti, če se posodobitve pokvarijo.

Kubernetes olajša uvajanje vnaprej nastavljenih aplikacij s Helmovimi grafikoni

Upravitelji paketov, kot sta APT Debian Linux in Python Pip, uporabnikom prihranijo težave z ročno namestitvijo in konfiguriranjem aplikacije. To je še posebej priročno, če ima aplikacija več zunanjih odvisnosti.

Helm je v bistvu upravitelj paketov za Kubernetes. Številne priljubljene programske aplikacije se morajo izvajati v Kubernetesu kot skupina medsebojno odvisnih vsebnikov. Helm ponuja mehanizem opredelitve, "grafikon", ki opisuje, kako je mogoče aplikacijo ali storitev zagnati kot skupino vsebnikov znotraj Kubernetesa.

Lahko ustvarite lastne karte Helm iz nič, kar boste morda morali, če gradite aplikacijo po meri za interno uvajanje. Če pa uporabljate priljubljeno aplikacijo, ki ima skupen vzorec uvajanja, obstaja velika verjetnost, da je nekdo zanjo že sestavil tabelo Helm in jo objavil v uradnem repozitoriju grafikonov Helm. Še eno mesto za iskanje uradnih lestvic Helm je imenik Kubeapps.com.

Kubernetes poenostavlja upravljanje shrambe, skrivnosti in drugih virov, povezanih z aplikacijami

Posode naj bi bile nespremenljive; karkoli vstavite vanje, naj se ne bi spremenilo. Toda aplikacije potrebujejo stanje, kar pomeni, da potrebujejo zanesljiv način za obravnavo zunanjih količin pomnilnika. To se še bolj zaplete zaradi načina, kako zabojniki živijo, umirajo in se ponovno rodijo v celotni življenjski dobi aplikacije.

Kubernetes ponuja abstrakcije, ki omogočajo vsebnikom in aplikacijam, da obravnavajo shranjevanje na enak ločen način kot drugi viri. Do številnih pogostih vrst pomnilnika, od zvezkov Amazon EBS do navadnih starih delnic NFS, je mogoče dostopati prek gonilnikov za shranjevanje Kubernetes, imenovanih zvezki. Običajno so nosilci vezani na določen pod, vendar lahko podtip nosilca, imenovan »trajni nosilec«, uporabimo za podatke, ki morajo živeti neodvisno od katerega koli pod.

Zabojniki morajo pogosto delati s "skrivnostmi" - poverilnicami, kot so ključi API ali gesla za storitve, za katere ne želite, da jih je kodirano v vsebnik ali da jih odkrijejo na disku. Medtem ko so za to na voljo neodvisne rešitve, kot so Dockerjeve skrivnosti in HashiCorp Vault, ima Kubernetes svoj mehanizem za izvorno obdelavo skrivnosti, čeprav ga je treba skrbno konfigurirati. Na primer, Etcd mora biti konfiguriran za uporabo SSL / TLS pri pošiljanju skrivnosti med vozlišči in ne v golem besedilu.

Aplikacije Kubernetes se lahko izvajajo v hibridnih okoljih in okoljih z več oblaki

Ena od dolgoletnih sanj računalništva v oblaku je, da lahko zaženete katero koli aplikacijo v katerem koli oblaku ali v kateri koli mešanici oblakov, javnih ali zasebnih. To ni samo zato, da bi se izognili zaklepanju prodajalcev, temveč tudi izkoristili funkcije, značilne za posamezne oblake.

Kubernetes ponuja nabor primitivov, skupaj znanih kot federacija, za sinhronizacijo več skupin med seboj v več regijah in oblakih. Na primer, določeno uvajanje aplikacij lahko med več gručami ostane dosledno, različne grozde pa si lahko delijo odkritje storitev, tako da je do zalednega vira mogoče dostopati iz katere koli gruče. Federacijo lahko uporabimo tudi za ustvarjanje visoko razpoložljivih ali odpornih postavitev Kubernetes, ne glede na to, ali zajemate več okolij v oblaku ali ne.

Federacija je za Kubernetes še vedno razmeroma nova. Vsi zvezni API-ji še niso podprti v zveznih primerkih in nadgradnje še nimajo infrastrukture za samodejno preskušanje. Toda te pomanjkljivosti naj bi odpravili v prihodnjih različicah Kubernetesa.

Kje dobiti Kubernetes

$config[zx-auto] not found$config[zx-overlay] not found