Platvorm vĂ”imaldab automatiseerida loomist , 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.

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 . 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 â 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, toob igasuguseid uuendusi igal tasemel.
KĂ”ik algas Open Containers Initiativeâi loomisega Selle algusfaasis kujundati konteineri ja spetsifikatsioonid. See vĂ”imaldas tagada, et tööriistad saavad kasutada ĂŒhtset standardit ja ĂŒhtset formaati nende töötlemiseks. Hiljem lisati spetsifikatsioonid, mis vĂ”imaldasid kasutajatel mugavalt vahetada .
SeejĂ€rel töötas Kubernetes kogukond vĂ€lja ĂŒhtse pluggable interface'i standardi, nimega 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 Aga oodake, me ĂŒtlesime, et see materjal kĂ€sitleb CRI-O-d? Tegelikult on see tĂ”si, lihtsalt versiooni 1.0 vĂ€ljatulekuga Joonis 1.
Uuendused CRI-O ja CoreOS-i jaoks.

OpenShift 4 platvormi kÀivitamisega muudeti
kasutatav konteinerimootor 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. 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 , et tagada, et tegelik olek vastaks vÔimalikult palju mÀÀratud olekule. See ava suured vÔimalused nii arenduse kui ka operatsioonide vaatenurgast. Arendajad saavad mÀÀrata nÔutud oleku, 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 . 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 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

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
