Xarxes de Kubernetes: una guia completa sobre els conceptes de xarxes de Kubernetes



Aquest bloc sobre xarxes de Kubernetes aprofundirà en els conceptes implicats en Kubernetes com ara la comunicació amb pods, serveis i xarxes d’entrada.

Al bloc anterior de , heu d'haver entès Kubernetes. En aquest bloc sobre xarxes de Kubernetes, em centraré principalment en els conceptes de xarxa que participen a Kubernetes.

En aquest bloc de Kubernetes Networking, entendreu els temes següents:





Què és Kubernetes?

Podeu definir Kubernetes com una eina d’orquestració de contenidors de codi obert que proporciona una plataforma portàtil per automatitzar el desplegament d’aplicacions en contenidors.

Ara, qualsevol persona que treballi amb Kubernetes ha de tenir una clara comprensió del clúster de Kubernetes, ja que us ajudarà a entendre la xarxa de Kubernetes.



Clúster de Kubernetes

La plataforma Kubernetes ofereix la gestió d’estats desitjada, que permet executar els serveis del clúster, la configuració alimentada a la infraestructura. Deixeu-me explicar-ho amb un exemple.

Penseu en un fitxer YAML que conté tota la informació de configuració que cal introduir als serveis del clúster. Per tant, aquest fitxer s’alimenta a l’API dels serveis de clúster i, a continuació, dependrà dels serveis de clúster esbrinar com planificar pods a l’entorn. Per tant, suposem que hi ha dues imatges de contenidors per al pod 1 amb tres rèpliques i una imatge de contenidor per al pod 2 amb dues rèpliques, correspondrà als serveis del clúster assignar aquests parells pod-rèplica als treballadors.

com trobar la longitud de la matriu al javascript

Kubernetes Cluster - Xarxes de Kubernetes - Edureka



Consulteu l'esquema anterior. Ara, com podeu veure, els serveis del clúster han assignat el primer treballador amb dos parells de rèpliques de pods, el segon treballador amb un sol parell de rèplica de pods i el tercer treballador amb dos parells de rèpliques de pods. Ara és el procés de Kubelet qui s’encarrega de comunicar els serveis del clúster amb els treballadors.

Per tant, tota aquesta configuració de serveis de clústers i els mateixos treballadors la componen Clúster de Kubernetes !!

Com creieu que es comuniquen aquestes beines assignades individualment?

La resposta està en Kubernetes Networking.

Subscriu-te al nostre canal de youtube per obtenir noves actualitzacions ..!

Hi ha principalment 4 problemes per resoldre amb els conceptes de xarxa.

  • Comunicació de contenidor a contenidor
  • Comunicació de pod a pod
  • Pod a la comunicació de servei
  • Comunicació externa al servei

Ara, deixeu-me explicar-vos com es resolen els problemes anteriors amb Kubernetes Networking.

Xarxes de Kubernetes

La comunicació entre pods, serveis i serveis externs als d'un clúster aporta el concepte de xarxa de Kubernetes.

Per tant, per a una millor comprensió, deixeu-me dividir els conceptes en els següents.

  • Pods & Communication Container
  • Serveis
  • Connexió externa als serveis mitjançant la xarxa d’entrada

Pods & Communication Container

Abans de dir-vos com es comuniquen les beines, permeteu-me presentar-vos què són les beines?

Beines

Els pods són unitats bàsiques de les aplicacions de Kubernetes, que consisteixen en un o més contenidors assignats al mateix amfitrió per compartir una pila de xarxa i altres recursos. Per tant, això implica que tots els contenidors d’un contenidor poden arribar a altres d’un host local.

Ara, deixeu-me informar-vos sobre com es comuniquen aquestes beines?

Hi ha 2 tipus de comunicació. El comunicació entre nodes i la comunicació intra-node.

Comencem, doncs, amb la comunicació intra-node, però abans us permetré presentar-vos els components de la xarxa de pods.

Intra-node a la xarxa

La xarxa de pods intra-nòdics és bàsicament la comunicació entre dos nodes diferents del mateix pod. Deixeu-me que us expliqui amb un exemple.

Suposem que un paquet va de pod1 a pod2.

  • El paquet surt de la xarxa de Pod 1 a eth0 i entra a la xarxa arrel a veth0
  • Després, el paquet passa al pont Linux (cbr0) que descobreix la destinació mitjançant una sol·licitud ARP
  • Per tant, si veth1 té la IP, el pont ja sap on reenviar el paquet.

Ara, de la mateixa manera, permeteu-me que us expliqui la comunicació entre pods entre nodes.

T’interessa aprendre Kubernetes?
Internode sota la xarxa

Penseu en la possibilitat de dos nodes que tinguin diversos espais de noms de xarxa, interfícies de xarxa i un pont de Linux.

Ara, suposem que un paquet viatja de pod1 a pod4 que es troba en un node diferent.

  • El paquet surt de la xarxa del pod 1 i entra a la xarxa arrel a veth0
  • A continuació, el paquet passa al pont Linux (cbr0) la responsabilitat del qual és fer una sol·licitud ARP per trobar la destinació.
  • Després que el pont s’adona que aquest pod no té l’adreça de destinació, el paquet torna a la interfície de xarxa principal eth0.
  • Ara el paquet surt del node 1 per trobar la destinació a l’altre node i entra a la taula de ruta que encamina el paquet cap al node el bloc CIDR del qual conté el pod4.
  • Per tant, ara el paquet arriba al node2 i el pont agafa el paquet que fa una sol·licitud ARP per esbrinar que la IP pertanyent a veth0.
  • Finalment, el paquet creua el parell de canonades i arriba a pod4.

Així doncs, així es comuniquen les beines entre elles. Ara, anem a continuar i veurem com els serveis ajuden a la comunicació de pods.

Què creieu que són els serveis?

Serveis

Bàsicament, els serveis són un tipus de recurs que configura un servidor intermediari per reenviar les sol·licituds a un conjunt de pods, que rebran trànsit i serà determinat pel selector. Un cop creat el servei, té una adreça IP assignada que acceptarà les sol·licituds al port.

Ara hi ha diversos tipus de serveis que us ofereixen l'opció d'exposar un servei fora de l'adreça IP del clúster.

Tipus de serveis

Hi ha principalment 4 tipus de serveis.

ClústerIP: Aquest és el tipus de servei predeterminat que exposa el servei a una IP interna del clúster fent que el servei només sigui accessible al clúster.

NodePort: Això exposa el servei a la IP de cada node en un port estàtic. Des de, a ClusterIP automàticament es crea el servei al qual s’enviarà el servei NodePort. Podem contactar amb el servei NodePort fora del clúster.

LoadBalancer: Aquest és el tipus de servei que exposa el servei externament mitjançant l’equilibrador de càrrega d’un proveïdor de núvol. Per tant, es creen automàticament els serveis NodePort i ClusterIP, als quals s’enviarà l’equilibrador de càrrega extern.

Nom extern : Aquest tipus de servei assigna el servei al contingut del fitxer Nom extern retornant un camp CNAME registre amb el seu valor.

Per tant, nois, això era tot sobre serveis. Ara, us podeu preguntar com es connecten els serveis externs a aquestes xarxes, oi?

Bé, això no és cap altre que Xarxa d’entrada .

Xarxa d’entrada

Bé, la xarxa Ingress és la forma més potent d’exposar els serveis, ja que és una col·lecció de regles que permeten les connexions entrants, que es poden configurar per donar serveis externament mitjançant URL accessibles. Per tant, bàsicament actua com a punt d’entrada al clúster Kubernetes que gestiona l’accés extern als serveis d’un clúster.

Ara, permeteu-me explicar-vos el funcionament d’Ingress Network amb un exemple.

Tenim 2 nodes, que tenen els espais de noms de la xarxa pod i root amb un pont de Linux. A més d’això, també tenim un nou dispositiu ethernet virtual anomenat flannel0 (connector de xarxa) afegit a la xarxa arrel.

Ara volem que el paquet flueixi de pod1 a pod 4.

  • Per tant, el paquet surt de la xarxa de pod1 a eth0 i entra a la xarxa arrel a veth0.
  • A continuació, es passa a cbr0, que fa la sol·licitud ARP per trobar la destinació i, posteriorment, descobreix que ningú d'aquest node té l'adreça IP de destinació.
  • Per tant, el pont envia el paquet a flannel0 ja que la taula de rutes del node es configura amb flannel0.
  • Ara, el dimoni de franel·la parla amb el servidor API de Kubernetes per conèixer totes les IP de pod i els seus respectius nodes per crear assignacions per a IPs de pods a IP de nodes.
  • El connector de xarxa embolcalla aquest paquet en un paquet UDP amb capçaleres addicionals que canvien les IP d’origen i de destinació als seus respectius nodes i envia aquest paquet mitjançant eth0.
  • Ara, com que la taula de rutes ja sap encaminar el trànsit entre nodes, envia el paquet al node2 de destinació.
  • El paquet arriba a eth0 del node2 i torna a flannel0 per descapsular i l’emet de nou a l’espai de noms de la xarxa arrel.
  • Una vegada més, el paquet es reenvia al pont Linux per fer una sol·licitud ARP per esbrinar la IP que pertany a veth1.
  • El paquet finalment creua la xarxa arrel i arriba al Pod4 de destinació.

Per tant, així es connecten els serveis externs amb l’ajut d’una xarxa d’entrada. Ara, mentre parlava de connectors de xarxa, permeteu-me presentar-vos la llista de connectors de xarxa populars disponibles.

Ara, que us he explicat tantes coses sobre Kubernetes Networking, permeteu-me que us mostri un cas pràctic real.

Estudi de cas: assistent de riquesa que utilitza la xarxa de Kubernetes

Wealth Wizards és una plataforma de planificació financera en línia que combina la planificació financera i la tecnologia de programari intel·ligent per oferir assessorament expert a un cost assequible.

Desafiaments

Ara, era extremadament important que l’empresa descobrís i eliminés ràpidament les vulnerabilitats del codi amb una visibilitat completa del seu entorn al núvol, però volia controlar el trànsit mitjançant restriccions d’accés.

Per tant, van utilitzar la infraestructura de Kubernetes per gestionar el subministrament i el desplegament dels clústers amb l'ajut d'eines per gestionar el desplegament i la configuració de microserveis a través dels clústers de Kube.

També van utilitzar una característica de política de xarxa de Kubernetes per permetre'ls controlar el trànsit mitjançant restriccions d'accés.

Ara, el problema era que aquestes polítiques estan orientades a l’aplicació i només poden evolucionar amb les aplicacions, però no hi havia cap component per fer complir aquestes polítiques.

Per tant, l’única solució que la companyia podia trobar per a això era utilitzar un connector de xarxa i, per tant, van començar a utilitzar Weave Net.

Solució

Aquest connector de xarxa crea una xarxa virtual que té un controlador de polítiques de xarxa per gestionar i fer complir les regles de Kubernetes. No només això, sinó que també connecta els contenidors Docker entre diversos hosts i permet el seu descobriment automàtic.

Per tant, suposem que teniu una càrrega de treball al clúster i voleu aturar qualsevol altra càrrega de treball del clúster que hi parli. Per aconseguir-ho, creeu una política de xarxa que restringeixi l'accés i que només permeti l'entrada a través del controlador d'entrada d'un port específic.

Ara, amb el seu desplegament a cada node Kubernetes, el connector gestiona l'encaminament entre pods i té accés per manipular les regles IPtables. En termes senzills, cada política es converteix en una col·lecció de regles IPtables, coordinades i configurades a cada màquina per traduir les etiquetes de Kubernetes.

Molt bé, ara que heu passat tanta teoria sobre les xarxes de Kubernetes, deixeu-me mostrar-vos com es fa pràcticament.

Mans amunt

Per tant, amb la suposició que tots heu instal·lat Kubernetes als vostres sistemes, tinc un escenari per mostrar.

Suposem que voleu emmagatzemar el nom del producte i l'identificador del producte, per això necessitareu una aplicació web. Bàsicament, necessiteu un contenidor per a aplicacions web i necessiteu un contenidor més com a MySQL per al dorsal, i aquest contenidor MySQL hauria d’estar enllaçat amb el contenidor d’aplicacions web.

Què tal si executaria pràcticament l'exemple esmentat anteriorment?

Comencem!

Pas 1: Creeu una carpeta al directori desitjat i canvieu la ruta del directori de treball a aquesta carpeta.

mkdir HandsOn cd HandsOn /

Pas 2: Ara creeu fitxers YAML de desplegament per a l’aplicació web i la base de dades MySQL.

Pas 3: Un cop creeu els fitxers de desplegament, desplegueu les dues aplicacions.

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

Pas 3.1: Comproveu els dos desplegaments.

kubectl obté el desplegament

Pas 4: Ara heu de crear serveis per a les dues aplicacions.

kubectl apply -f webservice.yml kubectl apply -f sqlservice.yml

Pas 4.1: Un cop creats els serveis, implementeu-los.

Pas 4.2: Comproveu si els serveis s’han creat o no.

kubectl obté el servei

Pas 5: Ara, comproveu la configuració dels pods en execució.

kubectl aconsegueix beines

Pas 6: Aneu al contenidor que hi ha a l'interior del pod webapp.

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

Pas 6.1 : Ara, canvieu el fitxer $ servername de localhost al nom del servei SQL que és ' webapp-sql1 ”En aquest cas, i $ contrasenya de '' a ' edureka ”. A més, empleneu tots els detalls de la base de dades necessaris i deseu el fitxer index.php mitjançant la drecera de teclat Ctrl + x i després d'això premeu i per desar i prémer entrar .

Pas 7: Ara, aneu al contenidor MySQL present al pod.

kubectl l'executa container_id bash

Pas 7.1: Obteniu accés per utilitzar el contenidor MySQL.

mysql -u arrel -p edureka

On -u representa l'usuari i -p és la contrasenya del vostre equip.

Pas 7.2: Creeu una base de dades a MySQL que s'utilitzarà per obtenir dades de l'aplicació web.

CREA LA BASE DE DADES Detalls del producte

Pas 7.3: Utilitzeu la base de dades creada.

ÚS Detalls del producte

Pas 7.4: Creeu una taula en aquesta base de dades a MySQL que s'utilitzarà per obtenir dades de l'aplicació web.

CREA TABLE productes (product_name VARCHAR (10), product_id VARCHAR (11))

Pas 7.5: Ara, també sortiu del contenidor MySQL mitjançant l'ordre sortir .

Pas 8: Comproveu el número de port en què treballa la vostra aplicació web.

kubectl obté serveis

Pas 8.1: Ara, obriu l'aplicació web al número de port assignat.

Pas 9: Un cop feu clic a Envia consulta , aneu al node on s’executa el vostre servei MySQL i, a continuació, aneu al contenidor.

Això us mostrarà la sortida de tots els productes de la llista, dels quals heu emplenat els detalls.

T’interessa aprendre Kubernetes?

Si heu trobat rellevant aquest blog de Kubernetes Networking, consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món.