Akpa maka ebufe: CRI-O bụ ihe ndabara na OpenShift Container Platform 4

Platform Uhie okpu OpenShift Container Platform 4 na-enye gị ohere ịmegharị ihe okike ụsụụ ndị agha maka ibunye arịa, gụnyere na akụrụngwa nke ndị na-enye ọrụ ígwé ojii, na nyiwe ihe nhụsianya ma ọ bụ na sistemụ igwe anaghị agba nchara. Iji mepụta ikpo okwu dabere n'igwe ojii, anyị kwesịrị ijikwa nke ọma ihe niile eji eme ihe wee si otú a na-abawanye ntụkwasị obi nke usoro akpaaka dị mgbagwoju anya.

Akpa maka ebufe: CRI-O bụ ihe ndabara na OpenShift Container Platform 4

Ihe ngwọta doro anya bụ iji Red Hat Enterprise Linux CoreOS (ụdị nke Red Hat Enterprise Linux) na CRI-O dị ka ọkọlọtọ, na nke a bụ ihe kpatara ya ...

Ebe ọ bụ na isiokwu nke ịkwọ ụgbọ mmiri dị ezigbo mma maka ịchọta ihe atụ mgbe ị na-akọwa ọrụ Kubernetes na arịa, ka anyị gbalịa ikwu banyere nsogbu azụmahịa nke CoreOS na CRI-O na-edozi, na-eji ihe atụ. Ihe mepụtara Brunel maka mmepụta nke ngọngọ rigging. Na 1803, e nyere Marc Brunel ọrụ ịrụpụta 100 rigging blocks maka mkpa nke ndị agha mmiri Britain na-eto eto. Ngwongwo mgbanaka bụ ụdị mgbanaka nke a na-ejikọta ụdọ na ụgbọ mmiri. Ruo mmalite nke narị afọ nke 19, e ji aka mee ihe mgbochi ndị a, ma Brunel jisiri ike rụọ ọrụ na-emepụta ihe wee malite iji ngwá ọrụ igwe mepụta blọk ọkọlọtọ. Akpaaka nke usoro a pụtara na blọk ndị si na ya pụta bụ otu, enwere ike dochie ya ngwa ngwa ma ọ bụrụ na agbajiri agbaji, ma nwee ike imepụta ya n'ọtụtụ buru ibu.

Ugbu a, were ya ma ọ bụrụ na Brunel ga-arụ ọrụ a maka ụdị ụgbọ mmiri 20 dị iche iche (ụdị Kubernetes) na maka mbara ala ise dị iche iche nwere oke mmiri na ifufe dị iche iche (ndị na-enye igwe ojii). Tụkwasị na nke ahụ, a chọrọ ka ụgbọ mmiri niile (OpenShift ụyọkọ), n'agbanyeghị mbara ala nke a na-eme njem, site n'echiche nke ndị isi (ndị na-arụ ọrụ na-ahụ maka ọrụ nke ụyọkọ) na-eme otu ihe ahụ. Iji gaa n'ihu na ihe atụ nke ụgbọ mmiri, ndị isi ụgbọ mmiri adịghị eche ma ọlị ụdị ihe mgbochi mgbochi (CRI-O) na-eji ụgbọ mmiri ha - ihe bụ isi maka ha bụ na ihe mgbochi ndị a siri ike ma bụrụ ndị a pụrụ ịdabere na ya.

OpenShift 4, dị ka ikpo okwu igwe ojii, na-eche ihe ịma aka azụmaahịa yiri nke ahụ ihu. A ghaghị ịmepụta ọnụ ọnụ ọhụrụ n'oge a na-emepụta ụyọkọ, ma ọ bụrụ na ọdịda dị n'otu n'ime ọnụ ọnụ, ma ọ bụ mgbe a na-eme ka ụyọkọ ahụ. Mgbe emepụtara ọnụ ọhụrụ na ibido, akụrụngwa nnabata dị oke mkpa, gụnyere CRI-O, ga-ahazirịrị ya. Dị ka ọ dị na mmepụta ọ bụla ọzọ, a ghaghị ịnye "ihe ọkụkụ" na mmalite. N'ihe banyere ụgbọ mmiri, ihe ndị a na-emepụta bụ ígwè na osisi. Agbanyeghị, n'ihe gbasara imepụta nnabata maka ibunye arịa na ụyọkọ OpenShift 4, ịkwesịrị ịnwe faịlụ nhazi yana sava API ewepụtara dị ka ntinye. OpenShift ga-enye ọkwa nke akpaaka achọrọ n'oge usoro ndụ niile, na-enye nkwado ngwaahịa dị mkpa iji kwụsị ndị ọrụ wee si otú a na-enwetaghachi ego etinyere na ikpo okwu.

Emepụtara OpenShift 4 n'ụzọ iji nye ikike imelite sistemụ ahụ nke ọma n'oge usoro ndụ nke ikpo okwu niile (maka ụdị 4.X) maka ndị na-eweta igwe igwe ojii niile, nyiwe nke ọma na ọbụna sistemu igwe anaghị akwụ ụgwọ. Iji mee nke a, a ghaghị ịmepụta oghere na ndabere nke ihe ndị na-agbanwe agbanwe. Mgbe ụyọkọ chọrọ ụdị Kubernetes ọhụrụ, ọ na-enwetakwa ụdị CRI-O kwekọrọ na CoreOS. Ebe ọ bụ na ejikọtara ụdị CRI-O ozugbo na Kubernetes, nke a na-eme ka ikike ọ bụla dị mfe maka nnwale, nchọpụta nsogbu, ma ọ bụ nkwado. Tụkwasị na nke a, usoro a na-ebelata ụgwọ maka ndị ọrụ njedebe na Red Hat.

Nke a bụ ụzọ ọhụrụ nke iche echiche gbasara ụyọkọ Kubernetes ma tọọ ntọala maka ịhazi ụfọdụ atụmatụ ọhụrụ bara uru ma dị egwu. CRI-O (Container Runtime Interface - Open Container Initiative, abbreviated CRI-OCI) tụgharịrị bụrụ nhọrọ kacha aga nke ọma maka ịmepụta ọnụ ọnụ nke dị mkpa iji rụọ ọrụ na OpenShift. CRI-O ga-edochi igwe Docker ejiribu, na-enye ndị ọrụ OpenShift akụ na ụba, kwụsiri ike, dị mfe na-agwụ ike - ee, ị nụrụ nke ọma - injin akpa na-agwụ ike emepụtara maka ịrụ ọrụ na Kubernetes.

Ụwa nke oghere ndị mepere emepe

Ụwa na-aga n'ihu ruo ogologo oge na-aga ebe a na-edebe oghere. Ma na Kubernetes, ma ọ bụ na ọkwa dị ala, mmepe nke ụkpụrụ akpa na-ebute usoro gburugburu ebe obibi nke ihe ọhụrụ na ọkwa ọ bụla.

Ihe niile malitere site na ịmepụta Open Containers Initiative na June 2015. N'oge mmalite nke ọrụ a, a na-emepụta nkọwa akpa onyonyo и Oge ojiri gaa gburugburu. Nke a mere ka o doo anya na ngwaọrụ ndị ahụ nwere ike iji otu ọkọlọtọ ihe oyiyi akpa na usoro ejikọtara ọnụ maka ịrụ ọrụ na ha. E mechara tinye nkọwapụta nkesa, na-enye ndị ọrụ ohere ịkekọrịta ngwa ngwa ihe oyiyi akpa.

Ndị obodo Kubernetes wee mepụta otu ọkọlọtọ maka interface pluggable, nke a na-akpọ Ngwa ngwa ngwa ngwa ngwa (CRI). N'ihi nke a, ndị ọrụ Kubernetes nwere ike jikọọ igwe dị iche iche iji rụọ ọrụ na arịa na mgbakwunye na Docker.

Ndị injinia na Red Hat na Google hụrụ mkpa ahịa maka igwe akpa nwere ike ịnakwere arịrịọ Kubelet maka usoro CRI wee webata arịa ndị dabara na nkọwapụta OCI a kpọtụrụ aha n'elu. Ya mere OCID pụtara. Ma gbaghara m, ọ bụ na anyị asịghị na a ga-arara akwụkwọ a nye CRI-O? N'ezie ọ bụ, naanị na ntọhapụ mbipute 1.0 a kpọgharịrị aha ọrụ ahụ CRI-O.

Nyocha: 1.

Akpa maka ebufe: CRI-O bụ ihe ndabara na OpenShift Container Platform 4

Ihe ọhụrụ nwere CRI-O na CoreOS

Site na mmalite nke ikpo okwu OpenShift 4, a gbanwere ya igwe akpa, ejiri ya na ndabara na ikpo okwu, na Docker dochie anya CRI-O, na-enye ebe dị ọnụ ala, kwụsiri ike, dị mfe na nke na-agwụ ike maka ịgba ọsọ nke na-etolite na Kubernetes. Nke a na-eme ka nkwado na nhazi ụyọkọ dị mfe. Nhazi nke injin akpa na onye ọbịa, yana njikwa ha, na-akpaghị aka n'ime OpenShift 4.

Chere, kedu ka ihe a mere?

Nke ahụ ziri ezi, na ọbịbịa nke OpenShift 4, ọ dịghịzi mkpa ijikọ na ndị ọbịa n'otu n'otu ma wụnye engine akpa, hazie nchekwa, hazie sava ọchụchọ ma ọ bụ hazie netwọk. Emezigharịrị ikpo okwu OpenShift 4 ka ọ jiri ya Onye ọrụ Framework ọ bụghị naanị n'ihe gbasara ngwa onye ọrụ njedebe, kamakwa n'ihe gbasara arụmọrụ ọkwa ọkwa dị ka ibuga onyonyo, ịhazi sistemu ma ọ bụ ịwụnye mmelite.

Kubernetes ekwela ka ndị ọrụ jikwaa ngwa site na ịkọwapụta steeti achọrọ yana iji ndị na-achịkwa, iji hụ na steeti ahụ n'ezie dabara na steeti ebumnuche dịka o kwere mee. Nke a lekwasịrị anya steeti na ezigbo steeti ụzọ na-emepe ohere dị ukwuu site na mmepe mmepe na n'ọnọdụ ọrụ. Ndị mmepe nwere ike kọwaa steeti achọrọ site na nyefee ya nye onye na-arụ ọrụ n'ụdị faịlụ YAML ma ọ bụ JSON, mgbe ahụ onye ọrụ ahụ nwere ike ịmepụta ngwa ngwa achọrọ na gburugburu mmepụta, na ọnọdụ ọrụ nke ihe atụ a ga-adaba nke ọma na nke akọwapụtara.

Site n'iji ndị na-arụ ọrụ na ikpo okwu, OpenShift 4 na-eweta paradaịs ọhụrụ a (iji echiche nke setịpụrụ na ezigbo steeti) na njikwa nke RHEL CoreOS na CRI-O. Ọrụ nke ịhazi na ijikwa ụdị sistemụ arụmọrụ yana injin akpa na-akpaghị aka site na iji ihe akpọrọ. Onye ọrụ nhazi igwe (MCO). MCO na-eme ka ọrụ onye nchịkwa ụyọkọ dị mfe nke ukwuu, na-emezigharị usoro ikpeazụ nke nrụnye, yana ọrụ ntinye nrụnye na-esote (ọrụ ụbọchị abụọ). Ihe a niile na-eme OpenShift 4 ka ọ bụrụ ezigbo igwe ojii. Anyị ga-abanye na nke a ntakịrị oge.

Akpa na-agba ọsọ

Ndị ọrụ enweela ohere iji injin CRI-O na ikpo okwu OpenShift kemgbe ụdị 3.7 na ọkwa nlele teknụzụ yana site na ụdị 3.9 na ọnọdụ enwere ike ugbu a (na-akwado ugbu a). Na mgbakwunye, Red Hat na-eji nke ukwuu CRI-O maka ịrụ ọrụ mmepụta ihe na OpenShift Online kemgbe ụdị 3.10. Ihe ndị a niile mere ka ndị otu na-arụ ọrụ na CRI-O nweta ahụmịhe dị ukwuu n'ịkwalite arịa na nnukwu ụyọkọ Kubernetes. Iji nweta nghọta bụ isi banyere ka Kubernetes si eji CRI-O, ka anyị leba anya n'ihe atụ na-esonụ, nke na-egosi ka ụlọ ọrụ si arụ ọrụ.

Osikapa. 2. Otu akpa na-arụ ọrụ na ụyọkọ Kubernetes

Akpa maka ebufe: CRI-O bụ ihe ndabara na OpenShift Container Platform 4

CRI-O na-eme ka imepụta ndị ọbịa ọhụrụ dị mfe site na ịmekọrịta ọkwa niile dị elu mgbe ị na-amalite ọnụ ọhụrụ, yana mgbe ị na-ahapụ ụdị ọhụrụ nke ikpo okwu OpenShift. Ndozigharị nke ikpo okwu dum na-enye ohere maka mmelite azụmahịa / nlọghachi azụ, ma na-egbochikwa nkwụsị azụ na ịdabere n'etiti akpa ọdụ ọdụ, engine akpa, ọnụ (Kubelets) na Kubernetes Master node. Site na ijikwa ihe niile dị n'elu ikpo okwu, na njikwa na nsụgharị, a na-enwekarị ụzọ doro anya site na steeti A ruo steeti B. Nke a na-eme ka usoro mmelite dị mfe, na-eme ka nchekwa dịkwuo mfe, na-eme ka mkpesa arụmọrụ dịkwuo mma, ma na-enyere aka belata ọnụ ahịa mmelite na nrụnye nke nsụgharị ọhụrụ. .

Na-egosipụta ike nke ihe nnọchi anya

Dị ka e kwuru na mbụ, iji Machine Config Operator jikwaa onye na-elekọta akpa na akpa akpa na OpenShift 4 na-enye ọkwa ọhụrụ nke akpaaka nke na-agaghị ekwe omume na mbụ n'elu ikpo okwu Kubernetes. Iji gosi njirimara ọhụrụ, anyị ga-egosi otu ị nwere ike isi mee mgbanwe na faịlụ crio.conf. Iji zere inwe mgbagwoju anya site na nkọwa okwu, gbalịa ilekwasị anya na nsonaazụ ya.

Nke mbụ, ka anyị mepụta ihe a na-akpọ nhazi oge ịgba ọsọ - Container Runtime Config. Chee ya dị ka akụrụngwa Kubernetes nke na-anọchite anya nhazi maka CRI-O. N'ezie, ọ bụ ụdị pụrụ iche nke ihe akpọrọ MachineConfig, nke bụ nhazi ọ bụla nke etinyere na igwe RHEL CoreOS dịka akụkụ nke ụyọkọ OpenShift.

E mepụtara akụrụngwa omenala a, nke a na-akpọ ContainerRuntimeConfig, iji mee ka ọ dịrị ndị nchịkwa ụyọkọ mfe ịhazi CRI-O. Ngwá ọrụ a dị ike nke ukwuu na enwere ike itinye ya na ụfọdụ ọnụ ọnụ dabere na ntọala MachineConfigPool. Were ya dị ka igwe igwe na-arụ otu nzube ahụ.

Rịba ama ahịrị abụọ ikpeazụ anyị ga-agbanwe na faịlụ /etc/crio/crio.conf. Ahịrị abụọ a yiri ahịrị ndị dị na faịlụ crio.conf, ha bụ:

vi ContainerRuntimeConfig.yaml

Mmechi:

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

Ugbu a, ka anyị kwanye faịlụ a na ụyọkọ Kubernetes wee lelee na emepụtara ya n'ezie. Biko mara na ọrụ a bụ otu ihe yana akụrụngwa Kubernetes ọ bụla:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Mmechi:

NAME              AGE
set-log-and-pid   22h

Ozugbo anyị mepụtara ContainerRuntimeConfig, anyị kwesịrị ịgbanwe otu n'ime MachineConfigPools iji gosi Kubernetes na anyị chọrọ itinye nhazi a na otu igwe dị na ụyọkọ ahụ. N'okwu a, anyị ga-agbanwe MachineConfigPool maka ọnụ ọgụgụ isi:

oc edit MachineConfigPool/master

Nkwubi okwu (maka idoanya, isi ihe fọdụrụ):

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

N'oge a, MCO na-amalite ịmepụta faịlụ crio.conf ọhụrụ maka ụyọkọ ahụ. N'okwu a, enwere ike ịlele faịlụ nhazi nke emechachara site na iji Kubernetes API. Cheta, ContainerRuntimeConfig bụ naanị ụdị MachineConfig pụrụ iche, yabụ anyị nwere ike ịhụ nsonaazụ ya site na ilele ahịrị ndị dabara na MachineConfigs:

oc get MachineConfigs | grep rendered

Mmechi:

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

Biko mara na faịlụ nhazi nke rụpụtara maka ọnụ ọnụ nna ukwu bụ ụdị ọhụrụ karịa nhazi mbụ. Ka ilele ya, gbaa iwu a. N'ịgafe, anyị na-achọpụta na nke a nwere ike ịbụ otu n'ime ndị kasị mma na akụkọ ihe mere eme nke 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

Mmechi:

pids_limit = 2048

Ugbu a, ka anyị jide n'aka na etinyere nhazi ahụ na ọnụ ọnụ nna ukwu niile. Nke mbụ anyị nwetara ndepụta ọnụ na ụyọkọ:

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

Ugbu a, ka anyị lelee faịlụ arụnyere. Ị ga-ahụ na ejiri ụkpụrụ ọhụrụ emelite faịlụ a maka ntuziaka pid na debug nke anyị kọwara na akụrụngwa ContainerRuntimeConfig. Elegance n'onwe ya:

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

Mmechi:

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

Emere mgbanwe ndị a niile na ụyọkọ ahụ na-agbaghị SSH. Emere ọrụ niile site n'ịnweta ọnụ ụzọ Kuberentes master node. Ya bụ, a haziri parampat ọhụrụ ndị a naanị na ọnụ ọnụ nna ukwu. Ọnụ ụzọ ndị ọrụ agbanwebeghị, nke na-egosipụta uru nke usoro Kubernetes nke iji steeti akọwapụtara na nke bụ eziokwu gbasara ndị ọbịa akpa na injin akpa nwere ihe ndị nwere ike ịgbanwe.

Ihe atụ dị n'elu na-egosi ike ime mgbanwe na obere OpenShift Container Platform 4 ụyọkọ nwere ọnụ mmepụta atọ ma ọ bụ nnukwu ụyọkọ mmepụta nke nwere ọnụ 3000. N'ọnọdụ ọ bụla, ọnụọgụ ọrụ ga-abụ otu - yana obere - naanị hazie faịlụ ContainerRuntimeConfig, wee gbanwee otu akara na MachineConfigPool. Ma ị nwere ike ime nke a na ụdị ọ bụla nke OpenShift Container Platform 4.X na-agba Kubernetes n'oge ndụ ya niile.

Ọtụtụ mgbe, ụlọ ọrụ teknụzụ na-etolite ngwa ngwa nke na anyị enweghị ike ịkọwa ihe kpatara anyị ji ahọrọ teknụzụ ụfọdụ maka ihe ndị dị n'okpuru. N'oge gara aga, injinia akpa bụ akụkụ nke ndị ọrụ na-emekọrịta ihe ozugbo. Ebe ọ bụ na ihe a na-ewu ewu nke arịa malitere n'ụzọ nkịtị site na ọbịbịa nke injin akpa, ndị ọrụ na-egosipụtakarị mmasị na ha. Nke a bụ ihe ọzọ mere Red Hat ji họrọ CRI-O. Ebube na-agbanwe site na itinye uche ugbu a na orchestration, anyị achọpụtala na CRI-O na-enye ahụmịhe kachasị mma mgbe ya na OpenShift 4 na-arụ ọrụ.

isi: www.habr.com

Tinye a comment