Kubernetes Networking - Kattava opas Kubernetesin verkkokäsitteisiin



Tämä Kubernetes Networking -blogissa syvennetään Kubernetesiin liittyviä käsitteitä, kuten viestintää podsien, palveluiden ja sisäänpääsyverkkojen kanssa.

Edellisessä blogissa , sinulla on oltava ymmärrys Kubernetesista. Tässä blogissa Kubernetes-verkostoitumisesta keskityn ensisijaisesti Kubernetesiin liittyviin verkkokonsepteihin.

Tässä Kubernetes Networking -blogissa ymmärrät seuraavat aiheet:





Mikä on Kubernetes?

Voit määrittää Kubernetesin avoimen lähdekoodin säilöarkistointityökaluksi, joka tarjoaa kannettavan alustan konttien sisältämien sovellusten käyttöönoton automatisoimiseksi.

Kenellä tahansa Kubernetesin kanssa työskentelevällä on oltava selkeä käsitys Kubernetes Clusterista, koska se auttaa sinua ymmärtämään Kubernetes Networkingia.



Kubernetes-klusteri

Kubernetes-alusta tarjoaa halutun tilahallinnan, joka mahdollistaa klusteripalvelujen suorittamisen, infrastruktuurin syötetyn kokoonpanon. Sallikaa minun selittää esimerkillä.

Tarkastellaan YAML-tiedostoa, jolla on kaikki kokoonpanotiedot, jotka on syötettävä klusteripalveluihin. Joten tämä tiedosto syötetään klusteripalvelujen sovellusliittymään, ja sitten klusteripalvelujen on selvitettävä, miten ajoitetaan ympäristöä. Joten oletetaan, että pod 1: lle on kaksi säilytyskuvaa, joissa on kolme kopiota, ja yksi säilön kuva podille 2, jossa on kaksi kopiota, klusteripalvelujen tehtävänä on jakaa nämä pod-replica-parit työntekijöille.

oppia pl sql verkossa ilmaiseksi

Kubernetes-klusteri - Kubernetes-verkostoituminen - Edureka



Katso yllä olevaa kaaviota. Nyt, kuten näet, että klusteripalvelut ovat jakaneet ensimmäisen työntekijän kahdella pod-kopioparilla, toisen työntekijän yhdellä pod-replica-parilla ja kolmannen työntekijän kahdella pod-replica-parilla. Nyt klusteripalveluiden välittämisestä työntekijöiden kanssa on vastuussa Kubelet-prosessi.

Joten tämä koko klusteripalvelujen kokoonpano ja työntekijät itse muodostavat tämän Kubernetes-klusteri !!

Kuinka luulet näiden erikseen osoitettujen palkojen olevan yhteydessä toisiinsa?

Vastaus on Kubernetes Networking!

Tilaa youtube-kanavamme saadaksesi uusia päivityksiä ..!

Verkostoitumiskonseptien kanssa on ratkaistava pääasiassa 4 ongelmaa.

  • Kontti konttiyhteyteen
  • Pod to pod -viestintä
  • Palaa palveluviestintään
  • Palvelun ulkopuolinen viestintä

Sallikaa minun nyt kertoa teille, miten yllä olevat ongelmat ratkaistaan ​​Kubernetes Networkingin kanssa.

Kubernetes-verkostoituminen

Pod-palvelujen, palvelujen ja ulkoisten palveluiden välinen viestintä klusterissa oleviin palveluihin tuo Kubernetes-verkostoitumisen käsitteen.

Joten parempaan ymmärryksesi antamiseksi haluan jakaa käsitteet seuraaviin.

  • Pods & Container Communication
  • Palvelut
  • Ulkoisen yhdistäminen palveluihin Ingress-verkon kautta

Pods & Container Communication

Ennen kuin kerron kuinka palkot kommunikoivat, haluan esitellä sinulle, mitä palkot ovat?

Palot

Pods ovat Kubernetes-sovellusten perusyksiköitä, jotka koostuvat yhdestä tai useammasta säilöstä, jotka on varattu samalle isännälle jakamaan verkkopino ja muut resurssit. Joten tämä tarkoittaa, että kaikki astiat pakkauksessa voivat tavoittaa muita paikallisen isännän kautta.

Sallikaa minun nyt kertoa teille, kuinka nämä palot kommunikoivat?

Viestintää on 2 tyyppiä. solmujen välinen viestintä ja solmun sisäinen viestintä.

Aloitetaan siis solmun sisäisestä viestinnästä, mutta ennen sitä haluaisin esitellä sinulle pod-verkon komponentit.

Solmun sisäinen verkko

Solmun sisäinen pod-verkko on pohjimmiltaan saman podin kahden eri solmun välinen viestintä. Haluan selittää teille esimerkin.

Oletetaan, että paketti kulkee pod1: stä pod2: een.

  • Paketti jättää Pod 1: n verkon eth0: een ja saapuu juuriverkkoon osoitteessa veth0
  • Sitten paketti siirtyy Linux-sillalle (cbr0), joka löytää kohteen ARP-pyynnön avulla
  • Joten jos veth1: llä on IP, silta tietää nyt minne paketti välitetään edelleen.

Samoin anna minun kertoa sinulle solmujen välisestä pod-viestinnästä.

Kiinnostaako Kubernetesin oppiminen?
Inter-solmu verkon alla

Tarkastellaan kahta solmua, joilla on erilaisia ​​verkon nimitiloja, verkkoliitäntöjä ja Linux-silta.

Oletetaan nyt, että paketti kulkee pod1: stä pod4: ään, joka on eri solmussa.

  • Paketti poistuu pod 1 -verkosta ja siirtyy juuriverkkoon osoitteessa veth0
  • Sitten paketti siirtyy Linux-sillalle (cbr0), jonka vastuulla on tehdä ARP-pyyntö kohteen löytämiseksi.
  • Kun silta huomaa, että tällä podilla ei ole kohdeosoitetta, paketti palaa pääverkkoliittymään eth0.
  • Paketti jättää nyt solmun 1 löytääkseen määränpään toisesta solmusta ja syöttää reittitaulukon, joka reitittää paketin solmuun, jonka CIDR-lohko sisältää pod4: n.
  • Joten nyt paketti saavuttaa solmun2 ja sitten silta vie paketin, joka tekee ARP-pyynnön selvittääkseen, että veth0: een kuuluva IP.
  • Lopuksi paketti ylittää putkiparin ja saavuttaa pod4: n.

Joten tällä tavalla palkot kommunikoivat keskenään. Siirrytään nyt eteenpäin ja katsotaan, kuinka palvelut auttavat palkkien viestinnässä.

Joten mitä luulet palvelut ovat?

Palvelut

Pohjimmiltaan palvelut ovat resurssityyppi, joka määrittää välityspalvelimen välittämään pyynnöt joukolle podeja, jotka vastaanottavat liikennettä ja jonka valitsin määrittää. Kun palvelu on luotu, sillä on määritetty IP-osoite, joka hyväksyy pyynnöt portissa.

Nyt on olemassa useita palvelutyyppejä, jotka antavat sinulle mahdollisuuden paljastaa palvelu klusterin IP-osoitteen ulkopuolella.

Palvelutyypit

Palveluja on pääasiassa 4 erilaista.

ClusterIP: Tämä on oletuspalvelutyyppi, joka paljastaa palvelun klusterin sisäiselle IP: lle tekemällä palvelun tavoitettavaksi vain klusterissa.

NodePort: Tämä paljastaa palvelun kunkin solmun IP-osoitteessa staattisessa portissa. Koska a KlusteriIP palvelu, johon NodePort-palvelu reitittää, luodaan automaattisesti. Voimme ottaa yhteyttä NodePort-palveluun klusterin ulkopuolella.

LoadBalancer: Tämä on palvelutyyppi, joka paljastaa palvelun ulkoisesti pilvipalveluntarjoajan kuormituksen tasauslaitteella. Joten NodePort- ja ClusterIP-palvelut, joihin ulkoinen kuormituksen tasauslaite reitittää, luodaan automaattisesti.

ExternalName : Tämä palvelutyyppi kartoittaa palvelun externalName kentän palauttamalla a CNAME ennätys sen arvolla.

Joten, kaverit, jotka olivat kaikki palveluista. Nyt saatat miettiä, miten ulkoiset palvelut muodostavat yhteyden näihin verkkoihin oikein?

No, kukaan muu kuin Pääsyverkko .

Pääsyverkko

No, Ingress-verkko on tehokkain tapa paljastaa palvelut, koska se on joukko sääntöjä, jotka mahdollistavat saapuvat yhteydet, jotka voidaan määrittää antamaan palveluja ulkoisesti saavutettavien URL-osoitteiden kautta. Joten se toimii periaatteessa lähtökohtana Kubernetes-klusterille, joka hallinnoi klusterin palveluiden ulkoista pääsyä.

Sallikaa minun nyt selittää teille Ingress Networkin toiminta esimerkillä.

Meillä on 2 solmua, joilla on pod- ja juuriverkon nimitilat, joissa on Linux-silta. Tämän lisäksi juuriverkkoon on lisätty uusi virtuaalinen ethernet-laite nimeltä flannel0 (verkkolaajennus).

Nyt haluamme paketin kulkevan pod1: stä pod 4: ään.

  • Joten paketti jättää pod1: n verkon kohtaan eth0 ja saapuu juuriverkkoon kohdassa veth0.
  • Sitten se välitetään cbr0: lle, joka tekee ARP-pyynnön löytää kohde ja sen jälkeen selvittää, ettei kenelläkään tässä solmussa ole kohde-IP-osoitetta.
  • Joten silta lähettää paketin flannel0: lle, kun solmun reittitaulukko on konfiguroitu flannel0: lla.
  • Nyt flanellidemoni keskustelee Kubernetesin API-palvelimen kanssa tuntemaan kaikki pod-IP: t ja niiden solmut luomaan kartoituksia pods-IP: lle solmu-IP: lle.
  • Verkkolaajennus kääri tämän paketin UDP-pakettiin, jossa ylimääräiset otsikot vaihtavat lähde- ja kohde-IP: t vastaaviin solmuihinsa ja lähettää tämän paketin ulos eth0: n kautta.
  • Koska reittitaulukko osaa jo ohjata liikennettä solmujen välillä, se lähettää paketin kohdesolmulle2.
  • Paketti saapuu solmun2 eth0: een ja palaa takaisin flannel0: een kapseloimaan ja lähettää sen takaisin juuriverkon nimitilaan.
  • Jälleen paketti välitetään edelleen Linux-sillalle tekemään ARP-pyyntö selvittämään veth1: lle kuuluva IP.
  • Paketti vie lopulta juuriverkon ja saavuttaa kohteen Pod4.

Joten näin ulkoiset palvelut yhdistetään sisääntulevan verkon avulla. Nyt kun puhuin verkkolaajennuksista, haluan esitellä sinulle luettelon saatavilla olevista suosituista verkkolaajennuksista.

Nyt kun olen kertonut sinulle niin paljon Kubernetes Networkingista, haluan näyttää sinulle tosielämän tapaustutkimuksen.

Tapaustutkimus: Varallisuusvelho Kubernetes Networkingin avulla

Wealth Wizards on online-taloussuunnittelualusta, joka yhdistää taloudellisen suunnittelun ja älykkään ohjelmistoteknologian tarjoamaan asiantuntija-apua kohtuuhintaan.

Haasteet

Nyt yritykselle oli äärimmäisen tärkeää löytää ja poistaa nopeasti koodihaavoittuvuudet pilviympäristönsä täydellä näkyvyydellä, mutta halusi hallita liikennettä käyttörajoitusten avulla.

Joten he käyttivät Kubernetes-infrastruktuuria hallitsemaan klustereiden valmistelua ja käyttöönottoa työkalujen avulla mikropalvelujen käyttöönoton ja määrityksen hallitsemiseksi Kube-klustereissa.

He käyttivät myös Kubernetesin verkkokäytäntöominaisuutta antaakseen heille mahdollisuuden hallita liikennettä käyttörajoitusten kautta.

Nyt ongelmana oli, että nämä käytännöt ovat sovelluskeskeisiä ja voivat kehittyä vain sovellusten mukana, mutta näiden käytäntöjen täytäntöönpanoon ei ollut komponenttia.

Joten ainoa ratkaisu, jonka yritys löysi tähän, oli verkkolaajennuksen käyttö, ja siksi he alkoivat käyttää Weave Netiä.

Ratkaisu

Tämä verkkolaajennus luo virtuaaliverkon, jolla on verkkokäytäntöohjain Kubernetesin sääntöjen hallitsemiseksi ja valvomiseksi. Tämän lisäksi se yhdistää Docker-kontit useisiin isäntiin ja mahdollistaa niiden automaattisen löytämisen.

Oletetaan, että klusterissa on kuormitus ja haluat lopettaa klusterin muut työmäärät puhumalla sen kanssa. Voit saavuttaa tämän luomalla verkkokäytännön, joka rajoittaa pääsyä ja sallii tunkeutumisen siihen vain tietyn portin sisääntulon ohjaimen kautta.

Nyt laajennus hallitsee jokaisen Kubernetes-solmun käyttöönoton välistä reititystä ja sillä on pääsy manipuloida IPtable-sääntöjä. Yksinkertaisesti sanottuna kukin käytäntö muunnetaan IPtable-sääntöjen kokoelmaksi, joka on koordinoitu ja määritetty jokaisessa koneessa Kubernetes-tunnisteiden kääntämiseksi.

Selvä, nyt kun olet käynyt läpi niin paljon teoriaa Kubernetes Networkingista, haluan näyttää sinulle, miten se tehdään käytännössä.

Hands-On

Joten, olettaen, että kaikki teistä ovat asentaneet Kubernetesin järjestelmiinne, minulla on esiteltävä skenaario.

Oletetaan, että haluat tallentaa tuotteen nimen ja tuotetunnuksen, tarvitset siihen verkkosovelluksen. Periaatteessa tarvitset yhden säilön verkkosovelluksia varten ja tarvitset vielä yhden säilön MySQL: ksi backendille, ja että MySQL-säilö tulisi linkittää verkkosovellussäiliöön.

Entä toteuttaisin yllä mainitun esimerkin käytännössä.

Aloitetaan!

Vaihe 1: Luo kansio haluamaasi hakemistoon ja muuta työhakemistopolku kyseiseen kansioon.

mkdir HandsOn cd HandsOn /

Vaihe 2: Luo nyt YAML-käyttöönottotiedostot web-sovellusta ja MySQL-tietokantaa varten.

Vaihe 3: Kun olet luonut asennustiedostot, ota molemmat sovellukset käyttöön.

kubectl Apply -f webapp.yml kubectl Apply -f mysql.yml

Vaihe 3.1: Tarkista molemmat käyttöönotot.

kubectl saada käyttöönotto

Vaihe 4: Nyt sinun on luotava palveluja molemmille sovelluksille.

kubectl Apply -f webservice.yml kubectl Apply -f sqlservice.yml

Vaihe 4.1: Kun palvelut on luotu, ota palvelut käyttöön.

Vaihe 4.2: Tarkista, onko palvelut luotu vai ei.

kubectl saada palvelua

Vaihe 5: Tarkista nyt käynnissä olevien palkojen kokoonpano.

kubectl saa palkoja

Vaihe 6: Mene säiliöön webapp-podin sisällä.

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

Vaihe 6.1 : Vaihda nyt palvelimen käyttäjätunnus localhostista SQL-palvelun nimeksi, joka on webapp-sql1 ”Tässä tapauksessa ja $ salasana '' - '' edureka ”. Täytä myös kaikki tarvittavat tietokannan tiedot ja tallenna index.php-tiedosto käyttämällä pikanäppäintä Ctrl + x ja sen jälkeen paina Y tallenna ja paina tulla sisään .

Vaihe 7: Mene nyt podissa olevaan MySQL-säilöön.

kubectl suorita se container_id bash

Vaihe 7.1: Hanki käyttöoikeus MySQL-säilön käyttöön.

mysql -u root -p edureka

Missä -u edustaa käyttäjää ja -p on koneesi salasana.

Vaihe 7.2: Luo MySQL: ssä tietokanta, jota käytetään tietojen hakemiseen web-sovelluksesta.

LUO TIETOKANTA Tuotetiedot

Vaihe 7.3: Käytä luotua tietokantaa.

KÄYTÄ Tuotetiedot

Vaihe 7.4: Luo tähän tietokantaan MySQL: ssä taulukko, jota käytetään tietojen hakemiseen web-sovelluksesta.

CREATE TABLE -tuotteet (tuotenimi VARCHAR (10), product_id VARCHAR (11))

Vaihe 7.5: Poistu nyt myös MySQL-kontista komennolla poistua .

Vaihe 8: Tarkista porttinumero, jolla verkkosovelluksesi toimii.

kubectl saada palveluja

Vaihe 8.1: Avaa nyt verkkosovellus sille varatulla portin numerolla.

Vaihe 9: Kun napsautat Lähetä kysely , siirry solmuun, jossa MySQL-palvelusi on käynnissä, ja mene sitten säilön sisälle.

Tämä näyttää kaikkien luettelotuotteiden tuotokset, joista olet täyttänyt yksityiskohdat.

Kiinnostaako Kubernetesin oppiminen?

Jos pidit tämän Kubernetes Networking -blogin merkityksellisenä, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa.