Kubernetes

Kubernetes Ingress

Kubernetes Ingress
Kubernetes ima veliko gibljivih delov. To je pričakovati od katerega koli modela, namenjenega porazdeljenemu računalništvu. Da bi raziskali, kaj nam pomaga doseči Kubernetes Ingress, naj najprej povzamemo nekaj ustreznih podrobnosti o tipičnem grozdu Kubernetes:

  1. Aplikacija, razporejena v gruči Kubernetes, se izvaja kot zbirke.
  2. Stroki so v bistvu vsebniki, ki so razporejeni na več vozliščih.
  3. Vozlišča so lahko fizični strežniki ali VM-ji, ki jih ponuja vaš ponudnik gostovanja. Očitno lahko Kubernetes tudi namestite na lokalni strežnik, če tako želite.
  4. Vsak Pod ima svoj edinstven naslov IP.
  5. Vaša aplikacija je razdeljena na številne podkomponente, ki jih pogosto imenujemo mikro storitve.
  6. Za vsako mikrostoritev vaše aplikacije obstaja ustrezna storitev v Kubernetesu.
  7. V kontekstu Kubernetesa a Storitev izpostavi zbirko strokov preostali gruči kot eno samo abstrakcijo. En sam virtualni IP.
  8. To pomaga eni storitvi vaše aplikacije komunicirati z drugo storitvijo. To je abstrakcija, ki vam omogoča, da naslovite zbirko strokov, namesto da določite naslov IP stroka, vsakič, ko želite govoriti z njim.
  9. Storitev Kubernetes deluje tudi kot izravnalnik obremenitve za vse stroke, ki jih predstavlja. Promet se enakomerno porazdeli po vseh vozliščih.

Zaenkrat dobro. Vsaka storitev se lahko pogovarja z drugo storitvijo. Ta komunikacija je možna v celotni gruči Kubernetes

Izpostavljanje storitev

Če drevo pade v gozd in ni nikogar, ki bi ga slišal, ali se sliši zvok?"

Podobno je, če vaša aplikacija ne služi namenu zunaj gruče Kubernetes, ali je res pomembno, ali je vaša gruča dobro zgrajena ali ne? Verjetno ne.

Za konkreten primer recimo, da imamo klasično spletno aplikacijo, sestavljeno iz vmesnika, napisanega v Nodejsu, in zaledja, napisanega v Pythonu, ki uporablja bazo podatkov MySQL. V svoji gruči Kubernetes razporedite dve ustrezni storitvi.

Izdelate datoteko Docker, ki določa, kako programsko opremo za čelni računalnik zapakirate v vsebnik, in podobno pakirate svoj backend. Nato boste v svoji gruči Kubernetes razporedili dve storitvi, od katerih vsaka za seboj izvaja niz pods. Spletna storitev lahko govori z gručo baz podatkov in obratno.

Vendar Kubernetes nobene od teh storitev (ki so bistvene končne točke HTTP) ne izpostavlja tujini. Kot je navedeno v uradnih dokumentih:

Predpostavlja se, da imajo storitve navidezne IP-je, ki jih je mogoče usmerjati le v omrežju grozdov"

To je z vidika varnosti povsem smiselno, vaše storitve se lahko med seboj pogovarjajo, vendar grozd zunanjim entitetam ne dovoli neposrednega pogovora s storitvami. Na primer, samo vaša spletna fronta lahko govori s storitvijo baze podatkov, nihče drug pa ne more niti pošiljati zahtev storitvi baze podatkov.

Težava nastane, ko pogledamo primer uporabe čelne storitve. Izpostaviti ga mora preostali javnosti, da lahko končni uporabniki uporabljajo vašo aplikacijo. Takšne storitve izpostavljamo s pomočjo Kubernetes Ingress.

Kubernetes Ingress

Ingress izpostavi poti HTTP in HTTPS zunaj gruče storitvam znotraj gruče. Pravila usmerjanja lahko nadzirate z definiranjem vira Kubernetes Ingress. Toda naredi veliko več kot to. Izpostavitev ene same storitve je mogoče doseči z različnimi drugimi možnostmi, kot sta NodePort ali Load Balancers, vendar te zmogljivosti nimajo funkcij, ki so dovolj izpopolnjene za sodobno spletno aplikacijo.

Funkcije, kot so izpostavljenost več aplikacij na enem IP, določanje poti itd.

Torej, razumimo te funkcije za preostanek članka:

Vstop za eno službo

To je najpreprostejša različica izpostavitve ene same storitve, kot je spletna fronta, z IP-jem (ali domenskim imenom) in privzetimi vrati HTTP in HTTPS (i.e, 80 in 443).

Enkratni Fanout

To je vhodna nastavitev, ki vam omogoča, da dohodni promet omogočite enemu naslovu IP in ga usmerite na več storitev.

Sestavljen je iz:

Enotni odtok je primer, ko se en IP uporablja za več storitev. Storitve so lahko na različnih poteh v URI-ju, kot je foo.bar.com / admin je lahko storitev za skrbnike in foo.bar.com / home je lahko storitev, ki generira domačo stran vsakega uporabnika.

Vhodna vrata bodo vedno 80 ali 443, vendar se vrata, v katerih se izvajajo storitve (znotraj gruče), lahko precej razlikujejo.

Takšen vdor nam pomaga zmanjšati število izravnalnikov obremenitve v gruči, saj v bistvu deluje kot ena.

Navidezno gostovanje na podlagi imen

Javni naslovi IP so omejeni. So tudi precej drage. Zamisel o virtualnem gostovanju, ki temelji na imenih, je starejša od Kubernetesa. Bistvo je v tem, da usmerite zapise DNS za različna spletna mesta, kot je ww1.primer.com in ww2.primer.com na isti naslov IP. Strežnik, ki se izvaja na tem naslovu IP, bo videl dohodno zahtevo in če je ime gostitelja, omenjeno v zahtevi, za ww1.primer.com, potem vam to spletno mesto postreže in če ww2.primer.com, potem je to vročeno.

V kontekstu Kubernetesa lahko zaženemo dve storitvi, ki se izvajata na, recimo, vratih 80 in obe izpostavimo na enem samem naslovu IP z uporabo vhoda tudi vrat 80. Na vstopni točki promet ww1.primer.com se bo ločil od prometa za ww2.primer.com. Od tod tudi izraz navidezno gostovanje na osnovi imena.

Zaključek

Vstop v Kubernetes je precej izpopolnjen, da ga pokrijemo v enem samem prispevku. Obstajajo različni primeri uporabe in številni krmilniki Ingress, ki bodo vaši gruči dodali funkcionalnost Ingress. Priporočam, da začnete z Nginx Ingress Controller.

Za nadaljnje podrobnosti in specifikacije lahko sledite tudi uradni dokumentaciji.

Kako uporabljati AutoKey za avtomatizacijo iger Linux
AutoKey je namizni pripomoček za avtomatizacijo za Linux in X11, programiran v Python 3, GTK in Qt. Z njegovo funkcijo skriptiranja in MACRO lahko avt...
Kako prikazati števec FPS v igrah Linux
Linux gaming je dobil velik zagon, ko je Valve leta 2012 napovedal podporo Linuxu za odjemalca Steam in njihove igre. Od takrat se je veliko AAA in in...
Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...