Kubernetes Networking - Komplexný sprievodca koncepciami sietí v Kubernetes



Tento blog o Kubernetes Networking sa hlboko ponorí do konceptov zapojených do Kubernetes, ako je komunikácia s modulmi, službami a vstupnými sieťami.

V predchádzajúcom blogu na , musíte mať pochopenie pre Kubernetes. V tomto blogu o vytváraní sietí Kubernetes sa zameriam predovšetkým na koncepty vytvárania sietí, ktoré sú súčasťou Kubernetes.

V tomto blogu o sieťach Kubernetes pochopíte nasledujúce témy:





Čo je Kubernetes?

Kubernetes môžete definovať ako nástroj na orchestráciu kontajnerov typu open-source, ktorý poskytuje prenosnú platformu na automatizáciu nasadenia kontajnerovaných aplikácií.

Teraz musí ktokoľvek, kto pracuje s Kubernetes, jasne porozumieť klastru Kubernetes, pretože vám tak pomôže porozumieť sieti Kubernetes.



Klaster Kubernetes

Platforma Kubernetes ponúka požadované riadenie stavu, ktoré umožňuje spustenie klastrových služieb, napájanú konfiguráciu v infraštruktúre. Vysvetlím to na príklade.

Zvážte súbor YAML, ktorý obsahuje všetky informácie o konfigurácii, ktoré je potrebné vložiť do služieb klastra. Tento súbor sa teda privádza do API klastrových služieb a potom bude na klastrových službách, aby zistili, ako naplánovať pody v prostredí. Predpokladajme teda, že existujú dva obrázky kontajnera pre pod 1 s tromi replikami a jeden kontajnerový obrázok pre pod 2 s dvoma replikami, bude na klastrových službách, aby tieto páry pod-replík pridelili pracovníkom.

séria rekurzií fibonacci v jave

Klaster Kubernetes - Sieť Kubernetes - Edureka



Pozri vyššie uvedený diagram. Teraz, ako vidíte, služby klastra pridelili prvého pracovníka s dvoma pármi replík pod, druhého pracovníka s jedným párom replík pod a tretieho pracovníka s dvoma pármi replík pod. Teraz je to proces Kubelet, ktorý je zodpovedný za komunikáciu služieb klastra s pracovníkmi.

Celé toto nastavenie klastrových služieb a samotných pracovníkov to teda tvorí Klaster Kubernetes !!

Ako si myslíte, že tieto individuálne pridelené moduly navzájom komunikujú?

Odpoveď spočíva v sieti Kubernetes Networking!

Prihláste sa na odber nášho kanála na YouTube a získajte nové aktualizácie ..!

Sieťové koncepty je potrebné vyriešiť hlavne so 4 problémami.

  • Komunikácia kontajnera s kontajnerom
  • Komunikácia medzi jednotlivými pod
  • Komunikácia pod službou
  • Externá komunikácia služby

Teraz vám poviem, ako sa vyššie uvedené problémy riešia v rámci siete Kubernetes Networking.

Sieť Kubernetes

Komunikácia medzi modulmi, službami a externými službami s tými v klastri prináša koncept sieťovania Kubernetes.

Pre lepšie pochopenie mi teda dovoľte rozdeliť pojmy do nasledujúcich.

  • Komunikácia puzdier a kontajnerov
  • Služby
  • Externé pripojenie k službám prostredníctvom siete Ingress

Komunikácia puzdier a kontajnerov

Skôr ako vám poviem, ako komunikujú moduly, dovoľte mi predstaviť vám, čo sú moduly?

Pods

Pody sú základné jednotky aplikácií Kubernetes, ktoré pozostávajú z jedného alebo viacerých kontajnerov pridelených tomu istému hostiteľovi na zdieľanie sieťového zásobníka a ďalších zdrojov. To teda znamená, že všetky kontajnery v zásobníku môžu dosiahnuť iné na miestnom hostiteľovi.

Teraz vám poviem, ako tieto pody komunikujú?

Existujú 2 typy komunikácie. The medzidodová komunikácia a komunikácia v rámci uzla.

Začnime teda s komunikáciou v rámci uzla, ale predtým vám predstavím komponenty siete pod.

V rámci uzla v rámci siete

Sieť vnútri uzla je v podstate komunikácia medzi dvoma rôznymi uzlami na rovnakom pod. Vysvetlím vám to na príklade.

Predpokladajme, že paket prechádza z pod1 do pod2.

  • Paket opúšťa sieť Pod 1 na pozícii eth0 a do koreňovej siete vstupuje na veth0
  • Potom paket prechádza na linuxový most (cbr0), ktorý zisťuje cieľ pomocou požiadavky ARP
  • Takže ak má veth1 IP, mostík teraz vie, kam má smerovať paket.

Teraz vám podobne poviem o komunikácii medzi uzlami.

Máte záujem o štúdium Kubernetes?
Medz uzol pod sieťou

Zvážte dva uzly, ktoré majú rôzne sieťové menné priestory, sieťové rozhrania a most Linux.

Teraz predpokladajme, že paket cestuje z pod1 do pod4, ktorý je na inom uzle.

  • Paket opúšťa sieť pod 1 a vstupuje do koreňovej siete v veth0
  • Potom paket prechádza na most Linux (cbr0), ktorého zodpovednosťou je vykonať požiadavku ARP na nájdenie cieľa.
  • Keď si most uvedomí, že tento modul nemá cieľovú adresu, paket sa vráti späť do hlavného sieťového rozhrania eth0.
  • Paket teraz opustí uzol 1, aby našiel cieľ v druhom uzle, a vstúpi do smerovacej tabuľky, ktorá smeruje paket do uzla, ktorého blok CIDR obsahuje pod4.
  • Takže teraz paket dosiahne node2 a potom most vezme paket, ktorý urobí ARP požiadavku na zistenie, že IP patriaca do veth0.
  • Nakoniec paket pretína dvojicu potrubí a dosiahne pod4.

Takto medzi sebou komunikujú moduly. Teraz poďme ďalej a pozrime sa, ako služby pomáhajú pri komunikácii podov.

Takže, čo si myslíte, aké sú služby?

Služby

Služby sú v zásade typom prostriedku, ktorý konfiguruje proxy na preposielanie požiadaviek do sady podov, ktoré budú dostávať prenosy & je určený selektorom. Akonáhle je služba vytvorená, má pridelenú IP adresu, ktorá bude prijímať požiadavky na porte.

Teraz existujú rôzne typy služieb, ktoré vám dávajú možnosť vystaviť službu mimo vašej adresy IP klastra.

Druhy služieb

Existujú hlavne 4 typy služieb.

ClusterIP: Toto je predvolený typ služby, ktorý sprístupňuje službu na internej adrese IP klastra tak, že je služba dostupná iba v rámci klastra.

NodePort: To vystavuje službu na IP každého uzla na statickom porte. Keďže, a ClusterIP služba, na ktorú bude služba NodePort smerovať, sa vytvorí automaticky. Službu NodePort môžeme kontaktovať mimo klastra.

LoadBalancer: Toto je typ služby, ktorý externe vystavuje službu pomocou nástroja na vyrovnávanie zaťaženia poskytovateľa cloudu. Takže služby NodePort a ClusterIP, na ktoré bude smerovať externý nástroj na vyrovnávanie zaťaženia, sa vytvárajú automaticky.

ExternalName : Tento typ služby mapuje službu na obsah externalName pole vrátením a CNAME záznam s jeho hodnotou.

Takže, chlapci, všetko to bolo o službách. Možno by vás zaujímalo, ako sa k týmto sieťam pripájajú externé služby?

To nie je nič iné ako Sieť Ingress .

Sieť Ingress

Sieť Ingress je najúčinnejším spôsobom vystavovania služieb, pretože je to súbor pravidiel, ktoré umožňujú prichádzajúce spojenia a ktoré je možné nakonfigurovať tak, aby poskytovali služby externe prostredníctvom prístupných adries URL. V podstate teda funguje ako vstupný bod do klastra Kubernetes, ktorý spravuje externý prístup k službám v klastri.

Teraz vám na príklade vysvetlím fungovanie siete Ingress.

Máme 2 uzly, ktoré majú menný priestor pod a koreňovej siete s mostom Linux. Okrem toho máme do koreňovej siete pridané aj nové virtuálne ethernetové zariadenie s názvom flannel0 (sieťový doplnok).

Teraz chceme, aby paket prechádzal z pod1 do pod 4.

  • Paket teda opúšťa sieť pod1 na pozícii eth0 a do koreňovej siete vstupuje na veth0.
  • Potom sa odovzdá cbr0, čo spôsobí, že ARP požiada o nájdenie cieľa a potom zistí, že nikto v tomto uzle nemá cieľovú adresu IP.
  • Most teda pošle paket na flannel0, pretože smerovacia tabuľka uzla je nakonfigurovaná na flannel0.
  • Teraz flanelový démon hovorí so serverom API Kubernetes, aby poznal všetky adresy IP pod a ich príslušné uzly, aby vytvoril mapovanie pre pody IP na IP uzlov.
  • Sieťový doplnok zabalí tento paket do paketu UDP s ďalšími hlavičkami, ktoré zmenia zdrojovú a cieľovú adresu IP na svoje príslušné uzly a tento paket odošle cez ether0.
  • Teraz, pretože smerovacia tabuľka už vie, ako smerovať prenos medzi uzlami, odošle paket do cieľového uzla2.
  • Paket dorazí na eth0 uzla2 a vráti sa späť na flannel0, aby sa zbavil kapsuly a vyšle ho späť do priestoru názvov koreňovej siete.
  • Paket sa opäť pošle na linuxový most, aby urobil požiadavku ARP na zistenie IP, ktoré patrí k veth1.
  • Paket nakoniec prekročí koreňovú sieť a dostane sa do cieľa Pod4.

Takto sú externé služby prepojené pomocou vnikajúcej siete. Teraz, keď som hovoril o sieťových doplnkoch, dovoľte mi predstaviť vám zoznam populárnych dostupných sieťových doplnkov.

Teraz, keď som vám toho už veľa povedal o sieti Kubernetes Networking, ukážem vám prípadovú štúdiu z reálneho života.

Prípadová štúdia: Sprievodca bohatstvom pomocou sietí Kubernetes

Wealth Wizards je online platforma pre finančné plánovanie, ktorá kombinuje finančné plánovanie a inteligentnú softvérovú technológiu a poskytuje odborné poradenstvo za prijateľnú cenu.

Výzvy

Teraz bolo pre spoločnosť nesmierne dôležité rýchlo odhaliť a eliminovať zraniteľnosti kódu s plnou viditeľnosťou ich cloudového prostredia, ale chcela som riadiť prenos cez obmedzenia prístupu.

Takže využili infraštruktúru Kubernetes na správu poskytovania a zavádzania klastrov pomocou nástrojov na správu nasadenia a konfigurácie mikroslužieb v klastroch Kube.

Použili tiež funkciu sieťovej politiky Kubernetes, ktorá im umožnila riadiť prenos cez obmedzenia prístupu.

Problém však bol v tom, že tieto politiky sú orientované na aplikácie a môžu sa vyvíjať iba spolu s aplikáciami, avšak neexistovala žiadna súčasť na vynútenie týchto politík.

Jediným riešením, ktoré pre to mohla spoločnosť nájsť, bolo použiť sieťový doplnok, a preto začali používať Weave Net.

Riešenie

Tento sieťový doplnok vytvára virtuálnu sieť, ktorá má radič sieťovej politiky na správu a presadzovanie pravidiel v Kubernetes. Nielen to, ale tiež spája Dockerove kontajnery medzi viacerými hostiteľmi a umožňuje ich automatické zisťovanie.

Predpokladajme teda, že máte v klastri pracovné zaťaženie a chcete zastaviť akékoľvek ďalšie pracovné zaťaženie v klastri, aby s ním hovorilo. Môžete to dosiahnuť vytvorením sieťovej politiky, ktorá obmedzuje prístup a umožňuje do nej vstup iba cez vstupný radič na konkrétnom porte.

Teraz so svojim nasadením na každom uzle Kubernetes tento doplnok spravuje smerovanie medzi jednotlivými podmi a má prístup na manipuláciu s pravidlami IPtables. Zjednodušene povedané, každá zásada sa prevedie na kolekciu pravidiel IPtables, koordinovaných a nakonfigurovaných na každom stroji na preklad značiek Kubernetes.

Dobre, teraz, keď ste už prešli toľkou teóriou o sieti Kubernetes Networking, dovoľte mi ukázať vám, ako sa to deje prakticky.

Hands-On

Takže za predpokladu, že ste si všetci nainštalovali na svoje systémy Kubernetes, mám predviesť scenár.

Predpokladajme, že chcete uložiť názov a ID produktu, na čo budete potrebovať webovú aplikáciu. V zásade potrebujete jeden kontajner pre webovú aplikáciu a jeden ďalší kontajner ako MySQL pre backend. Tento kontajner MySQL by mal byť prepojený s kontajnerom webových aplikácií.

Čo tak uskutočniť uvedený príklad v praxi.

Začnime!

Krok 1: Vytvorte priečinok v požadovanom adresári a zmeňte cestu k pracovnému adresáru k tomuto priečinku.

mkdir HandsOn cd HandsOn /

Krok 2: Teraz vytvorte nasadenie súborov YAML pre webovú aplikáciu a databázu MySQL.

Krok 3: Po vytvorení súborov nasadenia nasaďte obe aplikácie.

kubectl apply -f webapp.yml kubectl apply -f mysql.yml

Krok 3.1: Skontrolujte obe nasadenia.

kubectl získať nasadenie

Krok 4: Teraz musíte pre obidve aplikácie vytvoriť služby.

kubectl použiť -f webová služba.yml kubectl použiť -f sqlservice.yml

Krok 4.1: Po vytvorení služieb ich nasaďte.

Krok 4.2: Skontrolujte, či boli služby vytvorené alebo nie.

kubectl dostať službu

Krok 5: Teraz skontrolujte konfiguráciu spustených podov.

kubectl get pods

Krok 6: Prejdite do kontajnera vo vnútri modulu webapp.

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

Krok 6.1 : Teraz zmeňte $ názov servera z localhost na názov služby SQL, ktorý je „ webapp-sql1 „V tomto prípade a $ heslo od do ' edureka “. Vyplňte tiež všetky požadované údaje o databáze a uložte súbor index.php pomocou klávesovej skratky Ctrl + x a po tejto tlači Y. uložte a stlačte vstúpiť .

Krok 7: Teraz choďte do kontajnera MySQL, ktorý sa nachádza v podu.

kubectl exec to container_id bash

Krok 7.1: Získajte prístup na používanie kontajnera MySQL.

mysql -u root -p edureka

Kde -u predstavuje používateľa a -p je heslo vášho zariadenia.

Krok 7.2: Vytvorte databázu v MySQL, ktorá bude slúžiť na získavanie údajov z webapp.

VYTVORIŤ DATABÁZU ProductDetails

Krok 7.3: Použite vytvorenú databázu.

POUŽÍVAJTE podrobnosti o produkte

Krok 7.4: Vytvorte v tejto databáze tabuľku v MySQL, ktorá sa použije na získanie údajov z webapp.

CREATE TABLE produkty (product_name VARCHAR (10), product_id VARCHAR (11))

Krok 7.5: Teraz pomocou príkazu ukončite aj kontajner MySQL východ .

Krok 8: Skontrolujte číslo portu, na ktorom vaša webová aplikácia pracuje.

kubectl získať služby

Krok 8.1: Teraz otvorte webovú aplikáciu na pridelenom čísle portu.

Krok 9: Akonáhle kliknete na Odoslať dopyt , prejdite na uzol, v ktorom je spustená vaša služba MySQL, a potom choďte dovnútra kontajnera.

Zobrazí sa výstup všetkých zoznamových produktov, o ktorých ste vyplnili podrobnosti.

Máte záujem o štúdium Kubernetes?

Ak sa vám zdá tento blog Kubernetes Networking relevantný, pozrite si stránku autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete.