Container sa conveyor: Ang CRI-O karon default sa OpenShift Container Platform 4

Platform Platform sa Red Hat OpenShift Container 4 nagtugot kanimo sa pagpahapsay sa paglalang mga host alang sa pag-deploy sa mga sudlanan, lakip sa imprastraktura sa mga cloud service providers, sa virtualization platform o sa bare-metal system. Aron makamugna og tinuod nga cloud-based nga plataporma, kinahanglan namong higpitan ang pagkontrolar sa tanang elemento nga gigamit ug sa ingon madugangan ang kasaligan sa usa ka komplikadong proseso sa automation.

Container sa conveyor: Ang CRI-O karon default sa OpenShift Container Platform 4

Ang klaro nga solusyon mao ang paggamit sa Red Hat Enterprise Linux CoreOS (usa ka variant sa Red Hat Enterprise Linux) ug CRI-O isip standard, ug ania ang hinungdan...

Tungod kay ang hilisgutan sa paglayag maayo kaayo alang sa pagpangita og mga analohiya kung gipatin-aw ang buhat sa Kubernetes ug mga sudlanan, sulayan naton nga hisgutan ang mga problema sa negosyo nga gisulbad sa CoreOS ug CRI-O, gamit ang usa ka pananglitan. Ang mga imbensyon ni Brunel alang sa paghimo sa mga rigging block. Niadtong 1803, si Marc Brunel gitahasan sa paghimo og 100 ka rigging blocks alang sa mga panginahanglan sa nagkadako nga British navy. Ang rigging block usa ka matang sa rigging nga gigamit sa pagtaod sa mga pisi sa mga layag. Hangtud sa sinugdanan sa ika-19 nga siglo, kini nga mga bloke gihimo pinaagi sa kamot, apan si Brunel nakahimo sa pag-automate sa produksyon ug nagsugod sa paghimo og standardized nga mga bloke gamit ang mga himan sa makina. Ang pag-automate niini nga proseso nagpasabot nga ang resulta nga mga bloke managsama ra, daling mapulihan kung mabuak, ug mahimo nga daghang gidaghanon.

Karon hunahunaa kung kinahanglan nga buhaton ni Brunel kini nga trabaho alang sa 20 nga lainlaing mga modelo sa barko (mga bersyon sa Kubernetes) ug alang sa lima ka lainlaing mga planeta nga adunay hingpit nga lahi nga sulog sa dagat ug hangin (mga taghatag sa panganod). Dugang pa, gikinahanglan nga ang tanan nga mga barko (OpenShift clusters), bisan unsa pa ang mga planeta diin ang nabigasyon gihimo, gikan sa punto sa panglantaw sa mga kapitan (mga operator nga nagdumala sa operasyon sa mga clusters) molihok sa sama nga. Aron mapadayon ang analogy sa maritime, ang mga kapitan sa barko wala gyud magtagad kung unsang klase nga rigging blocks (CRI-O) ang gigamit sa ilang mga barko - ang panguna nga butang alang kanila mao nga kini nga mga bloke lig-on ug kasaligan.

Ang OpenShift 4, isip usa ka cloud platform, nag-atubang sa susama kaayo nga hagit sa negosyo. Ang mga bag-ong node kinahanglan nga himuon sa panahon sa paghimo sa cluster, kung adunay kapakyasan sa usa sa mga node, o kung gi-scale ang cluster. Kung ang usa ka bag-ong node gihimo ug gisugdan, ang mga kritikal nga sangkap sa host, lakip ang CRI-O, kinahanglan nga ma-configure sumala niana. Sama sa bisan unsang ubang produksiyon, ang "hilaw nga materyales" kinahanglan nga ihatag sa sinugdanan. Sa kaso sa mga barko, ang hilaw nga materyales kay metal ug kahoy. Bisan pa, sa kaso sa paghimo og host alang sa pag-deploy sa mga sudlanan sa usa ka OpenShift 4 cluster, kinahanglan nimo nga adunay mga file sa pag-configure ug mga server nga gihatag sa API ingon input. Ang OpenShift unya maghatag sa gikinahanglan nga lebel sa automation sa tibuok tibuok nga siklo sa kinabuhi, nga nagtanyag sa gikinahanglan nga suporta sa produkto ngadto sa mga end user ug sa ingon makabawi sa puhunan sa plataporma.

Ang OpenShift 4 gimugna sa paagi nga makahatag ug abilidad sa sayon ​​nga pag-update sa sistema sa tibuok tibuok kinabuhi sa plataporma (alang sa mga bersyon 4.X) para sa tanang dagkong cloud computing providers, virtualization platform ug bisan sa hubo nga metal nga mga sistema. Aron mahimo kini, ang mga node kinahanglan nga himuon pinasukad sa mga mabag-o nga elemento. Kung ang usa ka cluster nanginahanglan usa ka bag-ong bersyon sa Kubernetes, makadawat usab kini nga katumbas nga bersyon sa CRI-O sa CoreOS. Tungod kay ang bersyon sa CRI-O direkta nga gihigot sa Kubernetes, labi nga gipasimple niini ang bisan unsang mga permutasyon alang sa pagsulay, pag-troubleshoot, o mga katuyoan sa pagsuporta. Dugang pa, kini nga pamaagi nagpamenos sa mga gasto alang sa mga end user ug Red Hat.

Kini usa ka sukaranan nga bag-ong paagi sa paghunahuna bahin sa mga pungpong sa Kubernetes ug nagbutang sa pundasyon sa pagplano sa pipila ka mapuslanon ug makapadani nga bag-ong mga bahin. Ang CRI-O (Container Runtime Interface - Open Container Initiative, pinamubo nga CRI-OCI) nahimo nga labing malampuson nga pagpili alang sa daghang paghimo sa mga node nga kinahanglan aron magamit sa OpenShift. Ang CRI-O mopuli sa kanhi gigamit nga Docker engine, nga nagtanyag sa mga tiggamit sa OpenShift ekonomikanhon, lig-on, yano ug makalaay - oo, husto ka - usa ka makalaay nga makina sa sudlanan nga gimugna alang sa pagtrabaho kauban ang Kubernetes.

Ang kalibutan sa bukas nga mga sudlanan

Ang kalibutan naglihok padulong sa bukas nga mga sudlanan sa dugay nga panahon. Sa Kubernetes man, o sa ubos nga lebel, pagpalambo sa mga sumbanan sa sudlanan nagresulta sa usa ka ekosistema sa kabag-ohan sa matag lebel.

Nagsugod ang tanan sa pagmugna sa Open Containers Initiative sa Hunyo 2015. Niining sayo nga yugto sa trabaho, ang mga detalye sa sulud naporma hulagway ΠΈ runtime nga palibot. Gisiguro niini nga ang mga himan makagamit sa usa ka sumbanan mga hulagway sa sudlanan ug usa ka hiniusa nga pormat alang sa pagtrabaho uban kanila. Ang mga detalye gidugang sa ulahi pag-apod-apod, nga nagtugot sa mga tiggamit sa dali nga pagpaambit mga hulagway sa sudlanan.

Ang komunidad sa Kubernetes unya nakahimo og usa ka sumbanan alang sa usa ka pluggable interface, nga gitawag Container Runtime Interface (CRI). Salamat niini, ang mga tiggamit sa Kubernetes nakahimo sa pagkonektar sa lainlaing mga makina aron magtrabaho sa mga sudlanan dugang sa Docker.

Ang mga inhenyero sa Red Hat ug Google nakakita sa panginahanglan sa merkado alang sa usa ka container engine nga makadawat sa mga hangyo sa Kubelet sa CRI protocol ug gipaila ang mga sudlanan nga nahiuyon sa mga detalye sa OCI nga gihisgutan sa ibabaw. Busa Ang OCID nagpakita. Apan pasayloa ako, dili ba giingon namon nga kini nga materyal ipahinungod sa CRI-O? Ang tinuod mao kini, uban sa pagpagawas bersyon 1.0 ang proyekto giilisan og CRI-O.

Hulagway: kinse.

Container sa conveyor: Ang CRI-O karon default sa OpenShift Container Platform 4

Kabag-ohan sa CRI-O ug CoreOS

Sa paglunsad sa OpenShift 4 nga plataporma, kini nausab makina sa sudlanan, gigamit sa default sa plataporma, ug ang Docker gipulihan sa CRI-O, nga nagtanyag sa usa ka epektibo nga gasto, lig-on, yano ug makalaay nga palibot alang sa pagpadagan sa usa ka sudlanan nga nag-uswag nga susama sa Kubernetes. Gipasimple kaayo niini ang suporta ug pag-configure sa cluster. Ang pag-configure sa container engine ug host, ingon man ang ilang pagdumala, mahimong awtomatiko sa sulod sa OpenShift 4.

Teka, unsaon ni?

Husto kana, sa pag-abut sa OpenShift 4, wala na kinahanglana nga magkonektar sa indibidwal nga mga host ug mag-install sa usa ka container engine, i-configure ang pagtipig, i-configure ang mga search server o i-configure ang usa ka network. Ang OpenShift 4 nga plataporma hingpit nga gidesinyo pag-usab aron magamit ang Framework sa Operator dili lamang sa mga termino sa mga aplikasyon sa end-user, apan usab sa mga termino sa sukaranan nga mga operasyon sa lebel sa platform sama sa pag-deploy sa mga imahe, pag-configure sa sistema, o pag-install sa mga update.

Kanunay nga gitugotan sa Kubernetes ang mga tiggamit sa pagdumala sa mga aplikasyon pinaagi sa pagtino sa gusto nga kahimtang ug paggamit mga tigkontrol, aron maseguro nga ang aktuwal nga estado mohaum sa target nga estado kutob sa mahimo. Kini target nga estado ug aktuwal nga pamaagi sa estado nagbukas sa daghang mga oportunidad gikan sa usa ka pag-uswag ug panan-aw sa operasyon. Ang mga developers mahimong maghubit sa gikinahanglan nga estado pinaagi sa ipasa kini ngadto sa operator sa porma sa YAML o JSON nga file, ug dayon ang operator makahimo sa gikinahanglan nga aplikasyon nga pananglitan sa produksyon nga palibot, ug ang operating nga kahimtang niini nga pananglitan hingpit nga katumbas sa gitakda.

Pinaagi sa paggamit sa mga Operator sa plataporma, ang OpenShift 4 nagdala niining bag-ong paradigm (gamit ang konsepto sa set ug aktwal nga estado) sa pagdumala sa RHEL CoreOS ug CRI-O. Ang mga buluhaton sa pag-configure ug pagdumala sa mga bersyon sa operating system ug container engine awtomatiko gamit ang gitawag nga Machine Config Operator (MCO). Gipasimple kaayo sa MCO ang trabaho sa tagdumala sa cluster, nga nag-automate sa kataposang mga yugto sa pag-instalar, ingon man ang sunod-sunod nga mga operasyon human sa pag-instalar (duha ka adlaw nga operasyon). Kining tanan naghimo sa OpenShift 4 nga usa ka tinuod nga plataporma sa panganod. Atong hisgotan kini sa ulahi.

Nagdagan nga mga sudlanan

Ang mga tiggamit adunay oportunidad sa paggamit sa CRI-O nga makina sa OpenShift nga plataporma sukad sa bersyon 3.7 sa Tech Preview status ug gikan sa bersyon 3.9 sa Generally Available status (karon gisuportahan). Dugang pa, ang Red Hat kaylap nga naggamit CRI-O alang sa pagpadagan sa mga buluhaton sa produksiyon sa OpenShift Online sukad sa bersyon 3.10. Kining tanan nagtugot sa team nga nagtrabaho sa CRI-O nga makaangkon og halapad nga kasinatian sa mass launching nga mga sudlanan sa dagkong Kubernetes clusters. Para makakuha ug batakang pagsabot kung giunsa paggamit ni Kubernetes ang CRI-O, atong tan-awon ang mosunod nga ilustrasyon, nga nagpakita kon sa unsang paagi naglihok ang arkitektura.

bugas. 2. Giunsa pagtrabaho ang mga sudlanan sa usa ka cluster sa Kubernetes

Container sa conveyor: Ang CRI-O karon default sa OpenShift Container Platform 4

Gipasimple sa CRI-O ang paghimo sa bag-ong mga host sa sudlanan pinaagi sa pag-synchronize sa tibuuk nga lebel sa pagsugod sa bag-ong mga node, ug kung gipagawas ang mga bag-ong bersyon sa platform sa OpenShift. Ang pagbag-o sa tibuok plataporma nagtugot sa mga transactional updates/rollbacks, ug makapugong usab sa mga deadlock sa mga dependency tali sa container tail core, container engine, nodes (Kubelets) ug sa Kubernetes Master node. Pinaagi sa sentral nga pagdumala sa tanan nga mga sangkap sa plataporma, nga adunay kontrol ug pag-bersyon, kanunay adunay klaro nga agianan gikan sa estado A hangtod sa estado B. Gipasimple niini ang proseso sa pag-update, gipaayo ang seguridad, gipauswag ang pagtaho sa pasundayag, ug gitabangan nga makunhuran ang gasto sa mga update ug pag-install sa mga bag-ong bersyon .

Pagpakita sa gahum sa mga elemento sa pagpuli

Sama sa gihisgutan sa sayo pa, ang paggamit sa Machine Config Operator aron pagdumala sa container host ug container engine sa OpenShift 4 naghatag og bag-ong lebel sa automation nga dili mahimo kaniadto sa Kubernetes platform. Aron ipakita ang bag-ong mga bahin, among ipakita kung giunsa nimo paghimo ang mga pagbag-o sa crio.conf file. Aron malikayan nga malibog sa terminolohiya, sulayi nga ipunting ang mga resulta.

Una, maghimo ta sa gitawag nga container runtime configuration - Container Runtime Config. Hunahunaa kini isip usa ka kapanguhaan sa Kubernetes nga nagrepresentar sa configuration alang sa CRI-O. Sa tinuud, kini usa ka espesyal nga bersyon sa usa ka butang nga gitawag nga MachineConfig, nga bisan unsang pagsumpo nga gi-deploy sa usa ka makina sa RHEL CoreOS isip bahin sa usa ka cluster sa OpenShift.

Kining custom nga kapanguhaan, nga gitawag og ContainerRuntimeConfig, gimugna aron mas sayon ​​sa mga cluster administrator ang pag-configure sa CRI-O. Kini nga himan adunay igo nga gahum nga kini magamit lamang sa pipila ka mga node depende sa mga setting sa MachineConfigPool. Hunahunaa kini isip usa ka grupo sa mga makina nga nagsilbi sa samang katuyoan.

Matikdi ang katapusang duha ka linya nga atong usbon sa /etc/crio/crio.conf file. Kining duha ka linya susama kaayo sa mga linya sa crio.conf file, sila mao ang:

vi ContainerRuntimeConfig.yaml

Panapos:

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

Karon atong iduso kini nga file ngadto sa Kubernetes cluster ug susihon nga kini tinuod nga gibuhat. Palihug timan-i nga ang operasyon parehas ra sa ubang mga kapanguhaan sa Kubernetes:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Panapos:

NAME              AGE
set-log-and-pid   22h

Sa dihang nahimo na namo ang ContainerRuntimeConfig, kinahanglan namong usbon ang usa sa MachineConfigPools aron magsenyas sa mga Kubernetes nga gusto namong i-apply kini nga configuration sa usa ka partikular nga grupo sa mga makina sa cluster. Sa kini nga kaso usbon namon ang MachineConfigPool alang sa mga master node:

oc edit MachineConfigPool/master

Konklusyon (alang sa katin-awan, ang nag-unang esensya nahabilin):

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

Niini nga punto, ang MCO nagsugod sa paghimo og bag-ong crio.conf file para sa cluster. Sa kini nga kaso, ang hingpit nga nahuman nga configuration file mahimong tan-awon gamit ang Kubernetes API. Hinumdomi, ang ContainerRuntimeConfig usa lang ka espesyal nga bersyon sa MachineConfig, aron makita nato ang resulta pinaagi sa pagtan-aw sa may kalabutan nga mga linya sa MachineConfigs:

oc get MachineConfigs | grep rendered

Panapos:

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

Palihug timan-i nga ang resulta nga configuration file alang sa master nodes kay mas bag-o nga bersyon kay sa orihinal nga configurations. Aron matan-aw kini, pagdagan ang mosunud nga mando. Sa paglabay, among namatikdan nga kini tingali usa sa labing maayo nga one-liner sa kasaysayan sa 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

Panapos:

pids_limit = 2048

Karon atong siguroon nga ang configuration kay na-apply sa tanang master nodes. Una makakuha kami usa ka lista sa mga node sa cluster:

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

Karon atong tan-awon ang na-install nga file. Imong makita nga ang file na-update sa bag-ong mga bili alang sa pid ug debug nga mga direktiba nga among gipiho sa ContainerRuntimeConfig nga kapanguhaan. Elegance mismo:

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

Panapos:

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

Ang tanan nga kini nga mga pagbag-o sa cluster gihimo nga wala bisan sa pagpadagan sa SSH. Ang tanan nga trabaho nahimo pinaagi sa pag-access sa Kuberentes master node. Kana mao, kining bag-ong mga parameter gi-configure lamang sa mga master node. Ang mga node sa mamumuo wala mausab, nga nagpakita sa mga benepisyo sa pamaagi sa Kubernetes sa paggamit sa espesipiko ug aktuwal nga mga estado nga may kalabutan sa mga container host ug mga container engine nga adunay mga elemento nga mabaylo.

Ang pananglitan sa ibabaw nagpakita sa abilidad sa paghimo og mga pagbag-o sa usa ka gamay nga OpenShift Container Platform 4 cluster nga adunay tulo ka production nodes o usa ka dako nga production cluster nga adunay 3000 nodes. Sa bisan unsang kaso, ang gidaghanon sa trabaho managsama - ug gamay kaayo - i-configure lang ang ContainerRuntimeConfig file, ug usba ang usa ka label sa MachineConfigPool. Ug mahimo nimo kini sa bisan unsang bersyon sa OpenShift Container Platform 4.X nga nagpadagan sa Kubernetes sa tibuok kinabuhi niini.

Kasagaran ang mga kompanya sa teknolohiya dali nga nagbag-o nga dili namon mapatin-aw kung ngano nga gipili namon ang pipila nga mga teknolohiya alang sa nagpahiping mga sangkap. Ang mga makina sa sulud sa kasaysayan mao ang sangkap nga direkta nga nakig-uban sa mga tiggamit. Tungod kay ang pagkapopular sa mga sudlanan natural nga nagsugod sa pag-abut sa mga makina sa sulud, ang mga tiggamit kanunay nga nagpakita og interes niini. Kini ang laing rason nganong gipili sa Red Hat ang CRI-O. Ang mga sudlanan nag-uswag uban ang pokus karon sa orkestra, ug among nahibal-an nga ang CRI-O naghatag labing kaayo nga kasinatian kung nagtrabaho kauban ang OpenShift 4.

Source: www.habr.com

Idugang sa usa ka comment