Kubernetes Networking - Isang Komprehensibong Gabay Sa Mga Konsepto sa Networking Sa Kubernetes



Ang blog na ito sa Kubernetes Networking ay lalalim sa mga konsepto na kasangkot sa Kubernetes tulad ng komunikasyon sa mga pod, serbisyo at network ng pagpasok.

Sa nakaraang blog sa , dapat ay nagkaroon ka ng pag-unawa sa Kubernetes. Sa blog na ito sa Kubernetes networking, pangunahing tututok ako sa mga konsepto ng networking na kasangkot sa Kubernetes.

Sa blog na ito sa Kubernetes Networking, mauunawaan mo ang mga sumusunod na paksa:





Ano ang Kubernetes?

Maaari mong tukuyin ang Kubernetes bilang isang open-source container orchestration tool na nagbibigay ng isang portable platform para sa pag-automate ng paglalagay ng mga containerized application.

Ngayon, ang sinumang nagtatrabaho kasama ang Kubernetes ay dapat magkaroon ng isang malinaw na pag-unawa sa Kubernetes Cluster dahil makakatulong ito sa iyo na maunawaan ang Kubernetes Networking.



Kubernetes Cluster

Nag-aalok ang Kubernetes platform ng ninanais na pamamahala ng estado, na nagbibigay-daan sa mga serbisyo ng cluster na tumakbo, ang pinakain na pagsasaayos sa imprastraktura. Hayaan mong ipaliwanag ko sa isang halimbawa.

Isaalang-alang ang isang YAML file na mayroong lahat ng impormasyon sa pagsasaayos na kailangang mapakain sa mga serbisyo ng cluster. Kaya, ang file na ito ay pinakain sa API ng mga serbisyo ng cluster, at pagkatapos ay bahala ang mga serbisyo ng cluster upang malaman kung paano iiskedyul ang mga pod sa kapaligiran. Kaya, ipagpalagay na mayroong dalawang mga imahe ng lalagyan para sa pod 1 na may tatlong mga replika, at isang imahe ng lalagyan para sa pod 2 na may dalawang mga replica, bahala ang mga serbisyo ng cluster upang ilaan ang mga pares na ito ng pod-replica sa mga manggagawa.

basahin ang xml file sa halimbawa ng java

Kubernetes Cluster - Kubernetes Networking - Edureka



Sumangguni sa diagram sa itaas. Ngayon, tulad ng nakikita mo na ang mga serbisyo ng cluster ay inilaan ang unang manggagawa na may dalawang pares ng replica ng pod, ang pangalawang manggagawa na may isang solong pares na pod-replica, at ang pangatlong manggagawa na may dalawang pares ng replica ng pod. Ngayon, ito ang proseso ng Kubelet na responsable para maipaabot ang mga serbisyo sa cluster sa mga manggagawa.

Kaya, ang buong pag-set up na ito ng mga serbisyo ng cluster at ang mga manggagawa mismo ang bumubuo nito Kubernetes cluster !!

Sa palagay, paano sa palagay ang mga indibidwal na inalok na pod na ito ay nakikipag-usap sa bawat isa?

Ang sagot ay nakasalalay sa Kubernetes Networking!

Mag-subscribe sa aming youtube channel upang makakuha ng mga bagong update ..!

Higit sa lahat ay mayroong 4 na problema upang malutas ang mga konsepto ng networking.

  • Lalagyan ng komunikasyon sa lalagyan
  • Pod to pod Communication
  • Pod sa komunikasyon sa serbisyo
  • Panlabas sa serbisyo ng Komunikasyon

Ngayon, hayaan mong sabihin ko sa iyo kung paano malulutas ang mga problema sa itaas sa Kubernetes Networking.

Kubernetes Networking

Ang komunikasyon sa pagitan ng mga pod, serbisyo at panlabas na serbisyo sa mga nasa isang kumpol ay nagdudulot ng konsepto ng Kubernetes networking.

Kaya, para sa iyong mas mahusay na pag-unawa hayaan mo akong hatiin ang mga konsepto sa mga sumusunod.

  • Mga Komunikasyon sa Pod & Container
  • Mga serbisyo
  • Pagkonekta sa Panlabas sa Mga Serbisyo sa pamamagitan ng Ingress Network

Mga Komunikasyon sa Pod & Container

Bago ko sabihin sa iyo kung paano nakikipag-usap ang mga pods, hayaan mo akong ipakilala kung ano ang mga pod?

Mga pod

Ang mga pod ay pangunahing yunit ng mga aplikasyon ng Kubernetes, na binubuo ng isa o higit pang mga lalagyan na inilalaan sa parehong host upang magbahagi ng isang stack ng network at iba pang mga mapagkukunan. Kaya, nagpapahiwatig ito na ang lahat ng mga lalagyan sa isang pod ay maaaring maabot ang iba pa sa isang lokal na host.

Ngayon, hayaan mo akong ibigay sa iyo kung paano nakikipag-usap ang mga pod na ito?

Mayroong 2 uri ng komunikasyon. Ang komunikasyon sa pagitan ng node at ang komunikasyon sa intra-node.

Kaya, magsimula tayo sa komunikasyon na intra-node, ngunit bago iyon hayaan mo akong ipakilala sa iyo ang mga bahagi ng pod network.

Intra-node Sa ilalim ng Network

Intra-node pod network ay karaniwang ang komunikasyon sa pagitan ng dalawang magkakaibang mga node sa parehong pod. Hayaan mong ipaliwanag ko sa iyo ng isang halimbawa.

Ipagpalagay na ang isang packet ay pupunta mula pod1 hanggang pod2.

  • Ang packet ay umalis sa network ng Pod 1 sa eth0 at pumapasok sa root network sa veth0
  • Pagkatapos, ang packet ay dumadaan sa tulay ng Linux (cbr0) na nadiskubre ang patutunguhan gamit ang isang kahilingan sa ARP
  • Kaya, kung ang veth1 ay may IP, alam ng tulay ngayon kung saan ipapasa ang packet.

Ngayon, katulad na hayaan mong sabihin ko sa iyo ang tungkol sa inter-node pod na komunikasyon.

Interesado sa Pag-aaral ng Kubernetes?
Inter-node sa ilalim ng network

Isaalang-alang ang dalawang mga node na mayroong iba't ibang mga namespace sa network, mga interface ng network, at isang tulay sa Linux.

Ngayon, ipagpalagay na ang isang packet ay naglalakbay mula sa pod1 patungo sa isang pod4 na nasa ibang node.

  • Ang packet ay umalis sa pod 1 network at pumapasok sa root network sa veth0
  • Pagkatapos ang packet ay ipinapasa sa tulay ng Linux (cbr0) na ang responsibilidad ay gumawa ng isang kahilingan sa ARP upang hanapin ang patutunguhan.
  • Matapos mapagtanto ng tulay na ang pod na ito ay walang patutunguhang address, bumalik ang packet sa pangunahing network interface na eth0.
  • Ang packet ay umalis ngayon sa node 1 upang hanapin ang patutunguhan nito sa kabilang node at pumapasok sa talahanayan ng ruta kung sino ang nagruta sa packet sa node na ang CIDR block ay naglalaman ng pod4.
  • Kaya, ngayon ang packet ay umabot sa node2 at pagkatapos ay ang tulay ay tumatagal ng packet na gumagawa ng isang kahilingan sa ARP upang malaman na ang IP na kabilang sa veth0.
  • Sa wakas, tumatawid ang packet sa pares ng tubo at umabot sa pod4.

Kaya, ganoon ang pakikipag-usap ng mga pod sa bawat isa. Ngayon, magpatuloy tayo at makita kung paano makakatulong ang mga serbisyo sa komunikasyon ng mga pod.

Kaya, ano sa palagay mo ang mga serbisyo?

Mga serbisyo

Talaga, ang mga serbisyo ay isang uri ng mapagkukunan na nag-configure ng isang proxy upang ipasa ang mga kahilingan sa isang hanay ng mga pod, na makakatanggap ng trapiko at natutukoy ng tagapili. Sa sandaling nalikha ang serbisyo mayroon itong itinalagang IP address na tatanggap ng mga kahilingan sa port.

Ngayon, mayroong iba't ibang mga uri ng serbisyo na magbibigay sa iyo ng pagpipilian para sa paglalantad ng isang serbisyo sa labas ng iyong cluster IP address.

Mga uri ng Serbisyo

Higit sa lahat mayroong 4 na uri ng mga serbisyo.

ClusterIP: Ito ang default na uri ng serbisyo na naglalantad sa serbisyo sa isang cluster-internal IP sa pamamagitan ng paggawa ng serbisyo na maabot lamang sa loob ng kumpol.

NodePort: Inilalantad nito ang serbisyo sa bawat Node's IP sa isang static port. Dahil, a ClusterIP ang serbisyo, kung saan ang ruta ng serbisyo ng NodePort ay isinasara, ay awtomatikong nilikha. Maaari kaming makipag-ugnay sa serbisyo ng NodePort sa labas ng kumpol.

LoadBalancer: Ito ang uri ng serbisyo na naglalantad sa panlabas na serbisyo gamit ang load balancer ng isang cloud provider. Kaya, ang mga serbisyo ng NodePort at ClusterIP, kung saan ang ruta ng panlabas na load balancer ay awtomatikong nilikha.

Pangalan ng Panlabas : Ang uri ng serbisyo na ito ay nai-mapa ang serbisyo sa mga nilalaman ng panlabas na Pangalan bukid sa pamamagitan ng pagbabalik a CNAME itala kasama ang halaga nito.

Kaya, ang mga tao ay tungkol sa mga serbisyo. Ngayon, maaaring nagtataka ka kung paano kumokonekta ang mga panlabas na serbisyo sa mga network na ito nang tama?

Sa gayon, iyon ay walang iba kundi Ingress Network .

Ingress Network

Sa gayon, ang network ng Ingress ay ang pinakamakapangyarihang paraan ng paglantad ng mga serbisyo dahil ito ay isang koleksyon ng mga patakaran na nagpapahintulot sa mga papasok na koneksyon, na maaaring mai-configure upang bigyan ang mga serbisyo ng panlabas sa pamamagitan ng maaabot na mga URL. Kaya, karaniwang gumaganap ito bilang isang punto ng pagpasok sa kumpol ng Kubernetes na namamahala sa panlabas na pag-access sa mga serbisyo sa isang kumpol.

Ngayon, hayaan mo akong ipaliwanag sa iyo ang pagtatrabaho ng Ingress Network na may isang halimbawa.

Mayroon kaming 2 node, pagkakaroon ng mga pod at namespace ng network ng root na may isang tulay sa Linux. Bilang karagdagan sa ito, mayroon din kaming isang bagong virtual na aparato ng ethernet na tinatawag na flannel0 (network plugin) na idinagdag sa root network.

Ngayon, nais naming dumaloy ang packet mula sa pod1 hanggang sa pod 4.

  • Kaya, ang packet ay umalis sa network ng pod1 sa eth0 at pumasok sa root network sa veth0.
  • Pagkatapos ay ipinapasa sa cbr0, na gumagawa ng kahilingan sa ARP na hanapin ang patutunguhan at pagkatapos ay malaman na walang sinuman sa node na ito ang may patutunguhang IP address.
  • Kaya, ipinapadala ng tulay ang packet sa flannel0 habang ang talahanayan ng ruta ng node ay naka-configure sa flannel0.
  • Ngayon, ang flannel daemon ay nagsasalita sa server ng API ng Kubernetes upang malaman ang lahat ng mga pod IP at ang kani-kanilang mga node upang lumikha ng mga pagmamapa para sa mga pod ng IP upang i-node ang mga IP.
  • Balot ng network plugin ang packet na ito sa isang packet ng UDP na may sobrang mga header na binabago ang mapagkukunan at patutunguhan ng IP sa kani-kanilang mga node at ipinapadala ang packet na ito sa pamamagitan ng eth0.
  • Ngayon, dahil alam na ng talahanayan ng ruta kung paano mag-ruta ng trapiko sa pagitan ng mga node, ipinapadala nito ang packet sa patutunguhang node2.
  • Dumating ang packet sa eth0 ng node2 at bumalik sa flannel0 upang i-de-capsulate at ibabalik ito sa rootp namespace ng network.
  • Muli, ang packet ay ipinapasa sa tulay ng Linux upang makagawa ng isang kahilingan sa ARP upang malaman ang IP na kabilang sa veth1.
  • Sa wakas ay tumatawid ang packet sa root network at naabot ang patutunguhang Pod4.

Kaya, ganoon konektado ang mga panlabas na serbisyo sa tulong ng isang network ng pagpasok. Ngayon, habang pinag-uusapan ko ang tungkol sa mga plugin ng Network, hayaan mo akong ipakilala sa listahan ng mga sikat na network plugin na magagamit.

Ngayon, na sinabi ko sa iyo ng marami tungkol sa Kubernetes Networking, hayaan mo akong magpakita sa iyo ng isang real-life case na pag-aaral.

Pag-aaral ng Kaso: Wealth Wizard Gamit ang Kubernetes Networking

Ang Wealth Wizards ay isang online financial platform ng pagpaplano na pinagsasama ang pagpaplano sa pananalapi, at teknolohiya ng matalinong software upang makapaghatid ng payo ng dalubhasa sa isang abot-kayang gastos.

Mga Hamon

Ngayon, napakahalaga para sa kumpanya na mabilis na matuklasan at matanggal ang mga kahinaan ng code na may ganap na kakayahang makita ng kanilang cloud environment ngunit nais na kontrolin ang trapiko sa pamamagitan ng mga paghihigpit sa pag-access.

Kaya, ginamit nila ang imprastraktura ng Kubernetes upang pamahalaan ang pagbibigay at paglulunsad ng mga kumpol sa tulong ng mga tool upang pamahalaan ang pag-deploy at pagsasaayos ng mga microservice sa mga kumpol ng Kube.

Gumamit din sila ng tampok na patakaran sa network ng Kubernetes upang payagan silang makontrol ang trapiko sa pamamagitan ng mga paghihigpit sa pag-access.

Ngayon, ang problema ay, ang mga patakarang ito ay nakatuon sa application at maaari lamang magbago sa mga aplikasyon, ngunit, walang bahagi upang ipatupad ang mga patakarang ito.

Kaya, ang tanging solusyon na mahahanap ng kumpanya para dito ay ang paggamit ng isang network plugin, at samakatuwid nagsimula silang gumamit ng Weave Net.

Solusyon

Lumilikha ang plugin ng network na ito ng isang virtual network na mayroong isang patakaran sa network control upang pamahalaan at ipatupad ang mga patakaran sa Kubernetes. Hindi lamang ito, ngunit kumokonekta rin ito sa mga lalagyan ng Docker sa maraming host at nagbibigay-daan sa kanilang awtomatikong pagtuklas.

Kaya, ipagpalagay na mayroon kang isang workload sa cluster at nais mong ihinto ang anumang iba pang mga workload sa kumpol na kinakausap ito. Maaari mo itong makamit sa pamamagitan ng paglikha ng isang patakaran sa network na nagbabawal sa pag-access at pinapayagan lamang ang pagpasok dito sa pamamagitan ng controller ng pagpasok sa isang tukoy na port.

Ngayon, sa kanyang pag-deploy sa bawat node ng Kubernetes, namamahala ang plugin ng inter-pod routing at may access upang manipulahin ang mga patakaran ng IPtables. Sa simpleng mga termino, ang bawat patakaran ay na-convert sa isang koleksyon ng mga patakaran ng IPtables, na-coordinate at na-configure sa bawat machine upang isalin ang mga tag ng Kubernetes.

O sige, ngayon na dumaan ka sa napakaraming teorya tungkol sa Kubernetes Networking, hayaan mo akong ipakita sa iyo kung paano ito ginagawa nang praktikal.

Aktuwal

Kaya, sa isang palagay na lahat kayo ay nag-install ng Kubernetes sa iyong mga system, mayroon akong isang senaryo na maipakita.

Ipagpalagay na nais mong iimbak ang pangalan ng produkto at ID ng produkto, para doon kakailanganin mo ang isang web application. Talaga, kailangan mo ng isang lalagyan para sa web application at kailangan mo ng isa pang lalagyan bilang MySQL para sa backend, at ang lalagyan na MySQL ay dapat na maiugnay sa lalagyan ng application ng web.

Paano ang tungkol sa pagpapatupad kong halimbawa ng nabanggit sa itaas nang praktikal.

Magsimula na tayo!

Hakbang 1: Lumikha ng isang folder sa iyong nais na direktoryo at baguhin ang gumaganang path ng direktoryo sa folder na iyon.

mkdir HandsOn cd HandsOn /

Hakbang2: Lumikha ngayon ng pag-deploy ng mga YAML file, para sa web application at MySQL database.

Hakbang3: Kapag nilikha mo ang mga file ng paglawak, i-deploy ang parehong mga application.

ilapat ang kubectl -f webapp.yml ilapat ang kubectl -f mysql.yml

Hakbang 3.1: Suriin ang parehong mga pag-deploy.

pagkuha ng kubectl

Hakbang 4: Ngayon, kailangan mong lumikha ng mga serbisyo para sa parehong mga application.

ilapat ang kubectl -f webservice.yml ilapat ang kubectl -f sqlservice.yml

Hakbang 4.1: Kapag nalikha ang mga serbisyo, i-deploy ang mga serbisyo.

Hakbang 4.2: Suriin kung ang mga serbisyo ay nilikha o hindi.

kumuha ng serbisyo sa kubectl

Hakbang 5: Ngayon, suriin ang pagsasaayos ng mga tumatakbo na mga pod.

kubectl kumuha ng mga pod

Hakbang 6: Pumunta sa lalagyan sa loob ng webapp pod.

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

Hakbang 6.1 : Ngayon, baguhin ang $ servername mula sa localhost hanggang sa pangalan ng serbisyo ng SQL na ' webapp-sql1 ”Sa kasong ito, at $ password mula sa ' edureka '. Gayundin, punan ang lahat ng kinakailangang detalye ng database at i-save ang iyong index.php file sa pamamagitan ng paggamit ng keyboard shortcut Ctrl + x at pagkatapos ng press na iyon Y upang makatipid at pindutin pasok .

Hakbang 7: Ngayon, pumunta sa lalagyan na MySQL na nasa pod.

kubectl exec ito container_id bash

Hakbang 7.1: Kunin ang access upang magamit ang lalagyan ng MySQL.

MySQL -u root -p edureka

Kung saan kinakatawan ng -u ang gumagamit at -p ang password ng iyong machine.

Hakbang 7.2: Lumikha ng isang database sa MySQL na gagamitin upang makakuha ng data mula sa webapp.

GUMAWA NG DATABASE ProductDetails

Hakbang 7.3: Gamitin ang nilikha na database.

GAMITIN ANG Mga Detalye ng Produkto

Hakbang 7.4: Lumikha ng isang talahanayan sa database na ito sa MySQL na gagamitin upang makakuha ng data mula sa webapp.

LILIKHA ang mga produktong TABLE (product_name VARCHAR (10), product_id VARCHAR (11))

Hakbang 7.5: Ngayon, lumabas din sa lalagyan ng MySQL pati na rin ang paggamit ng utos labasan .

Hakbang 8: Suriin ang numero ng port kung saan gumagana ang iyong web application.

kumuha ng mga serbisyo ang kubectl

Hakbang 8.1: Ngayon, buksan ang web application sa inilaan na numero ng port.

Hakbang 9: Kapag nag-click sa Ipasa ang tanong , pumunta sa node kung saan tumatakbo ang iyong serbisyo ng MySQL at pagkatapos ay pumunta sa loob ng lalagyan.

Ipapakita nito sa iyo ang output ng lahat ng mga produkto ng listahan, kung saan napunan mo ang mga detalye.

Interesado sa Pag-aaral ng Kubernetes?

Kung nalaman mong nauugnay ang blog ng Kubernetes Networking na ito, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo.