Kwezani kusanja ndikukulitsa kulumikizana kwanthawi yayitali ku Kubernetes
Nkhaniyi ikuthandizani kumvetsetsa momwe kusanja kwa katundu kumagwirira ntchito ku Kubernetes, zomwe zimachitika mukakulitsa kulumikizana kwanthawi yayitali, komanso chifukwa chake muyenera kuganizira za kusanja kwa kasitomala ngati mugwiritsa ntchito HTTP/2, gRPC, RSockets, AMQP, kapena ma protocol ena anthawi yayitali. .
Zambiri za momwe magalimoto amagawidwiranso ku Kubernetes
Kubernetes imapereka njira ziwiri zosavuta zopangira ntchito: Ntchito ndi Kutumiza.
Kutumiza kumalongosola momwe ndi kuchuluka kwa makope a pulogalamu yanu yomwe iyenera kuyendetsedwa nthawi iliyonse. Ntchito iliyonse imayikidwa ngati Pod ndipo imapatsidwa adilesi ya IP.
Ntchito zimafanana ndi ntchito yolinganiza katundu. Amapangidwa kuti azigawira kuchuluka kwa magalimoto pamagulu angapo.
Tiyeni tiwone momwe zimawonekera.
Pachithunzi chomwe chili pansipa mutha kuwona zochitika zitatu zakugwiritsa ntchito komweko ndi chowerengera cholemetsa:
The load balancer amatchedwa Service ndipo amapatsidwa adilesi ya IP. Pempho lililonse lomwe likubwera limatumizidwa ku imodzi mwama pod:
Ndizothandiza kuganiza za ntchito ngati gulu la ma adilesi a IP. Nthawi iliyonse mukapeza ma adilesi, imodzi mwa ma adilesi a IP imasankhidwa pamndandanda ndikugwiritsidwa ntchito ngati adilesi yolowera.
Zikuwoneka chonchi.
Pempho la curl 10.96.45.152 lalandiridwa ku ntchito:
Ntchitoyi imasankha imodzi mwa ma adilesi atatu ngati kopita:
Magalimoto amatumizidwa kumalo enaake:
Ngati ntchito yanu ili ndi kutsogolo ndi kumbuyo, ndiye kuti mudzakhala ndi ntchito komanso kutumizidwa kwa aliyense.
Pamene kutsogolo kumapanga pempho lakumbuyo, sikuyenera kudziwa ndendende ndi ma pod angati omwe amatumikira: pakhoza kukhala imodzi, khumi, kapena zana.
Komanso, kutsogolo sadziwa kalikonse za maadiresi a pods omwe akutumikira kumbuyo.
Pamene kutsogolo kumapanga pempho ku backend, amagwiritsa ntchito adilesi ya IP ya utumiki wakumbuyo, womwe susintha.
Umu ndi momwe zimawonekera.
Pansi pa 1 imapempha gawo lamkati lakumbuyo. M'malo mosankha ina ya backend, imapanga pempho ku utumiki:
Simungathe ngakhale kupeza adilesi ya IP yoperekedwa ku ntchitoyo.
Adilesi ya IP ya ntchitoyo ili mugawo lowongolera, mu owongolera, ndikujambulidwa mu database - etcd. Adilesi yomweyi imagwiritsidwa ntchito ndi gawo lina - kube-proxy.
Kube-proxy amalandira mndandanda wa ma adilesi a IP a mautumiki onse ndikupanga malamulo a iptables pa node iliyonse mumagulu.
Malamulowa amati: "Ngati tiwona adilesi ya IP ya ntchitoyo, tifunika kusintha adilesi yofunsira ndikuitumiza ku imodzi mwamagawo."
Adilesi ya IP yautumiki imagwiritsidwa ntchito ngati polowera ndipo sichimaperekedwa ndi njira iliyonse yomvera adilesi ya IP ndi doko.
Tiyeni tione izi.
Taganizirani gulu la mfundo zitatu. Node iliyonse ili ndi ma pod:
Madontho omangidwa opaka utoto wa beige ndi gawo lautumiki. Chifukwa ntchitoyo kulibe ngati njira, ikuwonetsedwa mu imvi:
Kulumikizana kwanthawi yayitali ku Kubernetes sikumakula mwachisawawa
Pempho lililonse la HTTP kuchokera kutsogolo kupita ku backend limatumizidwa ndi kugwirizana kosiyana kwa TCP, komwe kumatsegulidwa ndi kutsekedwa.
Ngati kutsogolo kumatumiza zopempha za 100 pa sekondi iliyonse ku backend, ndiye kuti 100 yolumikizana ndi TCP yosiyana imatsegulidwa ndikutsekedwa.
Mutha kuchepetsa nthawi yofunsira ndikutsegula potsegula kulumikizana kumodzi kwa TCP ndikuigwiritsa ntchito pazofunsira zonse za HTTP.
Protocol ya HTTP ili ndi gawo lotchedwa HTTP keep-live, kapena kugwiritsanso ntchito kulumikizana. Pankhaniyi, kulumikizana kumodzi kwa TCP kumagwiritsidwa ntchito kutumiza ndi kulandira zopempha ndi mayankho angapo a HTTP:
Izi sizimathandizidwa mwachisawawa: seva ndi kasitomala ziyenera kukonzedwa moyenera.
Kukhazikitsa komweko ndikosavuta komanso kupezeka m'zilankhulo zambiri zamapulogalamu ndi malo.
Nawa maulalo a zitsanzo m'zilankhulo zosiyanasiyana:
Kodi chimachitika ndi chiyani ngati tigwiritsa ntchito kusunga moyo mu ntchito ya Kubernetes?
Tiyerekeze kuti kutsogolo ndi kumbuyo kumathandizira kukhalabe ndi moyo.
Tili ndi kopi imodzi ya frontend ndi makope atatu a backend. Kutsogolo kumapanga pempho loyamba ndikutsegula kulumikiza kwa TCP ku backend. Pempho likufika pautumiki, imodzi mwa mapepala akumbuyo amasankhidwa ngati adilesi yopita. The backend imatumiza yankho, ndipo frontend amalandira izo.
Mosiyana ndi momwe zimakhalira nthawi zonse pomwe kulumikizana kwa TCP kumatsekedwa atalandira yankho, tsopano kumatsegulidwa kuti apemphe zina za HTTP.
Kodi chimachitika ndi chiyani ngati kutsogolo kumatumiza zopempha zambiri ku backend?
M'malo mwake, kulumikizana kosalekeza kwa TCP ku database kumatsegulidwa ndikugwiritsidwa ntchito.
Ngati nkhokwe yanu yasungidwa pa Kubernetes ndipo mwayi umaperekedwa ngati ntchito, ndiye kuti mudzakumana ndi mavuto omwe afotokozedwa m'gawo lapitalo.
Chifaniziro chimodzi cha database chidzadzaza kwambiri kuposa enawo. Kube-proxy ndi Kubernetes sizingathandize kulumikizana bwino. Muyenera kusamala kuti musamalire mafunso ku database yanu.
Kutengera laibulale yomwe mumagwiritsa ntchito kuti mulumikizane ndi database, mutha kukhala ndi zosankha zosiyanasiyana zothetsera vutoli.
Pansipa pali chitsanzo chofikira gulu la database la MySQL kuchokera ku Node.js:
var mysql = require('mysql');
var poolCluster = mysql.createPoolCluster();
var endpoints = /* retrieve endpoints from the Service */
for (var [index, endpoint] of endpoints) {
poolCluster.add(`mysql-replica-${index}`, endpoint);
}
// Make queries to the clustered MySQL database
Pali ma protocol ena ambiri omwe amagwiritsa ntchito kulumikizana kwa TCP kosalekeza:
WebSockets ndi ma WebSockets otetezedwa
HTTP / 2
gRPC
RSockets
Zamgululi
Muyenera kudziwa zambiri za ma protocol awa.
Koma ngati ma protocol awa ndi otchuka kwambiri, chifukwa chiyani palibe njira yofananira yofananira? Chifukwa chiyani malingaliro a kasitomala akufunika kusintha? Kodi pali yankho lakwawo la Kubernetes?
Kube-proxy ndi iptables adapangidwa kuti azigwira ntchito zomwe zimagwiritsidwa ntchito nthawi zambiri potumiza ku Kubernetes. Izi ndizosavuta.
Ngati mukugwiritsa ntchito intaneti yomwe imawulula REST API, muli ndi mwayi - pakadali pano, kulumikizana kosalekeza kwa TCP sikugwiritsidwa ntchito, mutha kugwiritsa ntchito ntchito iliyonse ya Kubernetes.
Koma mukangoyamba kugwiritsa ntchito maulumikizidwe osalekeza a TCP, muyenera kudziwa momwe mungagawire katunduyo molingana ndi ma backends. Kubernetes ilibe mayankho okonzeka pankhaniyi.
Komabe, pali njira zingapo zomwe zingathandize.
Kulinganiza maulalo omwe akhalapo nthawi yayitali ku Kubernetes
Pali mitundu inayi ya mautumiki ku Kubernetes:
ClusterIP
NodePort
LoadBalancer
Popanda mutu
Ntchito zitatu zoyambirira zimagwira ntchito motengera adilesi ya IP, yomwe imagwiritsidwa ntchito ndi kube-proxy kupanga malamulo a iptables. Koma maziko ofunikira a mautumiki onse ndi ntchito yopanda mutu.
Ntchito yopanda mutu ilibe adilesi ya IP yolumikizidwa nayo ndipo imangopereka njira yopezeranso mndandanda wa ma adilesi a IP ndi madoko a ma pod (mapeto) okhudzana nawo.
Ntchito zonse zimatengera ntchito yopanda mutu.
Ntchito ya ClusterIP ndi ntchito yopanda mutu yokhala ndi zowonjezera zina:
Kasamalidwe kagawo kamapereka adilesi ya IP.
Kube-proxy imapanga malamulo oyenerera a iptables.
Service Mesh imathandizira kuyang'anira kuchuluka kwa magalimoto mkati mwa tsango, koma ndiyofunika kwambiri. Zosankha zina zikugwiritsa ntchito malaibulale a chipani chachitatu ngati Netflix Ribbon kapena ma proxies osinthika ngati Envoy.
Kodi chimachitika ndi chiyani ngati munyalanyaza zovuta za kusanja?
Ngati muli ndi makasitomala ambiri kuposa ma seva, ili si vuto lalikulu.
Tiyerekeze kuti pali makasitomala asanu omwe amalumikizana ndi ma seva awiri. Ngakhale ngati palibe kulinganiza, ma seva onsewa adzagwiritsidwa ntchito:
Malumikizidwe sangagawidwe mofanana: mwina makasitomala anayi olumikizidwa ku seva yomweyo, koma pali mwayi woti ma seva onsewa agwiritsidwe ntchito.
Chomwe chavuta kwambiri ndi chosiyana.
Ngati muli ndi makasitomala ochepera komanso ma seva ochulukirapo, zinthu zanu zitha kugwiritsidwa ntchito mochepera ndipo vuto lomwe lingakhalepo lidzawonekera.
Tinene kuti pali makasitomala awiri ndi ma seva asanu. Pabwino kwambiri, padzakhala zolumikizira ziwiri zokhazikika kwa ma seva awiri mwa asanu.
Ma seva otsalawo adzakhala opanda ntchito:
Ngati ma seva awiriwa sangathe kuthana ndi zopempha zamakasitomala, kukweza kopingasa sikungathandize.