Konteinereid – konveieril: CRI-O on nĂŒĂŒd OpenShift Container Platform 4-s vaikimisi

Platvorm Red Hat OpenShift Container Platform 4 on pööramine lihtsustamine majutuskohtade loomine konteinerite kasutamiseks, sealhulgas pilveteenuse pakkujate infrastruktuuris, virtualiseerimisplatvormidel vĂ”i bare-metal sĂŒsteemides. Et luua tĂ”eliselt pilvepĂ”hine platvorm, pidime rangelt kontrollima kĂ”iki kasutatavaid komponente, suurendades seelĂ€bi keeruka automatiseerimisprotsessi usaldusvÀÀrsust.

Konteinereid – konveieril: CRI-O on nĂŒĂŒd OpenShift Container Platform 4-s vaikimisi

Ilmselge lahendus oli kasutada standardina Red Hat Enterprise Linux CoreOS (Red Hat Enterprise Linuxi variant) ja CRI-O, ja see on pÔhjus


Kuna mereteema sobib hĂ€sti analoogiate leidmiseks Kubernetes'i ja konteinerite töö selgitamiseks, proovime rÀÀkida Ă€riprobleemidest, mida CoreOS ja CRI-O lahendavad, tuues nĂ€iteks Bruneli leiutist takelauablokkide tootmiseks.. 1803. aastal esitati Mark Brunele ĂŒlesanne valmistada 100 000 takelĆŸaari plokki, mis on vajalik Suurbritannia kasvava merevĂ€e jaoks. TakelĆŸaari plokk on seadmed, mida kasutatakse köite kinnitamiseks purjedesse. Kuni 19. sajandi alguseni valmistati neid plokke kĂ€sitööna, kuid Brunele suutis tootmise automatiseerida ja hakata valmistama standartiseeritud plokke masinate abil. Selle protsessi automatiseerimine tĂ€hendas, et kĂ”ik plokid olid peaaegu identsed, neid sai kergesti asendada, kui need purunesid, ja neid sai toota suures koguses.

Kujutage nĂŒĂŒd ette, et Brjunel peab seda tööd tegema 20 erineva laevamudeli (Kubernetesi versiooni) jaoks ja viie erineva planeedi puhul, millel on tĂ€iesti erinevad ookeanivoolud ja tuuled (pilveteenuse pakkujad). Samuti pidi kĂ”ik laevad (OpenShifti klastrid) kĂ€ituma kaptenite (klastrite haldajate) silmis samamoodi sĂ”ltumata planeetidest, millel orienteeritakse. JĂ€tkates mereteemat, ei ole kaptenitele oluline, milliseid takeliike (CRI-O) nende laevadel kasutatakse - oluline on, et need olema tugevad ja usaldusvÀÀrsed.

Enne OpenShift 4, mis on pilveplatvorm, seisab silmitsi sarnase Ă€riĂŒlesandega. Uued nodid peavad looma klastrit luues, sĂ”lme rikke korral vĂ”i klastrit skaleerides. Uue sĂ”lme loomisel ja algatamisel peavad olema Ă”igesti konfigureeritud ka hosti kriitilised komponendid, sealhulgas CRI-O. Nagu igas tootmisprotsessis, tuleb kĂ”igepealt esitada "toorained". Laevade puhul on tooraineteks metall ja puit. Kuid OpenShift 4 klastris konteinerite kujundamiseks hosti loomisel on sisse vaja faile ja API-serverite konfiguratsioonifailid. SeejĂ€rel tagab OpenShift kogu elutsĂŒkli vĂ€ltel vajaliku automatiseerimise taseme, pakkudes lĂ”ppkasutajatele vajalikku tootetoe ning tasuvates investeeringutesse platvormisse.

OpenShift 4 on loodud nii, et see vĂ”imaldab mugavat sĂŒsteemi vĂ€rskendamist kogu platvormi elutsĂŒkli jooksul (versioonide 4.X) kĂ”ikide peamiste pilvearvutuse, virtualiseerimisplatvormide ja isegi bare metal sĂŒsteemide tarnijate jaoks. Selleks peavad sĂ”lmed olema loodud vahetatavate elementide baasil. Kui klaster vajab uut Kubernetes'e versiooni, saab ta ka vastava CRI-O versiooni CoreOS-il. Kuna CRI-O versioon on otseselt seotud Kubernetes'ega, lihtsustab see oluliselt katsetamiseks, tĂ”rkeotsinguks vĂ”i toeks vajalike muudatuste tegemist. Lisaks vĂ”imaldab selline lĂ€henemine vĂ€hendada lĂ”ppkasutajate ja Red Hati kulusid.

See on pĂ”himĂ”tteliselt uus lĂ€henemine Kubernetes'e klastritele, mis loob aluse uute vĂ€ga kasulike ja atraktiivsete funktsioonide kavandamiseks. CRI-O (Ava konteineri kĂ€ituse liides – Open Container Initiative, lĂŒhendatult CRI-OCI) on osutunud parimaks valikuks massiliseks sĂ”lmede loomiseks, mis on vajalik OpenShift'i jaoks. CRI-O asendab varasemalt kasutatud Docker'i mootorit, pakkudes OpenShift'i kasutajatele. majanduslik, stabiilne, lihtne ja igav – jah, te ei kuulnud valele – igav konteinerimootor, mis on loodud spetsiaalselt Kubernetes'e jaoks.

Ava konteinerite maailm

Maailm on juba pikka aega liikunud avatud konteinerite suunas. Olgu need Kubernetes'es vĂ”i madalamal tasemel, konteineristandardite areng toob kaasa innovatsiooniekosĂŒsteemi igas tasemes.

KĂ”ik sai alguse Open Containers Initiative'i loomisest juunis 2015. Selle varajase töö etapis koostati konteineripildi ja kĂ€ituse spetsifikatsioonid ja . See vĂ”imaldas tagada, et tööriistad saavad kasutada ĂŒhtset standarditkonteineripiltide jaoks. konteinerite kujundeid ja ĂŒhtne formaat nende tööks. Hiljem lisati spetsifikatsioonid distributsioonid (distribution), mis vĂ”imaldas kasutajatel hĂ”lpsasti vahetada konteineripilte.

SeejĂ€rel töötas Kubernetes'i kogukond vĂ€lja ĂŒhtse pluggable liidese, mille nimi oli Container Runtime Interface (CRI). TĂ€nu sellele suudavad Kubernetes'i kasutajad lisada erinevaid mootoreid konteinerite töötlemiseks, sealhulgas Docker.

Red Hat'i ja Google'i insenerid nĂ€gid turul olemasolevat vajadust konteinerimootori jĂ€rele, mis suudaks Kubelet'ilt CRI protokolli kaudu pĂ€ringuid vastu vĂ”tta, ning esitasid konteinerid, mis olid kooskĂ”las ĂŒlalnimetatud OCI spetsifikatsioonidega. Nii ilmus OCID. Kuid oodake, me ĂŒtlesime, et see materjal on pĂŒhendatud CRI-O'le? Tegelikult on see tĂ”si, lihtsalt koos versiooni 1.0 tuli projektile uus nimi - CRI-O.

Joon. 1.

Konteinereid – konveieril: CRI-O on nĂŒĂŒd OpenShift Container Platform 4-s vaikimisi

Innovatsioonid CRI-O ja CoreOS

Koos OpenShift 4 platvormi kÀivitamisega muudeti konteinerimootorit, mis on vaikimisi platvormis, ning Dockeri asemel tuli CRI-O, mis pakkus ökonoomset, stabiilset, lihtsat ja igavat konteinerite kÀitamise keskkonda, mis areneb koos Kubernetesega. See lihtsustab oluliselt klastrite hooldust ja seadistamist. Konteinerimootori ja hosti konfigureerimine ning haldamine muutub OpenShift 4 raames automatiseerituks.

Oota, kuidas nii?

Just nii, OpenShift 4 tulekuga pole enam vaja ĂŒhenduda eraldi hostidega ja installida konteinerimootorit, seadistada salvestusruumi, kohandada servereid otsinguks vĂ”i seadistada vĂ”rku. OpenShift 4 platvorm on tĂ€ielikult ĂŒmber kujundatud, et kasutada the Operator Framework mitte ainult lĂ”ppkasutajate rakenduste vaatenurgast, vaid ka platvormi tasandi pĂ”hitegevuste vaatenurgast, nagu piltide juurutamine, sĂŒsteemi seadistamine vĂ”i vĂ€rskenduste paigaldamine.

Kubernetes on alati vÔimaldanud kasutajatel hallata rakendusi, mÀÀratledes soovitud oleku ja kasutades kontrollerid (Controllers), et tagada, et tegelik olek vastab maksimaalselt mÀÀratud olekule. See lÀhenemine mÀÀratud oleku ja tegeliku oleku kasutamisega avab suuri vÔimalusi nii arenduse kui ka operatsioonide vaatepunktist. Arendajad saavad mÀÀratleda vajaliku oleku, edastada selle operaatorile YAML vÔi JSON faili kujul ning seejÀrel saab operaator luua kÀituskeskkonnas vajaliku rakenduse instantsi, mille tööolek vastab tÀielikult mÀÀratud olekule.

Kasutades operaatorit (Operators) platvormil, toob OpenShift 4 selle uue paradigma (kasutades mÀÀratud ja tegeliku oleku kontseptsiooni) RHEL CoreOS ja CRI-O haldamisse. OperatsioonisĂŒsteemi ja konteinerimootori konfiguratsiooni ja versioonihalduse ĂŒlesanded automatiseeritakse nn masinaklassi operaatori (Machine Config Operator, MCO) abil.. MCO lihtsustab oluliselt klastri administraatori töökoormat, automatiseerides sisuliselt viimased etapid paigaldamisest ja sellele jĂ€rgnevate (teise pĂ€eva) toimingute tegemise. See kĂ”ik muudab OpenShift 4 tĂ”eliseks pilveplatvormiks. Peatume sellel hiljem.

Konteinerite kÀivitamine

Kasutajatel oli vĂ”imalik kasutada CRI-O mootorit OpenShift platvormil alates versioonist 3.7 tehnilise eelvaate (Tech Preview) staatuses ja versioonist 3.9 ĂŒldise kĂ€ttesaadavuse (Generally Available) staatuses. Lisaks sellele kasutab Red Hat ulatuslikult CRI-O tootmiskoormuste kĂ€ivitamiseks OpenShift Online alates versioonist 3.10. See kĂ”ik on andnud CRI-O meeskonnale suure kogemuse konteinerite massiliseks kĂ€ivitamiseks suurtes Kubernetes klastrites. Et saada pĂ”hiteadmisi, kuidas Kubernetes kasutab CRI-O-d, vaatame jĂ€rgmist joonist, mis nĂ€itab arhitektuuri tööpĂ”himĂ”tet.

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

Konteinereid – konveieril: CRI-O on nĂŒĂŒd OpenShift Container Platform 4-s vaikimisi

CRI-O lihtsustab uute konteinerihostide loomist, sĂŒnkroniseerides kogu ĂŒlemise taseme uute sĂ”lmede kĂ€ivitamisel ja OpenShift'i platvormi uute versioonide vĂ€ljalaskmisel. Kogu platvormi lĂ€bivaatamine vĂ”imaldab teha tehingupĂ”hiseid vĂ€rskendusi / tagasipöördeid ning takistab tsĂŒklilisi lukustusi konteinerisaba, konteinerimootori, sĂ”lmede (Kubeletid) ja Kubernetes Master'i vahel. KĂ”ikide platvormi komponentide tsentraliseeritud haldamisega, versioonide jĂ€lgimise ja juhtimisega on alati vĂ”imalik jĂ€lgida selget teed seisundist A seisundisse B. See lihtsustab vĂ€rskendamise protsessi, suurendab turvalisust, parandab tulemuslikkuse arvestust ja aitab vĂ€hendada vĂ€rskenduste ja uute versioonide paigaldamise kulusid.

Vahetatavate elementide jÔudude demonstreerimine

Nagu eespool mainitud, pakub Machine Config Operator konteinerite hostimise ja konteineri mootori haldamiseks OpenShift 4-s uut automatiseerimise taset, mis ei olnud varem Kubernetes platvormil vĂ”imalik. Uute vĂ”imaluste demonstreerimiseks nĂ€itame, kuidas te vĂ”iks teha muudatusi failis crio.conf. Terminoloogiaga mitte segadusse sattuda, pĂŒĂŒdke keskenduda tulemustele.

Esmalt loome selle, mida nimetatakse konteineri kĂ€ituskeskkonna konfiguratsiooniks – Container Runtime Config. Peate seda pidama teatud tĂŒĂŒpi Kubernetes ressurssideks, mis esindab CRI-O konfiguratsiooni. Tegelikult on see spetsialiseeritud versioon sellest, mida kutsutakse MachineConfig'iks, mis esindab igasugust konfiguratsiooni, mis on rakendatud RHEL CoreOS masinasse OpenShift klastris.

See kohandatud ressurss, mida nimetatakse ContainerRuntimeConfig-iks, on loodud selleks, et lihtsustada klastrihaldurite jaoks CRI-O seadistamist. See on piisavalt vÔimas tööriist, et seda saab rakendada ainult teatud sÔlmedele, sÔltuvalt MachineConfigPooli seadistustest. Pange see grupp masinad, mis teenivad sama eesmÀrki.

Pöörake tÀhelepanu kahte viimasele reale, mida me kavatseme muuta failis /etc/crio/crio.conf. Need kaks rida on vÀga sarnased ridadele failis crio.conf, need on:

vi ContainerRuntimeConfig.yaml

VĂ€ljund:

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 saatke see fail Kubernetes klastrisse ja kontrollime, kas see tĂ”epoolest on loodud. Pange tĂ€hele, et töö toimib tĂ€pselt nagu mis tahes muu Kubernetes ressurss:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

VĂ€ljund:

NAME              AGE
set-log-and-pid   22h

PĂ€rast ContainerRuntimeConfig'i loomist peame muutma ĂŒhte MachineConfigPools'i, et anda Kubernetes'ile teada, et soovime seda konfiguratsiooni rakendada teatud masinagruppidele klastris. Sel juhul muudame master-nööride MachineConfigPool'i:

oc edit MachineConfigPool/master

VÀljund (selguse huvides on jÀetud pÔhimÔtteline sisu):

...
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 alustab MCO uue faili crio.conf loomist klastrile. Valmis konfiguratsioonifaili saab vaadata Kubernetes API vahendite abil. Pidage meeles, et ContainerRuntimeConfig on vaid spetsialiseeritud versioon MachineConfigist, seega saame tulemuse nÀha, vaadates Ôigeid ridu MachineConfigs'is:

oc get MachineConfigs | grep rendered

VĂ€ljund:

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 master-sĂ”lmede jaoks osutus uuemaks versiooniks kui algsed konfiguratsioonid. Selle vaatamiseks kĂ€ivitage jĂ€rgmine kĂ€sk. Samuti mĂ€rkime, et see vĂ”ib olla ĂŒks parimaid ĂŒherealisi 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

VĂ€ljund:

pids_limit = 2048

NĂŒĂŒd veendume, et konfiguratsioon on rakendatud kĂ”ikidele master-sĂ”lmedele. Esiteks saame nimekirja klastris olevatest sĂ”lmedest:

oc get node | grep master

VĂ€ljund:

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

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

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

Vaata nĂŒĂŒd installitud faili. NĂ€ete, et fail on vĂ€rskendatud uute vÀÀrtustega, mida mÀÀrasime ContainerRuntimeConfig ressursis. KĂ”ik on elegantselt tehtud:

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

VĂ€ljund:

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

KÔik need muudatused klastris tehti isegi SSH kÀivitamata. KÔik töö tehti Kuberentesi peaÔlule pöördumise kaudu. See tÀhendab, et need uued parameetrid konfigureeriti ainult peaÔludel. TöötlusÔlmed jÀid selle juures muutumatuks, mis tÔestab Kubernetes'i metodoloogia eeliseid, kasutades mÀÀratletud ja tegelikke olekuteavet konteinerite ja konteinerimootorite asendatavate komponentide suhtes.

Ülaltoodud nĂ€ide illustreerib, kuidas saab teha muudatusi vĂ€ikese OpenShift Container Platform 4 klastriga, kus on kolm töösĂ”lme, vĂ”i tohutu tootmisklastriga, kus on 3000 sĂ”lme. Igal juhul on töö maht sama – ja ĂŒsnagi vĂ€ike – piisab ContainerRuntimeConfig faili seadistamisest ja ĂŒhe sildi (label) muutmisest MachineConfigPoolis. Saate seda teha koos kĂ”igi Kubernetes OpenShift Container Platform 4.X versioonidega kogu nende elutsĂŒkli vĂ€ltel.

Tihti, tehnoloogia ettevĂ”tted arenevad nii kiiresti, et me ei suuda selgitada, miks valime teatud tehnoloogiad pĂ”hikomponentide jaoks. Konteinerimootorid on ajalooliselt olnud komponent, millega kasutajad otseselt suhtlevad. Kuna konteinerite populaarsus kasvas koos konteinerimootorite ilmumisega, tunnevad kasutajad nende vastu sageli huvi. See on veel ĂŒks pĂ”hjus, miks Red Hat valis CRI-O. Konteinerid arenevad, keskendudes tĂ€na peamiselt orkestreerimisele, ja oleme jĂ”udnud jĂ€reldusele, et CRI-O pakub parimat kogemust OpenShift 4 kasutamisel.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster