Kubernetes

Programų diegimas „Kubernetes“ grupėse

Programų diegimas „Kubernetes“ grupėse

Ankstesniame straipsnyje mes įdiegėme „Kubernetes“ sankaupą su vienu pagrindiniu ir vienu darbuotojo mazgu. „Kubernetes“ grupes daugiausia sudaro du dalykai; Mazgai ir ankštys. Pods yra sudėtinės programos, kurias norite įdiegti sankaupoje, o mazgai yra atskiri skaičiavimo serveriai, atsakingi už klasterio valdymą arba programų vykdymą. Kad viskas būtų paprasčiau, pradedame nuo programos be pilietybės ir pristatome įvairias sąvokas, pvz., Etiketes ir parinkiklius, kurie naudojami tarpusavyje surišant ankštis.

Yra ir kitų svarbių sąvokų, tokių kaip kopijų rinkiniai, paslaugos ir diegimas, kurių visas mokysimės šiame straipsnyje.


Tradicinis programos diegimas

Jei pažvelgsite į tradicinį požiūrį į žiniatinklio programos diegimą, mastelio mastą turėtumėte apsvarstyti prieš pradėdami. Jei jums reikia atskiros duomenų bazės nuo jūsų žiniatinklio sąsajos, geriau tai padaryti dabar, o ne vėliau. Ar planuojate paleisti daugiau nei vieną žiniatinklio programą? Geriau iš anksto sukonfigūruokite atvirkštinį tarpinį serverį.

Su „Kubernetes“ požiūris pasikeitė. Diegimas gali būti atliekamas atsižvelgiant į dabartinius poreikius, o vėliau jis gali būti masto, kai jūsų verslas auga. Konteinerių naudojimas leidžia atskirti pagrindinius jūsų interneto paslaugų komponentus, net kai jie veikia viename mazge. Vėliau, kai mastelį keičiate horizontaliai (tai reiškia, kad prie savo aplinkos pridedate daugiau serverių), jums tiesiog reikia susukti daugiau konteinerių, o „Kubernetes“ tai suplanuos jums tinkamuose mazguose.  Atvirkštinis įgaliojimas? „Kubernetes“ tarnybos galėtų išspręsti šią problemą.


Ankštys

Pirmiausia pasukime ankštį. Norėdami tai padaryti, mums reikės YAML failo, apibrėžiančio įvairius pod atributus.

apiVersion: v1
natūra: Pod
metaduomenys:
vardas: nginx
specifikacija:
konteineriai:
- vardas: nginx
vaizdas: nginx: 1.7.9
uostai:
- containerPort: 80

Pridėkite turinį aukščiau a ankštis.yaml failą ir išsaugokite jį. Pažvelgus į aukščiau pateiktą tekstą, galite pamatyti, kad malonus mūsų kuriamų išteklių yra ankštis. Pavadinome Nginx, ir vaizdas yra Nginx: 1.7.9 o tai pagal numatytuosius nustatymus reiškia, kad „Kubernetes“ atneš reikiamą „nginx“ vaizdą iš viešai prieinamų „Docker hub“ vaizdų.

Didelio masto organizacijose K8 dažnai sukonfigūruotas nukreipti į privatų registrą, iš kurio jis gali ištraukti reikiamus konteinerio vaizdus.

Dabar, norėdami pradėti „Pod Run“:

$ kubectl sukurti -f pod.yaml

Negalite pasiekti pod iš išorės klasterio. Jis dar nėra atidengtas ir egzistuoja tik kaip vienišas ankštis. Norėdami įsitikinti, kad ji tikrai įdiegta, vykdykite:

$ kubectl gauna ankštis

Norėdami atsikratyti pavadinimo pavadinimo Nginx, paleiskite komandą:

$ kubectl ištrinti pod nginx

Dislokacijos

Tik vieno veikiančio „Pod“ įsigijimas nėra „Kubernetes“ tikslas, idealu, ko norėtume, yra kelios „Pod“ kopijos, dažnai suplanuotos skirtinguose mazguose, taigi, jei nepavyksta vieno ar daugiau mazgų, likę podai vis tiek bus paimti padidinti papildomą darbo krūvį.

Be to, kalbant apie kūrimą, mums reikėtų turėti tam tikrą būdą, kaip ankštis išleisti su naujesne programinės įrangos versija ir senesnes ankštis užmigdyti. Tuo atveju yra problema su naujesne dėžute, kurią galime sugrąžinti sugrąžindami senesnes ankštis ir ištrindami nepavykusią versiją. Diegimai leidžia mums tai padaryti.

Tai yra labai paplitęs būdas apibrėžti dislokavimą:

apiVersion: apps / v1beta1
natūra: dislokavimas
metaduomenys:
pavadinimas: nginx-dislokavimas
specifikacija:
kopijos: 2
šablonas:
metaduomenys:
etiketės:
programa: „nginx“
specifikacija:
konteineriai:
- vardas: nginx
vaizdas: nginx: 1.7.9
uostai:
- containerPort: 80

Jūs, be kita ko, pastebėsite pagrindinės vertės porą, kuri yra:

etiketės:
programa:
Nginx

Etiketės yra svarbios grupių valdymui, nes jos padeda stebėti daugybę ankščių, turinčių visas tas pačias pareigas. Pods sukuriami vadovaujantis pagrindinio mazgo komanda ir jie bendrauja su pagrindiniu mazgu. Tačiau mums vis dar reikia veiksmingo būdo, kaip jie galėtų kalbėtis tarpusavyje ir dirbti kartu kaip komanda.


Paslaugos

Kiekviena dėžutė turi savo vidinį IP adresą, o komunikacijos sluoksnis, pvz., „Flannel“, padeda podams bendrauti tarpusavyje. Tačiau šis IP adresas gana šiek tiek keičiasi ir galų gale viskas, kad turite daug ankščių, yra leisti jiems būti vienkartiniams. Ankštys dažnai žudomos ir prisikelia.

Dabar kyla toks klausimas: kaip priekinės dalies ankštys kalbėsis su galinės dalies ankštimis, kai klasteryje viskas taip dinamiškai?

Tarnybos susiduria su problema, kad išspręstų šį sudėtingumą. Paslauga yra dar viena „pod“, kuri veikia kaip apkrovos balansatorius tarp antrinių pogrupių ir likusio „Kubernetes“ sankaupos. Jis susiejasi su visais ankštimis, prie kurių yra pritvirtinta speciali etiketė, pavyzdžiui, duomenų bazė, ir tada juos atskleidžia likusiai grupei.

Pvz., Jei turime duomenų bazės paslaugą su 10 duomenų bazių skyrių, kai kurios duomenų bazės dėžutės gali atsirasti arba būti nužudytos, tačiau paslauga užtikrintų, kad likusi klasterio dalis gautų „paslaugą“, kuri yra duomenų bazė. Paslaugos taip pat gali būti naudojamos atskleisti visą internetą.

Štai tipiškas paslaugos apibrėžimas.

apiVersion: v1
natūra: tarnyba
metaduomenys:
pavadinimas: wordpress-mysql
etiketės:
programa: WordPress
specifikacija:
uostai:
- uostas: 3306
selektorius:
programa: WordPress
pakopa: mysql
klasterisIP: Nėra

„PodP“, pažymėti „WordPress“ su nurodytu „mysql“ paketu, yra tie, kuriuos pasiims ši tarnyba ir kurie bus paveikti žiniatinklio serverio ankštimis tipiniam „WordPress“, nustatytam „Kubernetes“.


Atsargumo žodis

Diegdami milžinišką daugiapakopę programą, nukreiptą į didelę vartotojų bazę, tampa labai pagunda parašyti daugybę paslaugų (arba mikroservisų, nes jos žinomos populiariai). Nors tai yra elegantiškas sprendimas daugeliu atvejų, viskas gali greitai pasisukti.

Paslaugos, kaip ir ankštys, yra linkusios į nesėkmę. Vienintelis skirtumas yra tas, kad sugedus paslaugai, daugelis nepriekaištingai veikiančių dėklų tampa nenaudingi. Taigi, jei turite didelę paslaugų (tiek vidinių, tiek išorinių) jungtį ir kažkas nepavyksta, išsiaiškinti gedimo taško taps neįmanoma.

Pagal nykščio taisyklę, jei turite apytikslę klasterio vizualizaciją arba galite naudoti tokią programinę įrangą, kaip piloto kabina, norėdami pažvelgti į klasterį ir jį suprasti, jūsų sąranka yra gera. Dienos pabaigoje „Kubernetes“ sukurtas siekiant sumažinti sudėtingumą, o ne jį sustiprinti.

10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...
5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...
Mūšis už Wesnothą 1.13.6 Išleista plėtra
Mūšis už Wesnothą 1.13.6 išleistas praėjusį mėnesį, yra šeštasis 1 versijos kūrimo leidimas.13.„x“ serija ir ji teikia daug patobulinimų, ypač vartoto...