Veso a CONVEYOR: CRI-O se kounye a default nan OpenShift Container Platform 4

Platfòm Red Hat OpenShift Container platfòm 4 pèmèt ou rasyonalize kreyasyon an lame pou deplwaye kontenè, ki gen ladan nan enfrastrikti nan founisè sèvis nwaj yo, sou platfòm Virtualization oswa nan sistèm fè-metal. Pou kreye yon platfòm ki baze sou nwaj vrèman, nou te oblije pran kontwòl strik sou tout eleman yo itilize e konsa ogmante fyab nan yon pwosesis automatisation konplèks.

Veso a CONVEYOR: CRI-O se kounye a default nan OpenShift Container Platform 4

Solisyon evidan an se te sèvi ak Red Hat Enterprise Linux CoreOS (yon variant de Red Hat Enterprise Linux) ak CRI-O kòm estanda a, e isit la se poukisa ...

Piske sijè navige a se yon bon bagay pou jwenn analoji lè w ap eksplike travay Kubernetes ak resipyan yo, ann eseye pale sou pwoblèm biznis CoreOS ak CRI-O rezoud, lè l sèvi avèk yon egzanp. Envansyon Brunel pou pwodiksyon blòk gréement. An 1803, Marc Brunel te responsab pou l te pwodui 100 blòk gréement pou bezwen marin Britanik la k ap grandi. Yon blòk gréement se yon kalite gréement ki itilize pou kole kòd pou vwal. Jiska kòmansman 19yèm syèk la, blòk sa yo te fèt alamen, men Brunel te jere otomatize pwodiksyon e li te kòmanse pwodui blòk estanda ak zouti machin. Otomatik nan pwosesis sa a vle di ke blòk yo ki kapab lakòz yo te esansyèlman idantik, yo ka fasil ranplase si yo kase, epi yo ka pwodwi nan gwo kantite.

Koulye a, imajine si Brunel te oblije fè travay sa a pou 20 modèl bato diferan (vèsyon Kubernetes) ak pou senk planèt diferan ak kouran lanmè ak van konplètman diferan (founisè nwaj). Anplis de sa, li te egzije ke tout bato (OpenShift grap), kèlkeswa planèt yo sou ki navigasyon yo te pote soti, soti nan pwen de vi nan kòmandan yo (operatè ki jere operasyon an nan grap yo) konpòte menm bagay la. Pou kontinye analoji maritim la, kòmandan bato yo pa pran swen ditou ki kalite blòk gréement (CRI-O) yo itilize sou bato yo - bagay prensipal la pou yo se ke blòk sa yo fò ak serye.

OpenShift 4, kòm yon platfòm nwaj, fè fas a yon defi biznis ki sanble anpil. Nouvo nœuds yo dwe kreye nan moman kreyasyon gwoup la, nan evènman an nan yon echèk nan youn nan nœuds yo, oswa lè dekale gwoup la. Lè yon nouvo ne kreye ak inisyalize, eleman lame kritik, ki gen ladan CRI-O, yo dwe konfigirasyon kòmsadwa. Kòm nan nenpòt lòt pwodiksyon, "matyè premyè" yo dwe apwovizyone nan kòmansman an. Nan ka bato, matyè premyè yo se metal ak bwa. Sepandan, nan ka kreye yon lame pou deplwaye resipyan nan yon gwoup OpenShift 4, ou bezwen gen fichye konfigirasyon ak API-bay sèvè kòm opinyon. Lè sa a, OpenShift pral bay nivo automatisation ki nesesè yo pandan tout sik lavi a, ofri sipò pwodwi ki nesesè pou itilizatè final yo e konsa rekipere envestisman an nan platfòm la.

OpenShift 4 te kreye yon fason pou bay kapasite pou yon fason fasil mete ajou sistèm nan pandan tout sik lavi platfòm la (pou vèsyon 4.X) pou tout gwo founisè cloud computing, platfòm Virtualization e menm sistèm metal vid. Pou fè sa, nœuds yo dwe kreye sou baz eleman entèrchanjabl. Lè yon gwoup mande pou yon nouvo vèsyon Kubernetes, li resevwa tou vèsyon korespondan CRI-O sou CoreOS. Piske vèsyon CRI-O a mare dirèkteman nan Kubernetes, sa a senplifye anpil nenpòt pèmitasyon pou tès, depanaj, oswa rezon sipò. Anplis de sa, apwòch sa a diminye depans pou itilizatè final yo ak Red Hat.

Sa a se yon fason fondamantalman nouvo nan panse sou grap Kubernetes epi li poze fondasyon pou planifye kèk nouvo karakteristik trè itil ak konvenkan. CRI-O (Container Runtime Interface - Open Container Initiative, abreje CRI-OCI) te tounen chwa ki gen plis siksè pou kreyasyon an mas nan nœuds ki nesesè pou travay ak OpenShift. CRI-O pral ranplase motè Docker ki te itilize anvan an, ki ofri itilizatè OpenShift yo ekonomik, ki estab, senp ak raz - Wi, ou tande byen - yon motè veso raz ki te kreye espesyalman pou travay ak Kubernetes.

Mond lan nan resipyan louvri

Mond lan ap deplase nan direksyon kontenè ki louvri pou yon tan long. Kit nan Kubernetes, oswa nan nivo pi ba yo, devlopman estanda veso yo rezilta nan yon ekosistèm nan inovasyon nan chak nivo.

Tout bagay te kòmanse ak kreyasyon Open Containers Initiative nan mwa jen 2015. Nan etap sa a byen bonè nan travay, espesifikasyon veso yo te fòme imaj и anviwònman ègzekutabl. Sa a te asire ke zouti yo te kapab itilize yon sèl estanda imaj veso yo ak yon fòma inifye pou travay avèk yo. Espesifikasyon yo te ajoute pita distribisyon, ki pèmèt itilizatè yo fasil pataje imaj veso yo.

Kominote Kubernetes a Lè sa a, devlope yon estanda sèl pou yon koòdone branche, ki rele Container Runtime Interface (CRI). Mèsi a sa a, itilizatè Kubernetes yo te kapab konekte plizyè motè pou travay ak resipyan anplis Docker.

Enjenyè nan Red Hat ak Google te wè yon bezwen mache pou yon motè veso ki ta ka aksepte demann Kubelet sou pwotokòl CRI a epi prezante resipyan ki te konpatib ak espesifikasyon OCI mansyone pi wo a. Se konsa OCID parèt. Men, eskize m, èske nou pa te di ke materyèl sa a ta pral dedye a CRI-O? Aktyèlman li se, jis ak liberasyon an vèsyon 1.0 pwojè a te chanje non CRI-O.

Fig. 1.

Veso a CONVEYOR: CRI-O se kounye a default nan OpenShift Container Platform 4

Inovasyon ak CRI-O ak CoreOS

Avèk lansman platfòm OpenShift 4 la, li te chanje motè veso, itilize pa default nan platfòm la, ak Docker te ranplase pa CRI-O, ofri yon anviwònman pri-efikas, ki estab, senp ak raz pou kouri yon veso ki devlope nan paralèl ak Kubernetes. Sa a anpil senplifye sipò ak konfigirasyon gwoup. Konfigirasyon motè veso a ak lame a, ansanm ak jesyon yo, vin otomatik nan OpenShift 4.

Tann, kijan sa ye?

Se vre, ak avènement OpenShift 4, pa gen okenn nesesite ankò pou konekte ak moun ki gen tout pouvwa a epi enstale yon motè veso, konfigirasyon depo, konfigirasyon sèvè rechèch oswa konfigirasyon yon rezo. Platfòm OpenShift 4 la te konplètman reamenaje pou itilize Operatè chapant pa sèlman an tèm de aplikasyon pou itilizatè fen yo, men tou an tèm de operasyon debaz nan nivo platfòm tankou deplwaye imaj, konfigirasyon sistèm nan, oswa enstale mizajou.

Kubernetes te toujou pèmèt itilizatè yo jere aplikasyon lè yo defini eta a vle ak lè l sèvi avèk contrôleur, pou asire ke eta aktyèl la matche ak eta sib la pi byen ke posib. Sa a eta sib ak apwòch eta aktyèl la ouvè gwo opòtinite nan tou de yon devlopman ak operasyon pèspektiv. Devlopè ka defini eta a mande pa pase li operatè a nan fòm lan nan yon YAML oswa JSON dosye, ak Lè sa a, operatè a ka kreye egzanp aplikasyon ki nesesè nan anviwònman pwodiksyon an, ak eta a opere nan egzanp sa a pral konplètman koresponn ak youn nan espesifye.

Lè l sèvi avèk Operatè nan platfòm la, OpenShift 4 pote nouvo paradigm sa a (lè l sèvi avèk konsèp nan seri ak eta aktyèl) nan jesyon RHEL CoreOS ak CRI-O. Travay yo nan konfigirasyon ak jere vèsyon nan sistèm nan fonksyone ak motè veso yo otomatize lè l sèvi avèk sa yo rele an. Operatè konfigirasyon machin (MCO). MCO anpil senplifye travay administratè gwoup la, esansyèlman otomatize dènye etap enstalasyon yo, osi byen ke operasyon apre enstalasyon yo (de jou operasyon). Tout sa fè OpenShift 4 yon vrè platfòm nwaj. Nou pral antre nan sa a yon ti kras pita.

Kouri kontenè

Itilizatè yo te gen opòtinite pou yo sèvi ak motè CRI-O nan platfòm OpenShift depi vèsyon 3.7 nan estati Tech Preview ak soti nan vèsyon 3.9 nan estati Disponib Jeneralman (aktyèlman sipòte). Anplis de sa, Red Hat twouve itilize CRI-O pou kouri pwodiksyon travay nan OpenShift Online depi vèsyon 3.10. Tout bagay sa yo te pèmèt ekip k ap travay sou CRI-O genyen anpil eksperyans nan lanse kontenè an mas sou gwo grap Kubernetes. Pou jwenn yon konpreyansyon debaz sou fason Kubernetes sèvi ak CRI-O, ann gade nan ilistrasyon sa a, ki montre kouman achitekti a fonksyone.

Diri. 2. Ki jan veso yo travay nan yon gwoup Kubernetes

Veso a CONVEYOR: CRI-O se kounye a default nan OpenShift Container Platform 4

CRI-O senplifye kreyasyon nouvo lame veso pa senkronize tout nivo siperyè lè inisyalize nouvo nœuds, ak lè lage nouvo vèsyon platfòm OpenShift la. Revizyon nan tout platfòm la pèmèt pou mizajou tranzaksyon / rollbacks, epi tou li anpeche enpas nan depandans ant nwayo a ke veso, motè veso, nœuds (Kubelets) ak ne Kubernetes Mèt la. Lè yo jere tout konpozan platfòm nan santralman, ak kontwòl ak vèsyon, toujou gen yon chemen klè soti nan eta A rive nan eta B. Sa senplifye pwosesis aktyalizasyon a, amelyore sekirite, amelyore rapò pèfòmans, epi ede redwi pri mizajou ak enstalasyon nouvo vèsyon. .

Demontre pouvwa eleman ranplasman yo

Kòm mansyone pi bonè, lè l sèvi avèk machin konfigirasyon operatè a pou jere lame veso a ak motè veso nan OpenShift 4 bay yon nouvo nivo automatisation ki pa t posib anvan sou platfòm Kubernetes la. Pou demontre nouvo karakteristik yo, nou pral montre kijan ou ka fè chanjman nan fichye crio.conf la. Pou evite konfonn nan tèminoloji, eseye konsantre sou rezilta yo.

Premyèman, an n kreye sa yo rele yon konfigirasyon ègzekutabl veso - Container Runtime Config. Panse a li kòm yon resous Kubernetes ki reprezante konfigirasyon pou CRI-O. An reyalite, li se yon vèsyon espesyalize nan yon bagay ki rele MachineConfig, ki se nenpòt konfigirasyon ki deplwaye nan yon machin RHEL CoreOS kòm yon pati nan yon gwoup OpenShift.

Resous koutim sa a, ki rele ContainerRuntimeConfig, te kreye pou rann li pi fasil pou administratè gwoup yo konfigirasyon CRI-O. Zouti sa a se ase pwisan ke li ka aplike sèlman nan sèten nœuds depann sou anviwònman yo MachineConfigPool. Panse a li kòm yon gwoup machin ki sèvi menm objektif la.

Remake de dènye liy yo ke nou pral chanje nan /etc/crio/crio.conf dosye a. De liy sa yo sanble anpil ak liy ki nan fichye crio.conf, yo se:

vi ContainerRuntimeConfig.yaml

Konklizyon:

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

Koulye a, ann pouse fichye sa a nan gwoup Kubernetes la epi tcheke li te kreye aktyèlman. Tanpri sonje ke operasyon an se egzakteman menm jan ak nenpòt lòt resous Kubernetes:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Konklizyon:

NAME              AGE
set-log-and-pid   22h

Yon fwa nou te kreye ContainerRuntimeConfig la, nou bezwen modifye youn nan MachineConfigPools yo pou siyal Kubernetes ke nou vle aplike konfigirasyon sa a nan yon gwoup espesifik machin nan gwoup la. Nan ka sa a nou pral chanje MachineConfigPool pou nœuds mèt yo:

oc edit MachineConfigPool/master

Konklizyon (pou klè, sans prensipal la rete):

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

Nan pwen sa a, MCO kòmanse kreye yon nouvo fichye crio.conf pou gwoup la. Nan ka sa a, yo ka wè fichye konfigirasyon an konplètman fini lè l sèvi avèk API Kubernetes la. Sonje byen, ContainerRuntimeConfig se jis yon vèsyon espesyalize nan MachineConfig, pou nou ka wè rezilta a lè nou gade liy ki enpòtan nan MachineConfigs:

oc get MachineConfigs | grep rendered

Konklizyon:

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

Tanpri sonje ke fichye konfigirasyon ki te lakòz pou nœuds mèt yo te yon vèsyon ki pi nouvo pase konfigirasyon orijinal yo. Pou wè li, kouri lòd sa a. An pasan, nou sonje ke sa a se petèt youn nan pi bon yon sèl-revètisman nan istwa a nan 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

Konklizyon:

pids_limit = 2048

Koulye a, kite a asire w ke konfigirasyon an te aplike nan tout nœuds mèt. Premye nou jwenn yon lis nœuds nan gwoup la:

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

Koulye a, kite a gade nan dosye a enstale. Ou pral wè ke dosye a te mete ajou ak nouvo valè yo pou pid ak debug direktiv ke nou espesifye nan resous ContainerRuntimeConfig la. Elegans tèt li:

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

Konklizyon:

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

Tout chanjman sa yo nan gwoup la te fèt san yo pa menm kouri SSH. Tout travay yo te fè lè w gen aksè a ne mèt Kuberentes. Sa vle di, nouvo paramèt sa yo te configuré sèlman sou nœuds mèt. Nœuds travayè yo pa t 'chanje, sa ki montre benefis ki genyen nan metodoloji Kubernetes nan itilize eta espesifye ak aktyèl an relasyon ak lame veso ak motè veso ak eleman ka ranplase.

Egzanp ki anwo a montre kapasite pou fè chanjman nan yon ti gwoup OpenShift Container Platform 4 ki gen twa nœuds pwodiksyon oswa yon gwo gwoup pwodiksyon ki gen 3000 nœuds. Nan nenpòt ka, kantite travay yo pral menm - ak anpil ti - jis konfigirasyon fichye ContainerRuntimeConfig la, epi chanje yon etikèt nan MachineConfigPool. Epi ou ka fè sa ak nenpòt vèsyon OpenShift Container Platform 4.X kouri Kubernetes pandan tout sik lavi li.

Souvan konpayi teknoloji yo evolye tèlman vit ke nou pa kapab eksplike poukisa nou chwazi sèten teknoloji pou eleman ki kache yo. Motè veso yo te istorikman eleman ke itilizatè yo kominike avèk dirèkteman. Depi popilarite resipyan yo te kòmanse natirèlman ak avenman motè veso yo, itilizatè yo souvan montre enterè nan yo. Sa a se yon lòt rezon ki fè Red Hat te chwazi CRI-O. Kontenè yo ap evolye ak konsantre kounye a sou òkestrasyon, e nou te jwenn ke CRI-O bay pi bon eksperyans lè w ap travay ak OpenShift 4.

Sous: www.habr.com

Add nouvo kòmantè