Konteiner - tootmisliini peale: CRI-O on nĂŒĂŒd OpenShift Container Platform 4 vaikeseade

Platvorm Red Hat OpenShift Container Platform 4 vĂ”imaldab automatiseerida loomist hostide konteinerite juurutamiseks, sealhulgas pilveteenuse pakkujate infrastruktuuris, virtualiseerimisplatvormidel vĂ”i bare-metal sĂŒsteemides. Et luua tĂ”eliselt pilveplatvorm, pidime rangelt kontrollima kĂ”iki kasutatavaid komponente, et tĂ”sta keeruka automatiseerimisprotsessi usaldusvÀÀrsust.

Konteiner - tootmisliini peale: CRI-O on nĂŒĂŒd OpenShift Container Platform 4 vaikeseade

Ilmselge lahendus oli vÔtta standardiks Red Hat Enterprise Linux CoreOS (Red Hat Enterprise Linuxi variant) ja CRI-O, ja siin on miks


Kuna mereteema on ĂŒsna viljakas, et leida analoogiaid Kubernetes'e ja konteinerite töö selgitamiseks, proovime rÀÀkida neist Ă€riprobleemidest, mida CoreOS ja CRI-O lahendavad, nĂ€iteks Bruneli leiutis takelikku plokkide tootmiseks. 1803. aastal seisis Mark Bruneli ees ĂŒlesanne toota 100 tuhat takelikku plokki Suurbritannia kasvava merefloodi vajaduste jaoks. Takeliku plokk on pĂ”hivarustus, mida kasutatakse köite kinnitamiseks purjepurjedesse. Kuni 19. sajandi alguseni valmistati need plokid kĂ€sitsi, kuid Brunel suutis automatiseerida tootmisprotsessi ja hakata valmistama standardiseeritud plokke masinate abil. Selle protsessi automatiseerimine tĂ€hendas, et kĂ”ik plokid olid praktiliselt identsed, neid oli kerge asendada rikke korral ja neid oli vĂ”imalik tootmist suures mahus.

Ja nĂŒĂŒd kujutlege, et Brunel pidi seda tööd tegema 20 erineva laevamudeli (Kubernetes'i versiooni) jaoks ning viie erineva planeedi jaoks, millel olid tĂ€iesti erinevad mered ja tuuled (pilveteenuse pakkujad). Lisaks see, et kĂ”ik laevad (OpenShift'i klastrid), olenemata planeetidest, millel navigeeritakse, kĂ€ituvad kaptenite (klastrite haldajate) vaates ĂŒhtemoodi. Mereteema jĂ€tkates, ei ole laevade kaptenitele absoluutselt oluline, milliseid takelikku plokke (CRI-O) nende laevadel kasutatakse – nende jaoks on peamine, et need plokid oleksid tugevad ja usaldusvÀÀrsed.

Enne OpenShift 4, kui pilveplatvorm, seisab silmitsi vĂ€ga sarnase Ă€riĂŒlesandega. Uued sĂ”lmed peavad olema loodud klastrite loomise hetkel, sĂ”lme rikke korral vĂ”i klastrite laiendamisel. Uue sĂ”lme loomisel ja algatamisel tuleb vastavalt konfigureerida ka hosti kriitilised komponendid, sealhulgas CRI-O. Nagu igas tootmisprotsessis, tuleb alguses esitada "tooraine". Laevade puhul on tooraineks metall ja puit. Siiski, kui luua host konteinerite juurutamiseks OpenShift 4 klastri sees, peab sissepool olema konfiguratsioonifailid ja pakutavad API serverid. PĂ€rast seda tagab OpenShift kogu elutsĂŒkli jooksul vajaliku automatiseerimise, pakkudes lĂ”ppkasutajatele vajaliku tootetoetuse ja katab seega investeeringud platvormisse.

OpenShift 4 on loodud nii, et vĂ”imaldada sĂŒsteemi mugavat uuendamist kogu platvormi elutsĂŒkli vĂ€ltel (versioonidele 4.X) kĂ”igi peamiste pilvekompuuteri pakkujate, virtualiseerimisplatvormide ja isegi bare metal sĂŒsteemide jaoks. Selleks peavad sĂ”lmed olema loodud asendatavatel komponentidel. Kui klaster vajab uut Kubernetes’i versiooni, saab see ka vastava CRI-O versiooni CoreOS-is. Kuna CRI-O versioon on otseselt seotud Kubernetes’ega, lihtsustab see oluliselt kĂ”ikide nihkeid testimise, tĂ”rkeotsingu vĂ”i toetuse eesmĂ€rgil. Lisaks vĂ”imaldab selline lĂ€henemine vĂ€hendada lĂ”ppkasutajate ja Red Hati kulusid.

See on pĂ”himĂ”tteliselt uus lĂ€henemine Kubernetes’ega klastrite loomisel, mis loob aluse uute vĂ€ga kasulike ja ahvatlevate funktsioonide planeerimiseks. CRI-O (avatud konteinerite projekti Container Runtime Interface – Open Container Initiative, lĂŒhidalt CRI-OCI) osutus kĂ”ige Ă”nnestunumaks valikuks massiliseks sĂ”lmede loomiseks, mis on vajalik OpenShift’i jaoks. CRI-O asendab varem kasutatud Docker’i mootori, pakkudes OpenShift’i kasutajatele ökonoomse, stabiilse, lihtsa ja igava – jah, te ei kuulnud valesti – igava konteinerimootori, mis on loodud spetsiaalselt Kubernetes’ega töötamiseks.

Ava konteinerite maailm

Maailm on juba ammu liikunud avatud konteinerite suunas. Olgu need Kuberneteses vÔi madalamal tasemel, konteineristandardite areng toob igasuguseid uuendusi igal tasemel.

KĂ”ik algas Open Containers Initiative’i loomisega juunis 2015.Selle algusfaasis kujundati konteineri pildi (image) ja tĂ€itmisaja (runtime)spetsifikatsioonid. See vĂ”imaldas tagada, et tööriistad saavad kasutada ĂŒhtset standardit konteineri piltide ja ĂŒhtset formaati nende töötlemiseks. Hiljem lisati jaotamise (distribution)spetsifikatsioonid, mis vĂ”imaldasid kasutajatel mugavalt vahetada konteineripilte..

SeejĂ€rel töötas Kubernetes kogukond vĂ€lja ĂŒhtse pluggable interface'i standardi, nimega Container Runtime Interface (CRI).Selle abil suudavad Kubernetes kasutajad liita erinevaid konteinerimootoreid, sealhulgas Dockerit.

Red Hati ja Google'i insenerid mĂ€rkasid turul olevat vajadust konteinerimootori jĂ€rele, mis saaks CRI protokolli kaudu Kubelet'i pĂ€ringuid vastu vĂ”tta, ja esitlesid konteinerid, mis olid ĂŒlaltoodud OCI spetsifikatsioonidega ĂŒhilduvad. Nii sai OCID-ist.Aga oodake, me ĂŒtlesime, et see materjal kĂ€sitleb CRI-O-d? Tegelikult on see tĂ”si, lihtsalt versiooni 1.0 vĂ€ljatulekuga projekt nimetati ĂŒmber CRI-O-ks. Joonis 1.

Uuendused CRI-O ja CoreOS-i jaoks.

Konteiner - tootmisliini peale: CRI-O on nĂŒĂŒd OpenShift Container Platform 4 vaikeseade

OpenShift 4 platvormi kÀivitamisega muudeti

kasutatav konteinerimootor , mis on platvormi vaikimisi, ja Docker asendati CRI-O-ga, mis pakkus ökonoomset, stabiilset, lihtsat ja igavat konteinerite kÀitamise keskkonda, mis areneb koos Kubernetesega. See lihtsustab oluliselt klasteri haldust ja seadistamist. Konteinerimootori ja hosti seadistamine ning nende haldamine on OpenShift 4 raames automatiseeritud.Oota, kuidas see tÔsi on?

Just nii, OpenShift 4 tulekuga pole enam vajalik eraldiseisvatesse hostidesse ĂŒhenduda ja konteinerimootor installida, salvestust seadistada, otsinguservereid seadistada ega vĂ”rku seadistada. OpenShift 4 platvorm on tĂ€ielikult ĂŒmber kujundatud, et kasutada

Operator Framework. Operator Framework mitte ainult lĂ”ppkasutajate rakenduste vaatenurgast, vaid ka platvormi tasandi pĂ”hitoimingute, nagu piltide juurutamine, sĂŒsteemi seadistamine vĂ”i vĂ€rskenduste installimine, vaatenurgast.

Kubernetes on alati vÔimaldanud kasutajatel hallata rakendusi, mÀÀrates soovitud oleku ja kasutades kontrollereid (Controllers), et tagada, et tegelik olek vastaks vÔimalikult palju mÀÀratud olekule. See lÀhenemine mÀÀratud ja tegeliku oleku kasutamisega ava suured vÔimalused nii arenduse kui ka operatsioonide vaatenurgast. Arendajad saavad mÀÀrata nÔutud oleku, edastada selle operaatorile YAML vÔi JSON faili kujul ning seejÀrel saab operaator luua tootmiskeerises vajaliku rakenduse eksemplari, mille tööolek vastab tÀielikult mÀÀratletud olekule.

Kasutades platvormis operaatoreid (Operators), toob OpenShift 4 uue paradigma (kasutades mÀÀratud ja tegeliku oleku kontseptsiooni) RHEL CoreOS ja CRI-O haldamisse. OperatsioonisĂŒsteemi ja konteinerimootori versioonide seadistamise ja haldamise ĂŒlesanded automatiseeritakse nn masina seadistamise operaatori (Machine Config Operator, MCO). MCO lihtsustab klastrihalduri tööd, automatiseerides pĂ”himĂ”tteliselt paigalduse viimased etapid ja ka sellele jĂ€rgnenud toimingud (day two operations). KĂ”ik see teeb OpenShift 4 tĂ”eliseks pilveplatvormiks. Peatume sellel natuke hiljem.

Konteinerite kÀivitamine

Kasutajatel oli vĂ”imalik kasutada CRI-O mootorit OpenShiftis alates versioonist 3.7 tech preview'na ja versioonist 3.9 ĂŒldiselt saadaval (praegu toetatakse). Samuti kasutab Red Hat ulatuslikult CRI-O tootmislastete kĂ€ivitamiseks OpenShift Online'is alates versioonist 3.10. See kĂ”ik on vĂ”imaldanud CRI-O arendustiimil saada tohutut kogemust konteinerite massiliseks kĂ€ivitamiseks suurtes Kubernetes klastrites. Et saada pĂ”hiteadmisi, kuidas Kubernetes kasutab CRI-O-d, vaatame jĂ€rgmist illustratsiooni, mis nĂ€itab arhitektuuri tööpĂ”himĂ”tet.

Joon. 2. Kuidas konteinerid töötavad Kubernetes klastris

Konteiner - tootmisliini peale: CRI-O on nĂŒĂŒd OpenShift Container Platform 4 vaikeseade

CRI-O lihtsustab uute konteinerite hostide loomist, sĂŒnkroniseerides kogu ĂŒlemise tasandi, kui algatatakse uusi nodusid ja uute OpenShift platvormi versioonide vĂ€ljalaskmisel. Kogu platvormi revideerimine vĂ”imaldab teostada tehingulisi vĂ€rskendusi / tagasivĂ”tmisi ning takistab omavahelisi blokeeringuid sĂ”ltuvustes konteinerite hosti tuumade, konteerimismootori, nodude (Kubelets) ja Kubernetes Masteri vahel. KĂ”igi platvormi komponentide tsentraliseeritud haldamisega, versioonide jĂ€lgimise ning juhtimisega, on alati vĂ”imalik jĂ€lgida selget teed seisundist A seisundisse B. See lihtsustab vĂ€rskenduste protsessi, suurendab turvalisust, parandab jĂ”udluse aruandlust ning aitab vĂ€hendada vĂ€rskenduste ja uute versioonide paigaldamise kulusid.

Vahetatavate komponentide jÔu demonstreerimine

Nagu juba mainitud, tagab Machine Config Operator'i kasutamine konteinerite hostide ja konteerimismootori haldamiseks OpenShift 4-s uue automatiseerimise taseme, mis ei olnud varem platvormi Kubernetes puhul vÔimalik. Uute vÔimaluste demonstreerimiseks nÀitame, kuidas vÔiksite teha muudatusi failis crio.conf. Et mitte segadusse minna terminoloogiaga, proovige keskenduda tulemustele.

Esiteks loome midagi, mida nimetatakse konteineri kĂ€itamise konfiguratsiooniks – Container Runtime Config. Peate seda mĂ”tlema kui Kubernetes ressurssi, mis esindab CRI-O konfiguratsiooni. Tegelikult on see spetsialiseeritud versioon sellest, mida nimetatakse MachineConfig'iks, mis esindab igasugust konfiguratsiooni, mis on rakendatud RHEL CoreOS masinasse OpenShift klastris.

See kohandatud ressurss, tuntud kui ContainerRuntimeConfig, on vĂ€lja töötatud selleks, et hĂ”lbustada klastrite administraatorite jaoks CRI-O seadistamist. See on piisavalt vĂ”imas tööriist, et seda saaks rakendada ainult teatud nodude suhtes sĂ”ltuvalt MachineConfigPooli seadistustest. Peate seda mĂ”tlema kui masinate rĂŒhmana, mis teenib sama eesmĂ€rki.

Pange tÀhele kahte viimast rida, mida kavatseme muuta failis /etc/crio/crio.conf. Need kaks rida sarnanevad vÀga crio.conf failis olevate ridadega, need on:

vi ContainerRuntimeConfig.yaml

KokkuvÔte:

apiVersion: machineconfiguration.openshift.io/v1
kind: ContainerRuntimeConfig
metadata:
 name: set-log-and-pid
spec:
 machineConfigPoolSelector:
   matchLabels:
     debug-crio: config-log-and-pid
 containerRuntimeConfig:
   pidsLimit: 2048
   logLevel: debug

NĂŒĂŒd saadame selle faili Kubernetesi klastrisse ja kontrollime, kas see on tĂ”eliselt loodud. Pange tĂ€hele, et töö toimub tĂ€pselt samamoodi nagu teiste Kubernetes'i ressurssidega:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

KokkuvÔte:

NAME              AGE
set-log-and-pid   22h

PĂ€rast ContainerRuntimeConfig'i loomist peame muutma ĂŒht MachineConfigPooli, et anda Kubernetes'ile teada, et soovime seda konfiguratsiooni rakendada teatud grupile masinatest klastris. Sel juhul muudame masina konfiguratsioonide poodi meister-sĂ”lmedele:

oc edit MachineConfigPool/master

VÀljund (selguse huvides on jÀetud vÀlja pÔhisisu):

...
metadata:
 creationTimestamp: 2019-04-10T23:42:28Z
 generation: 1
 labels:
   debug-crio: config-log-and-pid
   operator.machineconfiguration.openshift.io/required-for-upgrade: ""
...

Sel hetkel hakkab MCO looma uut faili crio.conf klastrile. Sellega seoses saame tÀieliku konfiguratsioonifaili vaadata Kubernetes API vahendite kaudu. Pidage meeles, et ContainerRuntimeConfig on lihtsalt spetsialiseeritud versioon MachineConfig'ist, seega saame nÀha tulemust, vaadates MachineConfigs'i sobivaid ridu:

oc get MachineConfigs | grep rendered

KokkuvÔte:

rendered-master-c923f24f01a0e38c77a05acfd631910b                  4.0.22-201904011459-dirty 2.2.0 16h
rendered-master-f722b027a98ac5b8e0b41d71e992f626                  4.0.22-201904011459-dirty 2.2.0 4m
rendered-worker-9777325797fe7e74c3f2dd11d359bc62                  4.0.22-201904011459-dirty 2.2.0 16h

Pange tĂ€hele, et saadud konfiguratsioonifail meister-sĂ”lmedele osutus uuemaks versiooniks kui algsed konfiguratsioonid. Selle vaatamiseks kĂ€ivitage jĂ€rgmine kĂ€sk. KĂŒll aga mĂ€rkige, et see vĂ”ib olla ĂŒks parimaid ĂŒhelarulisi skripte kogu Kubernetes'e ajaloos:

python3 -c "import sys, urllib.parse; print(urllib.parse.unquote(sys.argv[1]))" $(oc get MachineConfig/rendered-master-f722b027a98ac5b8e0b41d71e992f626 -o YAML | grep -B4 crio.conf | grep source | tail -n 1 | cut -d, -f2) | grep pid

KokkuvÔte:

pids_limit = 2048

NĂŒĂŒd veendume, et konfiguratsioon rakendati kĂ”ikidele meister-sĂ”lmedele. Esiteks saame klastris sĂ”lmede nimekirja:

oc get node | grep master

VĂ€ljund:

ip-10-0-135-153.us-east-2.compute.internal   Ready master 23h v1.12.4+509916ce1

ip-10-0-154-0.us-east-2.compute.internal     Ready master 23h v1.12.4+509916ce1

ip-10-0-166-79.us-east-2.compute.internal    Ready master 23h v1.12.4+509916ce1

NĂŒĂŒd vaatame installitud faili. NĂ€ete, et fail on uuendatud vastavalt uutele pid ja debug direktiivide vÀÀrtustele, mille me mÀÀrasime ContainerRuntimeConfig ressurssis. Isegi elegants:

oc debug node/ip-10-0-135-153.us-east-2.compute.internal — cat /host/etc/crio/crio.conf | egrep 'debug||pid‘

KokkuvÔte:

...
pids_limit = 2048
...
log_level = "debug"
...

KĂ”ik need muudatused klastris tehti isegi ilma SSH kĂ€ivitamiseta. Kogu töö tehti peatĂŒkiksite Kubernetes'i meistrisĂ”lmele. See tĂ€hendab, et need uued parameetrid konfigureeriti ainult meistrisĂ”lmedes. TöötlussĂ”lmed ei muutunud, mis nĂ€itab Kubernetes'i metodoloogia eeliseid, kasutades mÀÀratud ja reaalseid seisundeid, mis on seotud konteinerite hostimise ja konteinerite mootorsĂ”idukitega, millel on vahetatavad elemendid.

Ülaltoodud nĂ€ide nĂ€itab, et muudatusi saab teha vĂ€ikese OpenShift Container Platform 4 klastriga, kus on kolm töötlussĂ”lme, vĂ”i tohutu tootmisklastriga, kus on 3000 sĂ”lme. Igal juhul on töö ulatus sama – see on ĂŒsna vĂ€ike – piisab, kui seadistada ContainerRuntimeConfig fail ja muuta ĂŒks sild (label) MachineConfigPoolis. Ja seda saab teha mis tahes OpenShift Container Platform 4.X Kubernetes'i versiooniga kogu selle eluea jooksul.

Sageli arenevad tehnoloogiaettevĂ”tted nii kiiresti, et me ei suuda selgitada, miks me valime teatud tehnoloogiaid oma pĂ”hikomponentide jaoks. Konteinerite mootorsĂ”idukid on ajalooliselt olnud see komponent, millega kasutajad otseselt suhelda saavad. Kuna konteinerite populaarsus tekkis loomulikult koos konteinerite mootorsĂ”idukite tĂ”usmisega, nĂ€itavad kasutajad sageli nende vastu huvi. See on veel ĂŒks pĂ”hjus, miks Red Hat valis CRI-O. Konteinerid arenevad, samas on tĂ€napĂ€eval peamine tĂ€helepanu koondunud orkestreerimisele ja oleme jĂ”udnud jĂ€reldusele, et CRI-O pakub parimat kogemust OpenShift 4 kasutamisel.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster