Eelmises artiklis juurutasime Kubernetese klastri koos ühe põhi- ja ühe töösõlmega. Kubernetese klastrid on peamiselt seotud kahe asjaga; Sõlmed ja kaunad. Kaunad on konteinerirakendused, mille soovite klastrisse juurutada, ja sõlmed on üksikud arvutiserverid, mis vastutavad kas klastri haldamise või rakenduste käitamise eest. Asja lihtsustamiseks alustame kodakondsuseta rakendusega ja tutvustame erinevaid mõisteid, nagu sildid ja selektorid, mida kasutatakse kaunade omavahel sidumiseks.
On ka teisi olulisi mõisteid, nagu koopiakomplektid, teenused ja juurutused, mida me selles artiklis õpime.
Traditsiooniline rakenduse juurutamine
Kui vaatate veebirakenduse juurutamiseks traditsioonilist lähenemisviisi, peaksite mastaapsus olema midagi, mida peaksite enne alustamist kaaluma. Kui vajate veebi kasutajaliidest eraldatud andmebaasi, on parem seda teha kohe, mitte hiljem. Kas kavatsete käitada mitut veebirakendust?? Pöördproksiserveri parem konfigureerimine eelnevalt.
Kubernetesega on lähenemine muutunud. Juurutamist saab teha praeguseid vajadusi silmas pidades ja see võib hiljem olla teie ettevõtte kasvades ulatuslik. Konteinerites saate eraldada oma veebiteenuste olulised komponendid, isegi kui need töötavad ühes sõlmes. Hiljem horisontaalselt skaleerides (see tähendab, et lisate oma keskkonda rohkem servereid) peate lihtsalt keerama rohkem konteinereid ja Kubernetes ajastab selle teile sobivatesse sõlmedesse. Pööratud puhverserver? Selle probleemi lahendamiseks tuleksid Kubernetese teenused.
Kaunad
Esimese sammuna keerutame kauna üles. Selleks vajame YAML-faili, mis määratleks podi erinevad atribuudid.
apVersioon: v1selline: Pod
metaandmed:
nimi: nginx
spetsifikatsioon:
konteinerid:
- nimi: nginx
pilt: nginx: 1.7.9
sadamad:
- containerPort: 80
Lisage ülaltoodud sisu punktile a kaun.yaml fail ja salvestage see. Ülaltoodud teksti vaadates näete, et lahke meie loodava ressursi a kaun. Panime sellele nimeks nginx, ja pilt on nginx: 1.7.9 mis tähendab vaikimisi, et Kubernetes tõmbab Dockeri jaoturi avalikult saadaolevatelt piltidelt sobiva nginx-pildi.
Suuremahulistes organisatsioonides on K8 sageli konfigureeritud osutama privaatsele registrile, kust ta saab tõmmata sobivad konteineripildid.
Pod-jooksu alustamiseks:
$ kubectl create -f pod.yamlKaardile ei pääse väljaspool klastrit. Seda pole veel paljastatud ja see eksisteerib ainult üksiku kaunana. Selle tõelise juurutamise tagamiseks käivitage:
$ kubectl saavad kaunad
Nimega kaunast vabanemiseks nginx, käivitage käsk:
$ kubectl kustutage pod nginxLähetused
Ainult ühe toimiva kausta saamine ei ole Kubernetese mõte, ideaalis on see, mida soovime, kui mitu kauba koopiat, mis on sageli planeeritud erinevatele sõlmedele, nii et kui üks või mitu sõlme ebaõnnestuvad, on ülejäänud kaared endiselt olemas lisakoormust.
Pealegi peaks meil arenduse seisukohast olema mingi viis tarkvara uuema versiooniga kaunade levitamiseks ja vanemate kaunade uinumiseks. Juhul, kui on probleem uuema kaunaga, saame selle tagasi keerata, tuues vanemad kaunad tagasi ja kustutades ebaõnnestunud versiooni. Lähetused võimaldavad meil seda teha.
Järgmine on väga levinud viis juurutamise määratlemiseks:
apiVersion: apps / v1beta1liik: juurutamine
metaandmed:
nimi: nginx-juurutamine
spetsifikatsioon:
koopiad: 2
mall:
metaandmed:
sildid:
rakendus: nginx
spetsifikatsioon:
konteinerid:
- nimi: nginx
pilt: nginx: 1.7.9
sadamad:
- containerPort: 80
Märkate muu hulgas võtmeväärtuste paari, mis on:
sildid:
rakendus: nginx
Sildid on klastrite haldamisel olulised, kuna need aitavad jälgida paljusid sama ülesandega kaunasid. Kaunad luuakse põhisõlme käsul ja nad suhtlevad põhisõlmega. Siiski vajame ikkagi tõhusat viisi, kuidas nad omavahel rääkida ja meeskonnana koostööd teha.
Teenused
Igal podil on oma sisemine IP-aadress ja selline suhtluskiht nagu Flannel aitab podidel üksteisega suhelda. See IP-aadress muutub aga üsna palju ja lõppude lõpuks on paljude kaunade olemasolu mõte lasta neil ühekordselt kasutada. Kaunad tapetakse ja äratatakse sageli üles.
Küsimus, mis nüüd tekib, on järgmine - kuidas vestlevad esiotsa kaunad tagatipuga, kui asjad on klastris nii dünaamilised?
Teenused tulevad selle keerukuse lahendamiseks pildile. Teenus on veel üks pakend, mis toimib koormuste tasakaalustajana kaunade alamhulga ja ülejäänud Kubernetes-klastri vahel. See seob end kõigi kaunadega, millele on lisatud kindel silt, näiteks andmebaas, ja seejärel paljastab nad ülejäänud klastri.
Näiteks kui meil on andmebaasiteenus koos 10 andmebaasikaunaga, võivad mõned andmebaasikaunad üles tulla või tappa, kuid teenus tagaks, et ülejäänud klaster saaks andmebaasi 'teenuse'. Teenuseid saab kasutada ka kasutajaliidese ülejäänud Interneti kuvamiseks.
Siin on teenuse tüüpiline määratlus.
apVersioon: v1liik: teenus
metaandmed:
nimi: wordpress-mysql
sildid:
rakendus: wordpress
spetsifikatsioon:
sadamad:
- sadam: 3306
valija:
rakendus: wordpress
aste: mysql
klasterIP: Puudub
Kaunad, millel on märgitud WordPress koos määratud mysql-astmega, on need, mille see teenus võtab kätte ja puutuvad kokku Kubernetesele seadistatud WordPressi veebiserveri kaunadega.
Ettevaatus
Suure tarbijaskonnale suunatud hiiglasliku mitmetasandilise rakenduse juurutamisel on väga ahvatlev kirjutada palju teenuseid (või mikroteenuseid, nagu need on üldtuntud). Ehkki see on enamiku kasutusjuhtumite jaoks elegantne lahendus, võivad asjad kiiresti käest ära minna.
Teenused, nagu kaunad, on altid ebaõnnestumistele. Ainus erinevus on see, et kui teenus ebaõnnestub, muudetakse paljud täiesti funktsionaalsed kaunad kasutuks. Järelikult, kui teil on laialdaselt ühendatud teenuseid (nii sisemisi kui ka väliseid) ja midagi ebaõnnestub, on rikke koha välja selgitamine võimatu.
Rusikareeglina, kui teil on klastri ligikaudne visualiseerimine või kui saate klastri vaatamiseks ja selle mõtestamiseks kasutada sellist tarkvara nagu kokpit, on teie seadistus korras. Päeva lõpuks on Kubernetes mõeldud keerukuse vähendamiseks, mitte selle suurendamiseks.