Kubernetes umrežavanje - sveobuhvatan vodič za koncepte umrežavanja u Kubernetesu



Ovaj blog o Kubernetes umrežavanju duboko će zaroniti u koncepte uključene u Kubernetes kao što su komunikacija s mahunama, uslugama i ulaznim mrežama.

U prethodnom blogu na , sigurno ste imali razumijevanja za Kubernetes. U ovom blogu o Kubernetesovom umrežavanju, prvenstveno ću se usredotočiti na mrežne koncepte koji su uključeni u Kubernetes.

Na ovom blogu na Kubernetes Networking razumjet ćete sljedeće teme:





Što je Kubernetes?

Možete definirati Kubernetes kao alat za orkestraciju spremnika otvorenog koda koji pruža prijenosnu platformu za automatizaciju primjene kontejneriziranih aplikacija.

Sada, svi koji rade s Kubernetesom moraju jasno razumjeti Kubernetes klaster jer će vam to pomoći u razumijevanju Kubernetes umrežavanja.



Klaster Kubernetes

Kubernetes platforma nudi željeno upravljanje stanjem, što omogućuje pokretanje usluga klastera, napajanu konfiguraciju u infrastrukturi. Dopustite mi da objasnim na primjeru.

Razmotrite YAML datoteku koja sadrži sve informacije o konfiguraciji koje treba unijeti u usluge klastera. Dakle, ova se datoteka ubacuje u API usluga klastera, a zatim će na uslugama klastera trebati shvatiti kako rasporediti mahune u okolini. Dakle, pretpostavimo da postoje dvije slike spremnika za pod 1 s tri replike i jedna slika spremnika za pod 2 s dvije replike, na uslugama klastera bit će da dodijele ove parove pod-replika radnicima.

power bi vs tableau 2016

Klaster Kubernetes - Kubernetes umrežavanje - Edureka



Pogledajte gornji dijagram. Kao što vidite, usluge klastera dodijelile su prvom radniku dva para replika mahuna, drugom radniku jedan par rep replika i trećem radniku dva para replike mahuna. Sada je postupak Kubelet odgovoran za komunikaciju usluga klastera s radnicima.

Dakle, cijelo ovo postavljanje usluga klastera i sami radnici čine ovo Skupina Kubernetes !!

Što mislite, kako ove pojedinačno dodijeljene mahune međusobno komuniciraju?

Odgovor leži u Kubernetes Networkingu!

Pretplatite se na naš youtube kanal da biste dobivali nova ažuriranja ..!

Postoje uglavnom 4 problema za rješavanje koncepata umrežavanja.

  • Kontejner do kontejnera komunikacija
  • Pod to pod Komunikacija
  • Pod za uslužnu komunikaciju
  • Vanjska za uslugu Komunikacija

Sada ću vam reći kako se gore navedeni problemi rješavaju pomoću Kubernetes Networkinga.

Kubernetes umrežavanje

Komunikacija između mahuna, usluga i vanjskih usluga onima u klasteru donosi koncept umrežavanja Kubernetesa.

Dakle, za vaše bolje razumijevanje dopustite mi da podijelim koncepte na sljedeće.

  • Podovi i komunikacija kontejnera
  • Usluge
  • Povezivanje eksternih usluga s Ingress mrežom

Podovi i komunikacija kontejnera

Prije nego što vam kažem kako mahune komuniciraju, dopustite mi da vam predstavim što su mahune?

Mahune

Podovi su osnovne jedinice Kubernetesovih aplikacija, koje se sastoje od jednog ili više spremnika dodijeljenih na istom hostu za dijeljenje mrežnog snopa i drugih resursa. Dakle, to implicira da svi spremnici u mahuni mogu doći do drugih na lokalnom hostu.

Sad, dopustite mi da vas ukratko informiram kako ove mahune komuniciraju?

Postoje 2 vrste komunikacije. The komunikacija među čvorovima i komunikacija unutar čvora.

Dakle, krenimo s komunikacijom unutar čvora, ali prije toga dopustite mi da vam predstavim komponente pod mreže.

Unutar čvora ispod mreže

Mreža mahuna unutar čvorova u osnovi je komunikacija između dva različita čvora na istoj mahuni. Objasnit ću vam na primjeru.

Pretpostavimo da paket ide od pod1 do pod2.

  • Paket napušta mrežu Pod 1 na eth0 i ulazi u korijensku mrežu na veth0
  • Zatim paket prelazi na Linux most (cbr0) koji otkriva odredište pomoću ARP zahtjeva
  • Dakle, ako veth1 ima IP, most sada zna kamo će proslijediti paket.

Sada, slično, dopustite mi da vam kažem o komunikaciji pod-čvorova pod.

Zanima vas učenje Kubernetesa?
Inter-čvor ispod mreže

Razmotrimo dva čvora s različitim mrežnim prostorima imena, mrežnim sučeljima i Linux mostom.

Sada, pretpostavimo da paket putuje od pod1 do pod4 koji je na drugom čvoru.

  • Paket napušta mrežu pod 1 i ulazi u korijensku mrežu na veth0
  • Tada paket prelazi na Linux most (cbr0) čija je odgovornost podnijeti ARP zahtjev za pronalaženje odredišta.
  • Nakon što most shvati da ovaj pod nema odredišnu adresu, paket se vraća na glavno mrežno sučelje eth0.
  • Paket sada napušta čvor 1 kako bi pronašao odredište na drugom čvoru i ulazi u tablicu ruta koja usmjerava paket na čvor čiji CIDR blok sadrži pod4.
  • Dakle, sada paket dolazi do čvora2, a most preuzima paket koji izrađuje ARP zahtjev da bi se utvrdilo da IP pripada veth0.
  • Konačno, paket prelazi cijev-par i dolazi do pod4.

Dakle, tako mahune međusobno komuniciraju. Krenimo sada i pogledajte kako usluge pomažu u komunikaciji mahuna.

Pa, što mislite koje su usluge?

Usluge

U osnovi, usluge su vrsta resursa koja konfigurira proxy za prosljeđivanje zahtjeva skupu pods, koji će primati promet, a određuje ih selektor. Jednom kada je usluga stvorena, ona ima dodijeljenu IP adresu koja će prihvatiti zahtjeve na luci.

Sada postoje razne vrste usluga koje vam daju mogućnost izlaganja usluge izvan vaše IP adrese klastera.

Vrste usluga

Postoje uglavnom 4 vrste usluga.

IP klastera: Ovo je zadana vrsta usluge koja izlaže uslugu na internom IP-u klastera čineći da je usluga dostupna samo unutar klastera.

NodePort: Ovo izlaže uslugu na IP-u svakog čvora na statičkom priključku. Budući da je a KlasterIP usluga na koju će se preusmjeriti usluga NodePort automatski se kreira. Možemo kontaktirati uslugu NodePort izvan klastera.

LoadBalancer: Ovo je vrsta usluge koja izlaže uslugu izvana pomoću uravnoteživača opterećenja davatelja usluga u oblaku. Dakle, automatski se izrađuju usluge NodePort i ClusterIP, na koje će se usmjeriti vanjski uravnoteživač opterećenja.

Vanjsko ime : Ova vrsta usluge preslikava uslugu na sadržaj vanjskoIme polje vraćanjem a CNAME zapis sa svojom vrijednošću.

Dakle, momci, to je sve bilo oko usluga. Sad se možda pitate kako se vanjske usluge povezuju s tim mrežama, zar ne?

Pa, to je nitko drugi nego Ulazna mreža .

Ulazna mreža

Pa, Ingress mreža najmoćniji je način izlaganja usluga jer je skup pravila koja dopuštaju ulazne veze, a koja se mogu konfigurirati za pružanje usluga izvana putem dostupnih URL-ova. Dakle, u osnovi djeluje kao ulazna točka u Kubernetesov klaster koji upravlja vanjskim pristupom uslugama u klasteru.

Sada ću vam na primjeru objasniti rad Ingress Networka.

Imamo 2 čvora s imenskim prostorima pod i root mreže s Linux mostom. Uz to, u korijensku mrežu dodali smo i novi virtualni ethernet uređaj nazvan flannel0 (mrežni dodatak).

Sada želimo da paket teče od pod1 do pod 4.

  • Dakle, paket napušta mrežu pod1 na eth0 i ulazi u korijensku mrežu na veth0.
  • Zatim se prosljeđuje na cbr0, koji upućuje ARP zahtjev za pronalaženje odredišta, a nakon toga saznaje da nitko na ovom čvoru nema odredišnu IP adresu.
  • Dakle, most šalje paket na flannel0 jer je tablica ruta čvora konfigurirana s flannel0.
  • Sada, flanel demon razgovara s API poslužiteljem Kubernetesa kako bi znao sve IP adrese podova i njihove odgovarajuće čvorove kako bi stvorio preslikavanja za IP pods podsjetnika na čvorove IP-a.
  • Mrežni dodatak omotava ovaj paket u UDP paket s dodatnim zaglavljima koji mijenjaju izvornu i odredišnu IP adresu na njihove čvorove i šalju ovaj paket putem eth0.
  • Sada, budući da tablica ruta već zna usmjeravati promet između čvorova, šalje paket na odredišni čvor2.
  • Paket dolazi na eth0 čvora 2 i vraća se na flanel0 da bi se dekapsulirao i emitira natrag u korijenski prostor imena.
  • Ponovno, paket se prosljeđuje na Linux most kako bi se poslao ARP zahtjev za otkrivanje IP adrese koja pripada veth1.
  • Paket napokon prelazi korijensku mrežu i dolazi do odredišta Pod4.

Dakle, na taj su način vanjske usluge povezane uz pomoć ulazne mreže. Sad, dok sam govorio o mrežnim dodacima, dopustite mi da vas upoznam s popisom popularnih dostupnih mrežnih dodataka.

Sad, nakon što sam vam rekao puno o Kubernetes Networkingu, dopustite mi da vam pokažem stvarnu studiju slučaja.

Studija slučaja: Čarobnjak za bogatstvo pomoću mreže Kubernetes

Wealth Wizards mrežna je platforma za financijsko planiranje koja kombinira financijsko planiranje i pametnu softversku tehnologiju za pružanje stručnih savjeta po pristupačnoj cijeni.

Izazovi

Sada je bilo izuzetno važno za tvrtku da brzo otkrije i eliminira ranjivosti koda uz potpunu vidljivost svog oblačnog okruženja, ali je željela kontrolirati promet putem ograničenja pristupa.

Dakle, koristili su Kubernetesovu infrastrukturu za upravljanje osiguravanjem i uvođenjem klastera uz pomoć alata za upravljanje razmještanjem i konfiguracijom mikro servisa na Kube klasterima.

Također su koristili značajku mrežne politike tvrtke Kubernetes kako bi im omogućili kontrolu prometa putem ograničenja pristupa.

Problem je bio u tome što su ove politike orijentirane na aplikacije i mogu se razvijati samo s aplikacijama, ali nije postojala komponenta koja bi ih primijenila.

Dakle, jedino rješenje koje je tvrtka mogla pronaći za to bila je upotreba mrežnog dodatka i stoga su počeli koristiti Weave Net.

Riješenje

Ovaj mrežni dodatak stvara virtualnu mrežu koja ima kontroler mrežne politike za upravljanje i provođenje pravila u Kubernetesu. I ne samo to, već također povezuje Dockerove spremnike na više domaćina i omogućava njihovo automatsko otkrivanje.

Dakle, pretpostavimo da imate opterećenje u klasteru i želite zaustaviti bilo koje drugo opterećenje u klasteru koje razgovaraju s njim. To možete postići stvaranjem mrežne politike koja ograničava pristup i dopušta ulaz samo u nju putem kontrolera ulaza na određenom portu.

Sada, njegovim postavljanjem na svaki Kubernetesov čvor, dodatak upravlja inter-pod usmjeravanjem i ima pristup za manipulaciju pravilima IPtables. Jednostavno rečeno, svaka se politika pretvara u zbirku pravila IPtables, koordiniranih i konfiguriranih na svakom stroju za prevođenje Kubernetesovih oznaka.

Dobro, sad kad ste prošli toliko teorije o Kubernetes umrežavanju, dopustite mi da vam pokažem kako se to praktično radi.

Ruke na

Dakle, uz pretpostavku da ste svi instalirali Kubernetes na svoje sustave, imam scenarij za prezentaciju.

Pretpostavimo da želite pohraniti naziv i ID proizvoda, za to će vam trebati web aplikacija. U osnovi, potreban vam je jedan spremnik za web aplikaciju, a potreban vam je još jedan spremnik kao MySQL za pozadinu, a taj MySQL spremnik trebao bi biti povezan sa spremnikom web aplikacije.

Kako bi bilo da gore navedeni primjer izvršim praktično.

Započnimo!

Korak 1: Stvorite mapu u željenom direktoriju i promijenite put radne mape u tu mapu.

mkdir HandsOn cd HandsOn /

Korak 2: Sada stvorite YAML datoteke za implementaciju za web aplikaciju i MySQL bazu podataka.

Korak 3: Jednom kada stvorite datoteke za implementaciju, rasporedite obje aplikacije.

kubectl primijeniti -f webapp.yml kubectl primijeniti -f mysql.yml

Korak 3.1: Provjerite obje implementacije.

kubectl dobiti implementaciju

Korak 4: Sada morate stvoriti usluge za obje aplikacije.

kubectl prijava -f webservice.yml kubectl prijava -f sqlservice.yml

Korak 4.1: Jednom kada se usluge kreiraju, rasporedite ih.

Korak 4.2: Provjerite jesu li usluge stvorene ili ne.

kubectl dobiti uslugu

Korak 5: Sada provjerite konfiguraciju pokrenutih pods.

kubectl dobiti mahune

Korak 6: Idite u spremnik unutar webapp mahune.

kubectl exec -it container_id bash nano var / www / html / index.php

Korak 6.1 : Sada, promijeni $ servername od localhosta do naziva SQL usluge koji je ' webapp-sql1 ”U ovom slučaju i $ lozinka od do ' edureka '. Također, ispunite sve potrebne detalje baze podataka i spremite datoteku index.php pomoću tipkovne prečice Ctrl + x a nakon toga pritisnite Y za spremanje i pritisnite Unesi .

Korak 7: Sada idite u MySQL spremnik prisutan u mahuni.

kubectl exec it container_id bash

Korak 7.1: Dobiti pristup korištenju MySQL spremnika.

mysql -u korijen -p edureka

Gdje -u predstavlja korisnika, a -p je lozinka vašeg računala.

Korak 7.2: Stvorite bazu podataka u MySQL-u koja će se koristiti za dobivanje podataka s webappa.

STVARI BAZU PODATAKA ProductDetails

Korak 7.3: Koristite stvorenu bazu podataka.

KORISTITE Pojedinosti o proizvodu

Korak 7.4: Stvorite tablicu u ovoj bazi podataka u MySQL-u koja će se koristiti za dobivanje podataka s webappa.

IZRADI TABELU proizvoda (naziv_izvoda VARCHAR (10), ID_proizvoda VARCHAR (11))

Korak 7,5: Sada izađite i iz MySQL spremnika pomoću naredbe Izlaz .

Korak 8: Provjerite broj porta na kojem vaša web aplikacija radi.

kubectl dobiti usluge

Korak 8.1: Sada otvorite web aplikaciju na dodijeljenom broju porta.

9. korak: Jednom kad kliknete na Pošaljite upit , idite na čvor u kojem je pokrenuta vaša MySQL usluga, a zatim uđite u spremnik.

Ovo će vam pokazati izlaz svih proizvoda s popisa, o kojima ste popunili detalje.

Zanima vas učenje Kubernetesa?

Ako smatrate da je ovaj blog Kubernetes Networking relevantan, pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta.