Kubernetes tīkls - visaptveroša rokasgrāmata tīkla koncepcijām Kubernetes



Šajā Kubernetes Networking emuārā tiks padziļināti izpētīti Kubernetes ietvertie jēdzieni, piemēram, saziņa ar pākstiem, pakalpojumi un iekļūšanas tīkli.

Iepriekšējā emuārā vietnē , jums noteikti ir jābūt sapratnei par Kubernetes. Šajā emuārā par Kubernetes tīklu galvenokārt pievērsīšos Kubernetes iesaistītajām tīkla koncepcijām.

Šajā Kubernetes Networking emuārā jūs sapratīsit šādas tēmas:





Kas ir Kubernetes?

Jūs varat definēt Kubernetes kā atvērtā koda konteineru orķestrēšanas rīku, kas nodrošina pārnēsājamu platformu konteinerizētu lietojumprogrammu izvietošanas automatizēšanai.

Tagad ikvienam, kas strādā ar Kubernetes, jābūt skaidrai izpratnei par Kubernetes kopu, jo tas palīdzēs jums izprast Kubernetes tīklu.



Kubernetes kopa

Platforma Kubernetes piedāvā vēlamo stāvokļa pārvaldību, kas ļauj darboties klastera pakalpojumiem, plūsmas konfigurācijai infrastruktūrā. Ļaujiet man paskaidrot ar piemēru.

Apsveriet YAML failu, kurā ir visa konfigurācijas informācija, kas jāievada klastera pakalpojumos. Tātad šis fails tiek padots klastera pakalpojumu API, un pēc tam klastera pakalpojumiem būs jāizprot, kā ieplānot pākšaugus vidē. Pieņemsim, ka 1. podam ir divi konteinera attēli ar trim kopijām un viens konteinera attēls 2. podam ar divām replikām, kopas dienestiem būs jāpiešķir šie pod-replica pāri darbiniekiem.

apache dzirkstele, salīdzinot ar hadoop mapreduce

Kubernetes kopa - Kubernetes tīklošana - Edureka



Skatiet iepriekšējo diagrammu. Tagad, kā redzat, ka kopas pakalpojumi ir piešķīruši pirmo darbinieku ar diviem pākšu kopiju pāriem, otro - ar vienu pākšu kopiju pāri un trešo - ar diviem pākšu kopiju pāriem. Tagad par klastera pakalpojumu saziņu ar darbiniekiem ir atbildīgs Kubelet process.

Tātad tas ir viss šis kopu pakalpojumu iestatījums un paši darbinieki Kubernetes kopa !!

Kā, jūsuprāt, šīs individuāli piešķirtās pākstis sazinās savā starpā?

Atbilde slēpjas Kubernetes tīklā!

Abonējiet mūsu youtube kanālu, lai iegūtu jaunus atjauninājumus ..!

Tīkla koncepcijās galvenokārt ir jāatrisina 4 problēmas.

  • Konteiners ar konteineru saziņu
  • Komunikācija no vienas puses uz otru
  • Pakalpojumu saziņa
  • Ārpus pakalpojuma komunikācijas

Tagad ļaujiet man jums pastāstīt, kā ar Kubernetes Networking tiek atrisinātas iepriekš minētās problēmas.

Kubernetes tīkls

Saziņa starp pākstīm, pakalpojumiem un ārējiem pakalpojumiem ar klastera pakalpojumiem ievieš Kubernetes tīkla koncepciju.

Tātad, lai jūs labāk izprastu, ļaujiet man sadalīt jēdzienus šādos.

  • Pākstis un konteineru saziņa
  • Pakalpojumi
  • Ārējo savienošana ar pakalpojumiem, izmantojot piekļuves tīklu

Pākstis un konteineru saziņa

Pirms es jums saku, kā pākstis sazinās, ļaujiet man jūs iepazīstināt ar pākstīm?

Pākstis

Pods ir Kubernetes lietojumprogrammu pamata vienības, kas sastāv no viena vai vairākiem konteineriem, kas piešķirti tam pašam resursdatoram, lai koplietotu tīkla kaudzi un citus resursus. Tātad tas nozīmē, ka visi konteineri pākstī var sasniegt citus vietējā resursdatorā.

Tagad ļaujiet man īsi pastāstīt, kā šīs pākstis sazinās?

Ir divi saziņas veidi. The starpmezglu saziņa un intra-mezglu komunikācija.

Tātad, sāksim ar mezglu iekšējo saziņu, bet pirms tam ļaujiet man jūs iepazīstināt ar pod tīkla sastāvdaļām.

Iekšējais mezgls zem tīkla

Iekšmezglu pod tīkls būtībā ir komunikācija starp diviem dažādiem mezgliem vienā un tajā pašā podā. Ļaujiet man paskaidrot jūs ar piemēru.

Pieņemsim, ka pakete iet no pod1 līdz pod2.

  • Pakete atstāj Pod 1 tīklu pie eth0 un sakņu tīklā nonāk pie veth0
  • Tad pakete pāriet uz Linux tilta (cbr0), kas, izmantojot ARP pieprasījumu, atrod galamērķi
  • Tātad, ja veth1 ir IP, tilts tagad zina, kur pārsūtīt paketi.

Tagad, līdzīgi, ļaujiet man pastāstīt par starpmezglu pogu saziņu.

Vai jūs interesē Kubernetes mācīšanās?
Starpmezgls zem tīkla

Apsveriet divus mezglus, kuriem ir dažādas tīkla nosaukumvietas, tīkla saskarnes un Linux tilts.

Pieņemsim, ka pakešu ceļojums no pod1 uz pod4, kas atrodas citā mezglā.

  • Pakete atstāj 1. tīkla tīklu un ienāk sakņu tīklā pie veth0
  • Tad pakete pāriet uz Linux tiltu (cbr0), kura pienākums ir iesniegt ARP pieprasījumu, lai atrastu galamērķi.
  • Kad tilts saprot, ka šim podam nav galamērķa adreses, pakete atgriežas galvenajā tīkla saskarnē eth0.
  • Tagad pakete atstāj mezglu 1, lai atrastu tā galamērķi otrā mezglā, un ievada maršruta tabulu, kas novirza paketi uz mezglu, kura CIDR blokā ir pod4.
  • Tātad, tagad pakete sasniedz mezglu2 un pēc tam tilts paņem paketi, kas pieprasa ARP, lai noskaidrotu, vai IP pieder veth0.
  • Visbeidzot, paciņa šķērso cauruļu pāri un sasniedz pod4.

Tātad, tā pākstis sazinās savā starpā. Turpināsim virzīties tālāk un redzēt, kā pakalpojumi palīdz sakaru saziņā.

Tātad, kādi, jūsuprāt, ir pakalpojumi?

Pakalpojumi

Būtībā pakalpojumi ir resursu veids, kas konfigurē starpniekserveri, lai pārsūtītu pieprasījumus pākšu kopai, kas saņems trafiku un ko nosaka atlasītājs. Kad pakalpojums ir izveidots, tam ir piešķirta IP adrese, kas pieņem pieprasījumus ostā.

Tagad ir dažādi pakalpojumu veidi, kas sniedz iespēju pakļaut pakalpojumu ārpus jūsu klastera IP adreses.

Pakalpojumu veidi

Galvenokārt ir 4 veidu pakalpojumi.

ClusterIP: Šis ir noklusējuma pakalpojuma veids, kas pakļauj pakalpojumu klastera iekšējam IP, padarot pakalpojumu sasniedzamu tikai klasterī.

NodePort: Tādējādi pakalpojums tiek pakļauts katra mezgla IP statiskajā portā. Tā kā, a ClusterIP pakalpojums, uz kuru maršrutēs NodePort, tiek automātiski izveidots. Mēs varam sazināties ar NodePort pakalpojumu ārpus kopas.

LoadBalancer: Šis ir pakalpojuma veids, kas pakļauj pakalpojumu ārēji, izmantojot mākoņa nodrošinātāja slodzes līdzsvarotāju. Tātad tiek automātiski izveidoti NodePort un ClusterIP pakalpojumi, uz kuriem virzīsies ārējais slodzes līdzsvarotājs.

ExternalName : Šis pakalpojuma veids kartē pakalpojumu atbilstoši externalName lauks, atgriežot a CNAME ieraksts ar tā vērtību.

Tātad, puiši, kas bija viss par pakalpojumiem. Tagad jūs varētu domāt, kā ārējie pakalpojumi tieši savienojas ar šiem tīkliem?

Nu, tas ir neviens cits kā Ieejas tīkls .

Ieejas tīkls

Ingress tīkls ir visspēcīgākais pakalpojumu atmaskošanas veids, jo tas ir noteikumu kopums, kas atļauj ienākošos savienojumus, kurus var konfigurēt, lai sniegtu pakalpojumus ārēji, izmantojot sasniedzamus URL. Tātad tas būtībā darbojas kā ieejas punkts Kubernetes klasterī, kas pārvalda ārēju piekļuvi klastera pakalpojumiem.

Tagad ļaujiet man paskaidrot jums Ingress Network darbību ar piemēru.

Mums ir 2 mezgli, kuriem ir pod un root tīkla nosaukumvietas ar Linux tiltu. Papildus tam sakņu tīklam ir pievienota arī jauna virtuālā Ethernet ierīce ar nosaukumu flannel0 (tīkla spraudnis).

Tagad mēs vēlamies, lai pakete plūst no 1. līdz 4. podam.

  • Tātad pakete atstāj pod1 tīklu tīklā eth0 un ienāk saknes tīklā pie veth0.
  • Tad tas tiek nodots cbr0, kas pieprasa ARP atrast galamērķi, un pēc tam tas uzzina, ka nevienam šajā mezglā nav galamērķa IP adreses.
  • Tātad tilts nosūta paketi uz flannel0, jo mezgla maršruta tabula ir konfigurēta ar flannel0.
  • Tagad flaneļa dēmons runā ar Kubernetes API serveri, lai zinātu visus pākšaugu IP un to attiecīgos mezglus, lai izveidotu kartējumus pākšaugu IP mezgliem IP.
  • Tīkla spraudnis iesaiņo šo paketi UDP paketē ar papildu galvenēm, kas maina avota un mērķa IP uz attiecīgajiem mezgliem, un nosūta šo pakešu caur eth0.
  • Tā kā maršruta tabula jau zina, kā maršrutēt satiksmi starp mezgliem, tā nosūta paketi uz galamērķa mezglu2.
  • Pakete nonāk mezgla2 eth0 un atgriežas pie flannel0, lai atbrīvotos no kapsulas, un izstaro to atpakaļ sakņu tīkla nosaukumvietā.
  • Atkal pakete tiek pārsūtīta uz Linux tiltu, lai veiktu ARP pieprasījumu, lai uzzinātu IP, kas pieder veth1.
  • Pakete beidzot šķērso sakņu tīklu un sasniedz galamērķi Pod4.

Tātad ārējie pakalpojumi ir savienoti ar iekļūšanas tīkla palīdzību. Tagad, kad es runāju par tīkla spraudņiem, ļaujiet man jūs iepazīstināt ar pieejamo populāro tīkla spraudņu sarakstu.

Tagad, kad esmu jums tik daudz stāstījis par Kubernetes Networking, ļaujiet man parādīt reālās dzīves gadījumu izpēti.

Gadījuma izpēte: bagātības vednis, izmantojot Kubernetes Networking

Wealth Wizards ir tiešsaistes finanšu plānošanas platforma, kas apvieno finanšu plānošanu un viedo programmatūras tehnoloģiju, lai sniegtu ekspertu konsultācijas par pieņemamām izmaksām.

Izaicinājumi

Tagad uzņēmumam bija ārkārtīgi svarīgi ātri atklāt un novērst koda ievainojamības, pilnībā redzot mākoņu vidi, taču vēlējās kontrolēt trafiku, izmantojot piekļuves ierobežojumus.

Tātad viņi izmantoja Kubernetes infrastruktūru, lai pārvaldītu kopu izveidi un izlaišanu, izmantojot rīkus, lai pārvaldītu mikropakalpojumu izvietošanu un konfigurēšanu visā Kube kopās.

Viņi arī izmantoja Kubernetes tīkla politikas funkciju, lai ļautu viņiem kontrolēt trafiku, izmantojot piekļuves ierobežojumus.

Tagad problēma bija tāda, ka šīs politikas ir orientētas uz lietojumprogrammām un var attīstīties tikai kopā ar lietojumprogrammām, taču nebija neviena komponenta, kas ieviestu šīs politikas.

Tātad vienīgais risinājums, ko uzņēmums varēja atrast, bija tīkla spraudņa izmantošana, un tāpēc viņi sāka izmantot Weave Net.

Risinājums

Šis tīkla spraudnis izveido virtuālo tīklu, kuram ir tīkla politikas kontrolleris, lai pārvaldītu un ieviestu Kubernetes kārtulas. Tas ne tikai apvieno Docker konteinerus vairākos resursdatoros un ļauj tos automātiski atrast.

Pieņemsim, ka jums ir klastera darba slodze un vēlaties pārtraukt jebkuru citu klastera darba slodzi, runājot ar to. To var panākt, izveidojot tīkla politiku, kas ierobežo piekļuvi un ļauj tai iekļūt tikai caur ieejas kontrolieri noteiktā ostā.

Tagad, ievietojot katrā Kubernetes mezglā, spraudnis pārvalda starppogu maršrutēšanu un tam ir piekļuve manipulācijām ar IPtables kārtulām. Vienkārši sakot, katra politika tiek pārveidota par IPtables kārtulu kolekciju, kas katrā mašīnā ir saskaņota un konfigurēta Kubernetes tagu tulkošanai.

Labi, tagad, kad esat izgājis tik daudz teoriju par Kubernetes Networking, ļaujiet man parādīt, kā tas tiek darīts praktiski.

Rokas virsū

Tātad, pieņemot, ka visi no jums ir instalējuši Kubernetes savās sistēmās, man ir jāparāda scenārijs.

Pieņemsim, ka vēlaties saglabāt produkta nosaukumu un produkta ID, tāpēc jums būs nepieciešama tīmekļa lietojumprogramma. Būtībā jums ir nepieciešams viens konteiners tīmekļa lietojumprogrammai un jums ir nepieciešams vēl viens konteiners kā MySQL aizmugurē, un MySQL konteineram jābūt saistītam ar tīmekļa lietojumprogrammas konteineru.

Kā būtu, es praktiski izpildu iepriekš minēto piemēru.

Sāksim!

1. darbība: Izveidojiet mapi vēlamajā direktorijā un mainiet darba direktorijas ceļu uz šo mapi.

mkdir HandsOn cd HandsOn /

2. solis: Tagad izveidojiet izvietošanas YAML failus tīmekļa lietojumprogrammai un MySQL datu bāzei.

3. solis: Kad esat izveidojis izvietošanas failus, izvietojiet abas lietojumprogrammas.

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

3.1. Darbība: Pārbaudiet abus izvietojumus.

kubectl saņemt izvietošanu

4. solis: Tagad jums ir jāizveido pakalpojumi abām lietojumprogrammām.

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

4.1. Darbība: Kad pakalpojumi ir izveidoti, izvietojiet pakalpojumus.

4.2. Darbība: Pārbaudiet, vai pakalpojumi ir izveidoti.

saņemt pakalpojumu

5. darbība: Tagad pārbaudiet darbojošo pākšu konfigurāciju.

kubectl dabūt pākstis

6. solis: Iet uz konteineru Webapp pod iekšpusē.

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

6.1. Solis : Tagad mainiet $ servera vārds no localhost līdz SQL pakalpojuma nosaukumam, kas ir “ webapp-sql1 ”Šajā gadījumā un $ parole no uz ' edureka ”. Aizpildiet arī visu nepieciešamo datu bāzes informāciju un saglabājiet failu index.php, izmantojot īsinājumtaustiņu Ctrl + x un pēc tam nospiediet lai saglabātu un nospiediet ievadiet .

7. solis: Tagad dodieties uz MySQL konteineru, kas atrodas podā.

kubectl exec it container_id bash

7.1. Darbība: Iegūstiet piekļuvi MySQL konteinera izmantošanai.

mysql -u sakne -p edureka

Kur -u apzīmē lietotāju un -p ir jūsu mašīnas parole.

7.2. Darbība: MySQL izveidojiet datu bāzi, kas tiks izmantota, lai iegūtu datus no tīmekļa lietotnes.

IZVEIDOT DATU BĀZI ProductDetails

7.3. Darbība: Izmantojiet izveidoto datu bāzi.

IZMANTOJIET produkta detaļas

7.4. Darbība: Šajā datu bāzē MySQL izveidojiet tabulu, kas tiks izmantota, lai iegūtu datus no tīmekļa lietotnes.

CREATE TABLE produkti (produkta nosaukums VARCHAR (10), produkta ID VARCHAR (11))

7.5. Darbība: Tagad izejiet arī no MySQL konteinera, izmantojot komandu Izeja .

8. solis: Pārbaudiet porta numuru, kurā darbojas jūsu tīmekļa lietojumprogramma.

saņemt pakalpojumus

8.1. Darbība: Tagad atveriet tīmekļa lietojumprogrammu, piešķirot tai piešķirto porta numuru.

9. solis: Kad esat noklikšķinājis uz Iesniegt vaicājumu , dodieties uz mezglu, kurā darbojas jūsu MySQL pakalpojums, un pēc tam dodieties iekšā konteinerā.

Tas parādīs visu to saraksta produktu izlaidi, par kuriem esat ievadījis detalizētu informāciju.

Vai jūs interesē Kubernetes mācīšanās?

Ja jums šis Kubernetes Networking emuārs šķita atbilstošs, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē.