Kontejner – nĂ« tub: CRI-O tani Ă«shtĂ« defolt nĂ« OpenShift Container Platform 4

Platforma Red Hat OpenShift Container Platform 4 lejon le ta themel hoste për vendosjen e kontejnerëve, përfshirë në infrastrukturën e ofruesve të shërbimeve të cloud, në platforma virtualizimi ose në sisteme bare-metal. Për të krijuar një platformë të vërtetë cloud, na duhej të merrnim nën kontroll të gjithë elementët e përdorur dhe kështu të rrisim besueshmërinë e procesit të ndërlikuar të automatizimit.

Kontejner – nĂ« tub: CRI-O tani Ă«shtĂ« defolt nĂ« OpenShift Container Platform 4

Zgjidhja tërheqëse ishte përdorimi si standard i Red Hat Enterprise Linux CoreOS (një variant i Red Hat Enterprise Linux) dhe CRI-O, dhe ja pse...

Duke qenë se tema e lundrimit është shumë e përshtatshme për të gjetur analogji në shpjegimin e funksionimit të Kubernetes dhe kontejnerëve, le të përpiqemi të flasim për problemet biznesore që zgjidhin CoreOS dhe CRI-O, në shembullin e shpikjes së Brunel për prodhimin e bllokimeve të rigging. Në vitin 1803, Mark Brunel u përball me sfidën për të prodhuar 100 mijë bllokime rigging për nevojat e flotës detare në rritje të Britanisë. Blloku i rigging është një lloj pajisjeje që përdoret për të lidhur litarët me velat. Deri në fillim të shekullit të 19-të, këto bllokime prodhoheshin me dorë, por Brunel arriti të automatizonte prodhimin dhe të fillonte prodhimin e bllokimeve të standardizuara me ndihmën e makinerive. Automatizimi i këtij procesi do të thoshte që të gjitha bllokimet përfunduan pothuajse të njëjta, mund të zëvendësoheshin lehtësisht në rast dështimi dhe mund të prodhoheshin në sasi të mëdha.

Tani imagjinoni se Brunel do t'i duhej tĂ« bĂ«nte kĂ«tĂ« punĂ« pĂ«r 20 modele tĂ« ndryshme anijesh (versionet e Kubernetes) dhe pĂ«r pesĂ« planete tĂ« ndryshme me rrjedha dhe erĂ«ra detare krejtĂ«sisht tĂ« ndryshme (ofruesit e cloud). PĂ«r mĂ« tepĂ«r, kĂ«rkohej qĂ« tĂ« gjitha anijet (klasterĂ«t OpenShift), pavarĂ«sisht nga planetet mbi tĂ« cilat po navigohej, nĂ« sytĂ« e kapitanĂ«ve (operatorĂ«ve qĂ« menaxhojnĂ« funksionimin e klasterĂ«ve) tĂ« silleshin tĂ« njĂ«jtĂ«. Duke vazhduar analogjinĂ« detare, kapitanĂ«ve tĂ« anijeve nuk u intereson aspak se cilat bllokime rigging (CRI-O) pĂ«rdoren nĂ« anijet e tyre – e rĂ«ndĂ«sishme pĂ«r ta Ă«shtĂ« qĂ« kĂ«to bllokime tĂ« jenĂ« tĂ« forta dhe tĂ« besueshme.

Para OpenShift 4, si një platformë cloud, qëndron një detyrë shumë e ngjashme biznesi. Njësi të reja duhet të krijohen në momentin e krijimit të klasterit, në rast dështimi të njërit prej nyjave, ose gjatë shkallëzimit të klasterit. Gjatë krijimit dhe inicializimit të një nyje të re, komponentët kritikë të hostit, përfshirë CRI-O, duhet të konfigurohen në përputhje me nevojat. Ashtu si në çdo prodhim tjetër, në fillim duhet të ofrosh "lëndën e parë". Në rastin e anijeve, lënda e parë përbëhet nga metal dhe dru. Megjithatë, në rastin e krijimit të një hosti për vendosjen e konteinerëve në klasterin OpenShift 4, në hyrje duhet të kemi skedarë konfigurimi dhe shërbime API të ofruara. Pas kësaj, OpenShift do të sigurojë nivelin e duhur të automatizimit gjatë gjithë ciklit të jetës, duke ofruar mbështetje produkti të nevojshme për përdoruesit e fundit dhe përfitimin nga investimet në platformë.

OpenShift 4 u krijua në mënyrë që të sigurojë mundësinë për të përditësuar sistemin në mënyrë të lehtë gjatë gjithë ciklit të jetës së platformës (për versionet 4.X) për të gjithë ofruesit kryesorë të cloud computing, platformave të virtualizimit dhe madje sistemëve bare metal. Për këtë, nyjat duhet të krijohen mbi baza të elementeve të ndërrueshëm. Kur klasteri kërkon një version të ri të Kubernetes, ai gjithashtu merr versionin përkatës të CRI-O në CoreOS. Duke qenë se versioni i CRI-O është i lidhur drejtpërdrejt me Kubernetes, e gjithë kjo e thjeshton ndjeshëm çdo lëvizje me qëllim testimi, zgjidhjeje problematikash ose mbështetje. Për më tepër, ky qasje ndihmon në uljen e kostove për përdoruesit e fundit dhe Red Hat.

Ky Ă«shtĂ« njĂ« qĂ«ndrim krejtĂ«sisht i ri ndaj klasterĂ«ve Kubernetes, qĂ« ngre bazat pĂ«r planifikimin e veçorive shumĂ« tĂ« dobishme dhe tĂ«rheqĂ«se. CRI-O (projekti i hapur i Container Runtime Interface — Open Container Initiative, e njohur shkurt CRI-OCI) ka rezultuar si zgjedhja mĂ« e mirĂ« pĂ«r krijimin masiv tĂ« nyjave, e nevojshme pĂ«r funksionimin me OpenShift. CRI-O do tĂ« zĂ«vendĂ«sojĂ« motorin Docker tĂ« pĂ«rdorur mĂ« parĂ«, duke ofruar pĂ«rdoruesve tĂ« OpenShift njĂ« motor konteinerĂ«sh ekonomik, stabil, tĂ« thjeshtĂ« dhe tĂ« mĂ«rzitshĂ«m – po, nuk jeni duke dĂ«gjuar gabim – njĂ« motor konteinerĂ«sh i mĂ«rzitshĂ«m, i krijuar posaçërisht pĂ«r tĂ« punuar me Kubernetes.

Bota e konteinerëve të hapur

Bota ka një kohë të gjatë që bota po lëviz në drejtim të kontejnerëve të hapur. Sidoqoftë, në Kubernetes, ose në nivele më të ulëta, zhvillimi i standarteve të kontejnerëve ka çuar në krijimin e një ekosistemi inovacionesh në çdo nivel.

Të gjitha filluan me krijimin e iniciativës Open Containers Initiative në qershor 2015.Në këtë fazë të hershme, u formuan specifikimet për imazhin e kontejnerit (image) dhe mjedisin e ekzekutimit (runtime).Kjo garantoi që mjetet mund të përdorin një standard të vetëm të imazheve të kontejnerëve dhe një format të vetëm për të punuar me to. Më vonë u shkruan specifikimet e shpërndarjes (distribution),çka lehtësoi përdoruesit për të ndarë imazhe kontejnerësh..

Pastaj, komuniteti i Kubernetes zhvilloi një standard të vetëm të ndërfaqes së bashkëngjitur (pluggable interface), të quajtur Container Runtime Interface (CRI).Falë kësaj, përdoruesit e Kubernetes mund të lidhin motorë të ndryshëm për të punuar me kontejnerët përveç Docker-it.

Inxhinierët e Red Hat dhe Google panë nevojën në treg për një motor kontejneri që mund të pranojë kërkesat nga Kubelet përmes protokollit CRI dhe paraqitën kontejnerë që ishin të përshtatshëm me specifikimet e përmendura më sipër të OCI. Kështu u shfaq OCID.Por, ndaloni, ne thamë se ky material do të jetë për CRI-O? Në të vërtetë, kështu është, thjesht me lëshimin e versionit 1.0, projekti u ribemë CRI-O.

Fig. 1.

Kontejner – nĂ« tub: CRI-O tani Ă«shtĂ« defolt nĂ« OpenShift Container Platform 4

Inovacionet me CRI-O dhe CoreOS

Me lançimin e platformës OpenShift 4, u ndryshua motori i kontejnerit, që përdorej si standard në platformë, dhe në vend të Docker erdhi CRI-O, duke ofruar një ambient ekonomik, stabil, të thjeshtë dhe të qetë për ekzekutimin e kontejnerëve që zhvillohet paralelisht me Kubernetes. Kjo e bën të thjeshtë mbështetje dhe konfigurimin e grumbullit. Konfigurimi i motorit të kontejnerëve dhe hostit, si dhe menaxhimi i tyre bëhet automatik në kuadër të OpenShift 4.

Ndaloni, si është kjo?

Pikërisht kështu, me daljen e OpenShift 4, tani nuk ka nevojë të lidheni me hoste të veçantë dhe të instaloni motorin e kontejnerëve, të konfiguroni magazinën, të konfiguroni serverët për kërkimin ose të konfiguroni rrjetin. Platforma OpenShift 4 është rishikuar plotësisht për të përdorur Operator Framework jo jo nga pikëpamja e aplikacioneve të përdoruesve të fundit, por edhe nga pikëpamja e operacioneve thelbësore në nivelin e platformës, si shpërndarja e imazheve, konfigurimi i sistemit ose instalimi i përditësimeve.

Kubernetes gjithmonë ua ka mundësuar përdoruesve të menaxhojnë aplikacionet duke përcaktuar gjendjen e dëshiruar dhe duke përdorur kontrolluesit (Controllers), për të siguruar që gjendja reale të jetë sa më e afërt me gjendjen e përcaktuar. Ky qasje duke përdorur gjendjen e përcaktuar dhe gjendjen reale hap mundësi të mëdha si për zhvillimin ashtu edhe për operacionet. Zhvilluesit mund të përcaktojnë gjendjen e kërkuar, ta kalojnë operatorit në formën e një dosjeje YAML ose JSON, dhe pastaj operatori mund të krijojë në mjedisin operativ ekzemplar të nevojshëm të aplikacionit, duke garantuar që gjendja operuese e këtij ekzemplar do të përputhet plotësisht me atë të përcaktuar.

Duke përdorur operatorët (Operators) në platformë, OpenShift 4 sjell këtë paradigëm të re (përmes konceptit të gjendjes së përcaktuar dhe gjendjes reale) në menaxhimin e RHEL CoreOS dhe CRI-O. Detyrat e konfigurimit dhe menaxhimit të versioneve të sistemit operativ dhe motorit të kontejnerëve automatizohen përmes ashtuquajturit operatori i konfigurimit të makinave (Machine Config Operator, MCO). MCO e thjeshton ndjeshëm punën e administratorit të klashtër, duke automatizuar thelbësisht fazat e fundit të instalimit, si dhe operacionet e mëpasme pas instalimit (ditët e dyta). Të gjitha këto e bëjnë OpenShift 4 një platformë të vërtetë cloud. Ne do të ndalojmë te kjo pak më vonë.

Fillimi i kontejnerëve

Përdoruesit patën mundësinë të përdornin motorin CRI-O në platformën OpenShift që nga versioni 3.7 në statusin e Tech Preview dhe që nga versioni 3.9 në statusin e Generally Available (tani i mbështetur). Përveç kësaj, Red Hat e përdor gjerësisht CRI-O për të nisur ngarkesat e punës prodhuese në OpenShift Online që nga versioni 3.10. Të gjitha këto i dhanë ekipit që punon me CRI-O një përvojë të madhe në nisjen masive të kontejnerëve në klasterë të mëdhenj Kubernetes. Për të marrë disa ide bazë se si Kubernetes përdor CRI-O, le të shikojmë ilustimin e mëposhtëm, që tregon parimin e funksionimit të arkitekturës.

Fig. 2. Si punojnë kontejnerët në një klaster Kubernetes

Kontejner – nĂ« tub: CRI-O tani Ă«shtĂ« defolt nĂ« OpenShift Container Platform 4

CRI-O thjeshton krijimin e hosteve të rinj të konteinerëve përmes sinkronizimit të gjithë nivelit të lartë gjatë inicializimit të nodave të rinj dhe gjatë lëshimit të versioneve të reja të platformës OpenShift. Rishikimi i gjithë platformës si një e tërë lejon që të kryhen azhurnime / rikthime transaksionale dhe parandalon bllokimet reciproke në varësi midis bërthamës së hosteve të konteinerëve, motorit të konteinerëve, nodave (Kubelets) dhe nodës kryesore të Kubernetes Master. Me menaxhimin qendror të të gjithë komponenteve të platformës, duke kontrolluar dhe menaxhuar versionet, mund të ndiqet gjithmonë një rrugë e qartë nga gjendja A në gjendjen B. Kjo lejon thjeshtimin e procesit të azhurnimeve, rrit sigurinë, përmirëson raportimin e performancës dhe ndihmon në uljen e kostove për azhurnimet dhe instalimin e versioneve të reja.

Demonstrare e fuqisë së komponentëve të ndërveprueshëm

Siç u përmend më parë, përdorimi i Machine Config Operator për menaxhimin e hostit të konteinerëve dhe motorit të konteinerëve në OpenShift 4 siguron një nivel të ri automatizimi që nuk ishte i mundur më parë në platformën Kubernetes. Për të demonstruar mundësitë e reja, do të tregojmë se si mund të bënit ndryshime në skedarin crio.conf. Për të mos u ngatërruar në terminologji, përpiquni të përqendroheni në rezultate.

SĂ« pari, le tĂ« krijojmĂ« atĂ« qĂ« quhet konfigurimi i mjedisit tĂ« ekzekutimit tĂ« konteinerit – Container Runtime Config. Mendojeni kĂ«tĂ« si njĂ« burim Kubernetes, i cili pĂ«rfaqĂ«son konfigurimin pĂ«r CRI-O. NĂ« fakt, kjo Ă«shtĂ« njĂ« version i specializuar i asaj qĂ« quhet MachineConfig, e cila pĂ«rfaqĂ«son çdo konfigurim tĂ« shpĂ«rndarĂ« nĂ« makinĂ«n RHEL CoreOS brenda kornizĂ«s sĂ« klasterit OpenShift.

Ky burim i personalizuar, i quajtur ContainerRuntimeConfig, u krijua për të lehtësuar për administratorët e klasterit konfigurimin e CRI-O. Ky është një mjet mjaft i fuqishëm, saqë mund të aplikohet vetëm në disa nodë varësisht nga ndihmesat e MachineConfigPool. Përdoreni këtë si një grup makinash që shërbejnë për të njëjtin qëllim.

Vini re dy rreshtat e fundit, të cilat ne do të ndryshojmë në skedarin /etc/crio/crio.conf. Këto dy rreshta janë shumë të ngjashëm me rreshtat në skedarin crio.conf, këto janë:

vi ContainerRuntimeConfig.yaml

Përfundimi:

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

Tani mund ta dërgojmë këtë skedar në grupin Kubernetes dhe të verifikojmë se ai është në të vërtetë krijuar. Vini re se puna zhvillohet pikërisht ashtu si me çdo burim tjetër të Kubernetes:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Përfundimi:

EMRI              MOSHA
set-log-and-pid   22h

Pasi krijuam ContainerRuntimeConfig, duhet të ndryshojmë një nga MachineConfigPools, për t'i bërë të ditur Kubernetes-it se duam ta aplikojmë këtë konfigurim për një grup të caktuar makinash në grup. Në këtë rast, do të ndryshojmë MachineConfigPool për nodet kryesor:

oc edit MachineConfigPool/master

Output (për qartësi është lënë thelbi i situatës):

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

Në këtë moment, MCO fillon të krijojë një skedar të ri crio.conf për grupin. Gjithashtu, skedari përfundimtar i konfigurimit mund të shikohet përmes API-së Kubernetes. Mbani mend, ContainerRuntimeConfig është thjesht një version i specializuar i MachineConfig, prandaj mund ta shohim rezultatin duke e shikuar rreshtat e nevojshëm në MachineConfigs:

oc get MachineConfigs | grep rendered

Përfundimi:

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

Vini re se skedari i marrë i konfigurimeve për nodet kryesor doli të jetë një version më i ri se konfigurimet fillestare. Për ta parë, ekzekutoni komandën e mëposhtme. Dhe të theksojmë se ndoshta ky është një nga skriptet më të mira të një rreshti në historinë e Kubernetes:

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

Përfundimi:

pids_limit = 2048

Tani le të sigurohemi se konfigurimi është aplikuar në të gjitha nodet kryesor. Së pari, le të marrë listën e nodëve në grup:

oc get node | grep master

Output:

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

Tani le të shohim skedarin e instaluar. Ju do të shihni se skedari është përditësuar me vlerat e reja të drejtorive pid dhe debug që kemi specifikuar në burimin ContainerRuntimeConfig. Eleganca vetë:

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

Përfundimi:

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

Të gjitha këto ndryshime në klaster janë bërë pa nisur SSH. Të gjitha punët janë kryer duke iu drejtuar master-nodit të Kuberentes. Kjo do të thotë se këto parametra të rinj janë konfiguruar vetëm në master-nodet. Nodet punuese nuk janë ndryshuar, çka tregon përfitimet e metodologjisë Kubernetes me përdorimin e stanjave të caktuara dhe të aktualizuara lidhur me hostet e konteinerëve dhe motorët e konteinerëve me elementë të ndërrueshëm.

Shembulli i mĂ«sipĂ«rm tregon mundĂ«sinĂ« e bĂ«rjes sĂ« ndryshimeve nĂ« njĂ« klaster tĂ« vogĂ«l OpenShift Container Platform 4 me tre nodet punuese ose nĂ« njĂ« klaster tĂ« madh prodhimi me 3000 nodet. NĂ« çdo rast, volumi i punĂ«s do tĂ« jetĂ« i njĂ«jtĂ« – dhe shumĂ« i vogĂ«l – mjafton tĂ« konfiguroni skedarin ContainerRuntimeConfig dhe tĂ« ndryshoni njĂ« etiketĂ« (label) nĂ« MachineConfigPool. Dhe ju mund ta bĂ«ni kĂ«tĂ« me çdo version tĂ« platformĂ«s Kubernetes OpenShift Container Platform 4.X gjatĂ« tĂ«rĂ« ciklit tĂ« saj tĂ« jetĂ«s.

Shpesh herë kompanitë teknologjike zhvillohen kaq shpejt saqë ne nuk jemi në gjendje të shpjegojmë pse zgjedhim teknologji të caktuara për komponentët bazë. Motorët e konteinerëve historikisht kanë qenë komponenti me të cilin përdoruesit interaktojnë drejtpërdrejt. Duke qenë se popullariteti i konteinerëve natyrisht ka filluar me shfaqjen e motorëve të konteinerëve, përdoruesit shpesh shfaqin interes për ta. Kjo është edhe një arsye tjetër pse Red Hat zgjodhi CRI-O. Konteinerët po evoluojnë, dhe sot vëmendja kryesore është për orkestrimin, dhe ne arritëm në përfundimin se CRI-O ofron përvojën më të mirë kur punohet me OpenShift 4.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster