Container to conveyor: ʻO CRI-O ka mea paʻamau ma OpenShift Container Platform 4

Pakuhi ʻO Red Hat OpenShift Container Platform 4 hiki iā ʻoe ke hoʻololi i ka hana ʻana nā pūʻali no ka hoʻolaha ʻana i nā ipu, e komo pū ana i loko o ka ʻōnaehana o nā mea lawelawe kapuaʻi, ma nā kahua virtualization a i ʻole nā ​​ʻōnaehana metala ʻole. No ka hoʻokumu ʻana i kahi paepae ʻoiaʻiʻo, pono mākou e mālama pono i nā mea āpau i hoʻohana ʻia a pēlā e hoʻonui ai i ka hilinaʻi o kahi kaʻina hana automation paʻakikī.

Container to conveyor: ʻO CRI-O ka mea paʻamau ma OpenShift Container Platform 4

ʻO ka hopena maopopo ʻo ia ka hoʻohana ʻana iā Red Hat Enterprise Linux CoreOS (kahi ʻano o Red Hat Enterprise Linux) a me CRI-O ma ke ʻano maʻamau, a eia ke kumu ...

No ka mea he mea maikaʻi loa ke kumuhana o ka holo ʻana no ka ʻimi ʻana i nā mea hoʻohālikelike i ka wehewehe ʻana i ka hana a Kubernetes a me nā ipu, e hoʻāʻo kākou e kamaʻilio e pili ana i nā pilikia ʻoihana a CoreOS a me CRI-O e hoʻoponopono ai, me ka hoʻohana ʻana i kahi laʻana. Nā hana a Brunel no ka hana ʻana i nā poloka rigging. I ka makahiki 1803, ua hoʻokau ʻia ʻo Marc Brunel i ka hana ʻana i 100 rigging blocks no nā pono o nā moku kaua Pelekane e ulu nei. ʻO ka lāʻau liʻiliʻi ke ʻano o ka lika i hoʻohana ʻia e hoʻopili i nā kaula i nā peʻa. A hiki i ka hoʻomaka ʻana o ke kenekulia 19, ua hana ʻia kēia mau poloka e ka lima, akā ua hoʻokele ʻo Brunel i ka hana automate a hoʻomaka e hana i nā poloka maʻamau me ka hoʻohana ʻana i nā mea mīkini. ʻO ka hoʻomaʻamaʻa ʻana i kēia kaʻina hana ʻo ia ka mea i like maoli nā poloka i loaʻa, hiki ke hoʻololi maʻalahi inā haki, a hiki ke hana ʻia i ka nui.

E noʻonoʻo ʻoe inā pono ʻo Brunel e hana i kēia hana no 20 mau ʻano moku like ʻole (kubernetes versions) a no ʻelima mau hōkūhele like ʻole me nā au kai a me nā makani ʻokoʻa loa (nā mea hoʻolako kapua). Eia kekahi, ua koi ʻia nā moku āpau (OpenShift clusters), me ka nānā ʻole i nā hōkū ma kahi e hoʻokele ʻia ai ka hoʻokele ʻana, mai ka manaʻo o nā kāpena (nā mea hoʻokele e hoʻokele i ka hana o nā pūpū) e hana like. No ka hoʻomau ʻana i ka hoʻohālikelike moana, ʻaʻole mālama iki nā kāpena moku i ke ʻano o ka rigging blocks (CRI-O) i hoʻohana ʻia ma ko lākou mau moku - ʻo ka mea nui iā lākou ʻo ia ka ikaika a me ka hilinaʻi o kēia mau poloka.

ʻO OpenShift 4, ma ke ʻano he paepae kapuaʻi, ke alo nei i kahi paʻakikī ʻoihana like loa. Pono e hana ʻia nā node hou i ka manawa o ka hana ʻana i ka pūʻulu, i ka wā i hāʻule ʻole ai kekahi o nā nodes, a i ʻole ke hoʻonui ʻana i ka pūʻulu. Ke hana ʻia a hoʻomaka ʻia kahi node hou, pono e hoʻonohonoho pono ʻia nā mea hoʻokipa koʻikoʻi, me CRI-O. E like me nā hana ʻē aʻe, pono e hoʻolako ʻia nā "mea maka" i ka hoʻomaka. I ka hihia o nā moku, he metala a me ka lāʻau nā mea maka. Eia nō naʻe, i ka hana ʻana i kahi mea hoʻokipa no ka lawe ʻana i nā ipu i loko o kahi pūʻulu OpenShift 4, pono ʻoe e loaʻa i nā faila hoʻonohonoho a me nā kikowaena API i hāʻawi ʻia i mea hoʻokomo. A laila e hāʻawi ʻo OpenShift i ka pae e pono ai o ka automation i loko o ke ola holoʻokoʻa holoʻokoʻa, e hāʻawi ana i ke kākoʻo huahana e pono ai i nā mea hoʻohana hope a no laila e hoʻihoʻi hou i ka hoʻopukapuka ma ka paepae.

Ua hoʻokumu ʻia ʻo OpenShift 4 ma ke ʻano e hāʻawi ai i ka hiki ke hoʻololi maʻalahi i ka ʻōnaehana ma ka pōʻai holoʻokoʻa o ke ola o ka paepae (no nā mana 4.X) no nā mea hoʻolako kikowaena kapuaʻi nui a pau, nā paepae virtualization a me nā ʻōnaehana metala ʻole. No ka hana ʻana i kēia, pono e hana ʻia nā nodes ma ke kumu o nā mea hoʻololi. Ke koi ʻia kahi pūʻulu i kahi mana hou o Kubernetes, loaʻa iā ia ka mana like o CRI-O ma CoreOS. Ma muli o ka pili pono ʻana o ka mana CRI-O i nā Kubernetes, hoʻomaʻamaʻa nui kēia i nā ʻae no ka hoʻāʻo ʻana, hoʻoponopono pilikia, a i ʻole ke kumu kākoʻo. Eia kekahi, hoʻemi kēia ala i nā kumukūʻai no nā mea hoʻohana hope a me Red Hat.

He ala hou kēia o ka noʻonoʻo ʻana e pili ana i nā pūʻulu Kubernetes a hoʻokumu i ke kumu no ka hoʻolālā ʻana i kekahi mau hiʻohiʻona hou loa. ʻO CRI-O (Container Runtime Interface - Open Container Initiative, i hoʻopau ʻia CRI-OCI) i lilo i koho kūleʻa loa no ka hana nui ʻana o nā nodes e pono ai e hana me OpenShift. E hoʻololi ʻo CRI-O i ka mīkini Docker i hoʻohana mua ʻia, e hāʻawi ana i nā mea hoʻohana OpenShift waiwai, kūpaʻa, maʻalahi a ʻoluʻolu - ʻae, ua lohe pololei ʻoe - he ʻenekini pahu hoʻoluhi i hana ʻia no ka hana ʻana me Kubernetes.

ʻO ke ao o nā ipu hāmama

Ke neʻe nei ka honua i nā ipu hāmama no ka manawa lōʻihi. Inā ma nā Kubernetes, a i ʻole ma nā pae haʻahaʻa, hoʻomohala ʻana i nā kūlana pahu ka hopena i kahi kaiaola o ka hana hou ma kēlā me kēia pae.

Ua hoʻomaka ia me ka hana ʻana o ka Open Containers Initiative i Iune 2015. I kēia kaʻina hana mua, ua hoʻokumu ʻia nā kikoʻī pahu kiʻi и kaiapuni runtime. Ua hōʻoia kēia i hiki i nā mea hana ke hoʻohana i hoʻokahi maʻamau kiʻi ipu a me kahi ʻano lokahi no ka hana pū ʻana me lākou. Ua hoʻohui ʻia nā kikoʻī ma hope mahele, hiki i nā mea hoʻohana ke kaʻana like kiʻi ipu.

Ua hoʻomohala ke kaiāulu Kubernetes i hoʻokahi maʻamau no kahi interface pluggable, i kapa ʻia ʻImi hoʻoneʻe pahu pahu (CRI). Mahalo i kēia, ua hiki i nā mea hoʻohana Kubernetes ke hoʻopili i nā ʻenekini like ʻole e hana me nā ipu i hoʻohui ʻia me Docker.

Ua ʻike nā ʻenekinia ma Red Hat a me Google i kahi mākeke e pono ai i kahi mīkini pahu e hiki ke ʻae i nā noi Kubelet ma luna o ka protocol CRI a hoʻokomo i nā ipu i kūpono me nā kikoʻī OCI i ʻōlelo ʻia ma luna. No laila Ua puka mai ʻo OCID. Akā e kala mai iaʻu, ʻaʻole anei mākou i ʻōlelo e hoʻolaʻa ʻia kēia mea iā CRI-O? ʻOiaʻiʻo, ʻo ia wale nō me ka hoʻokuʻu ʻana mana 1.0 ua kapa hou ia ka papahana CRI-O.

Kuhi. 1.

Container to conveyor: ʻO CRI-O ka mea paʻamau ma OpenShift Container Platform 4

Nā mea hou me CRI-O a me CoreOS

Me ka hoʻomaka ʻana o ka platform OpenShift 4, ua hoʻololi ʻia mīkini pahu pahu, hoʻohana ʻia e ka paʻamau i ka paepae, a ua pani ʻia ʻo Docker e CRI-O, e hāʻawi ana i kahi ʻano kumu kūʻai, kūpaʻa, maʻalahi a ʻoluʻolu hoʻi no ka holo ʻana i kahi pahu e ulu like ana me Kubernetes. He mea maʻalahi kēia i ke kākoʻo a me ka hoʻonohonoho hoʻonohonoho. ʻO ka hoʻonohonoho ʻana o ka mīkini pahu a me ka mea hoʻokipa, a me kā lākou hoʻokele ʻana, lilo i automate i loko o OpenShift 4.

E kali, pehea keia?

Pololei, me ka hiki ʻana mai o OpenShift 4, ʻaʻohe pono e hoʻopili i nā pūʻali hoʻokahi a hoʻokomo i kahi mīkini pahu, hoʻonohonoho i ka waiho ʻana, hoʻonohonoho i nā kikowaena huli a hoʻonohonoho i kahi pūnaewele. Ua hoʻolālā hou ʻia ka paepae OpenShift 4 e hoʻohana i ka Ka Papa Hana ʻaʻole wale ma ke ʻano o nā noi mea hoʻohana hope, akā ma ke ʻano o nā hana pae pae maʻamau e like me ke kau ʻana i nā kiʻi, ka hoʻonohonoho ʻana i ka ʻōnaehana, a i ʻole ke kau ʻana i nā mea hou.

Ua ʻae mau ʻo Kubernetes i nā mea hoʻohana e hoʻokele i nā noi ma ka wehewehe ʻana i ke kūlana makemake a me ka hoʻohana ʻana nā mea hoʻoponopono, e hōʻoia i ka pili pono o ka mokuʻāina maoli me ka mokuʻāina i hoʻopaʻa ʻia e like me ka hiki. ʻO kēia mokuʻāina i manaʻo ʻia a me ka hoʻokokoke mokuʻāina maoli wehe i nā manawa kūpono mai ka hoʻomohala ʻana a me ka ʻike hana. Hiki i nā mea hoʻomohala ke wehewehe i ke kūlana i makemake ʻia e e hooili aku i ka mea hoʻohana ma ke ʻano o kahi faila YAML a i ʻole JSON, a laila hiki i ka mea hoʻohana ke hana i ke ʻano noi noi i makemake ʻia i loko o ka ʻenehana hana, a ʻo ke kūlana hana o kēia hihia e pili pono i ka mea i kuhikuhi ʻia.

Ma ka hoʻohana ʻana i nā Operators i ka paepae, lawe mai ʻo OpenShift 4 i kēia paradigm hou (e hoʻohana ana i ka manaʻo o ka hoʻonohonoho a me ke kūlana maoli) i ka hoʻokele ʻana o RHEL CoreOS a me CRI-O. ʻO nā hana o ka hoʻonohonoho ʻana a me ka hoʻokele ʻana i nā mana o ka ʻōnaehana hana a me ka mīkini pahu e hoʻohana ʻia me ka mea i kapa ʻia. Mea hana hoʻonohonoho mīkini (MCO). Hoʻomaʻamaʻa nui ʻo MCO i ka hana a ka luna hoʻomalu, ʻo ia hoʻi ka hoʻomaʻamaʻa ʻana i nā pae hope o ka hoʻokomo ʻana, a me nā hana ma hope o ka hoʻokomo ʻana (ʻelua lā hana). ʻO kēia mau mea a pau e hoʻolilo iā OpenShift 4 i kahi paepae ao maoli. E komo mākou i kēia ma hope iki.

Nā pahu holo

Ua loaʻa i nā mea hoʻohana ka manawa e hoʻohana ai i ka mīkini CRI-O ma ka OpenShift platform mai ka mana 3.7 i ke kūlana Tech Preview a mai ka mana 3.9 i ke kūlana Generally Available (kākoʻo ʻia i kēia manawa). Eia kekahi, hoʻohana nui ʻo Red Hat CRI-O no ka holo ana i na hana hana ma OpenShift Online mai ka mana 3.10. ʻO kēia mau mea a pau i hiki ai i ka hui e hana ana ma CRI-O ke loaʻa ka ʻike nui i nā pahu hoʻolele lehulehu ma nā pūʻulu Kubernetes nui. I mea e ʻike ai i ka hoʻohana ʻana o Kubernetes iā CRI-O, e nānā kākou i ke kiʻi ma lalo nei, e hōʻike ana i ke ʻano o ka hana ʻana o ka hale hana.

Laiki. 2. Pehea e hana ai nā ipu i loko o kahi pūʻulu Kubernetes

Container to conveyor: ʻO CRI-O ka mea paʻamau ma OpenShift Container Platform 4

Hoʻomaʻamaʻa ʻo CRI-O i ka hana ʻana i nā mea hoʻokele pahu hou ma ka hoʻonohonoho ʻana i ka pae kiʻekiʻe holoʻokoʻa i ka wā e hoʻomaka ai i nā nodes hou, a i ka wā e hoʻokuʻu ai i nā mana hou o ka platform OpenShift. ʻO ka hoʻoponopono hou ʻana o ka paepae holoʻokoʻa e hiki ai i nā hoʻololi hou / rollbacks transactional, a pale pū i nā deadlocks i nā hilinaʻi ma waena o ka pahu huelo pahu, pahu pahu, nā nodes (Kubelets) a me ka kumu kumu Kubernetes. Ma o ka hooponopono ana i na mea a pau o ka anuu, me ka mana a me ka hoololi ana, aia no ke ala maopopo mai ka mokuaina A a hiki i ka mokuaina B. He mea maʻalahi kēia i ke kaʻina hana hou, hoʻomaikaʻi i ka palekana, hoʻomaikaʻi i ka hōʻike ʻana i ka hana, a kōkua i ka hōʻemi ʻana i ke kumukūʻai o nā mea hou a me nā hoʻonohonoho o nā mana hou. .

E hōʻike ana i ka mana o nā mea pani

E like me ka mea i ʻōlelo ʻia ma mua, me ka hoʻohana ʻana i ka Machine Config Operator e hoʻokele i ka pahu pahu a me ka mīkini pahu ma OpenShift 4 e hāʻawi i kahi pae hou o ka automation i hiki ʻole ma mua ma ka paepae Kubernetes. No ka hōʻike ʻana i nā hiʻohiʻona hou, e hōʻike mākou pehea ʻoe e hoʻololi ai i ka faila crio.conf. I mea e pale aku ai i ka huikau me ka terminology, e ho'āʻo e kālele i nā hopena.

ʻO ka mea mua, e hana kāua i ka mea i kapa ʻia ʻo ka hoʻonohonoho hoʻonohonoho manawa holo pahu - Container Runtime Config. E noʻonoʻo iā ia he kumu Kubernetes e hōʻike ana i ka hoʻonohonoho no CRI-O. I ka ʻoiaʻiʻo, he mana kūikawā ia o kahi mea i kapa ʻia ʻo MachineConfig, ʻo ia kekahi hoʻonohonoho i hoʻonohonoho ʻia i kahi mīkini RHEL CoreOS ma ke ʻano o kahi hui OpenShift.

Ua hana ʻia kēia kumu waiwai maʻamau, i kapa ʻia ʻo ContainerRuntimeConfig, i mea e maʻalahi ai ka hoʻonohonoho ʻana o nā luna hoʻonohonoho hui iā CRI-O. He ikaika loa kēia mea hana a hiki ke hoʻopili wale ʻia i kekahi mau nodes ma muli o nā hoʻonohonoho MachineConfigPool. E noʻonoʻo e like me kahi hui o nā mīkini e lawelawe ana i ke kumu like.

E nānā i nā laina hope ʻelua a mākou e hoʻololi ai i ka faila /etc/crio/crio.conf. Ua like loa kēia mau laina ʻelua me nā laina ma ka faila crio.conf, ʻo ia:

vi ContainerRuntimeConfig.yaml

Panina:

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

I kēia manawa, e hoʻokuʻu i kēia faila i ka pūʻulu Kubernetes a nānā i ka hana maoli ʻia. E ʻoluʻolu e ʻoluʻolu e like ka hana me nā kumuwaiwai Kubernetes ʻē aʻe:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Panina:

NAME              AGE
set-log-and-pid   22h

Ke hana mākou i ka ContainerRuntimeConfig, pono mākou e hoʻololi i kekahi o nā MachineConfigPools e hōʻailona i nā Kubernetes e makemake mākou e hoʻopili i kēia hoʻonohonoho ʻana i kahi hui o nā mīkini i loko o ka hui. I kēia hihia e hoʻololi mākou i ka MachineConfigPool no nā kumu kumu:

oc edit MachineConfigPool/master

Ka hopena (no ka maopopo, waiho ʻia ke kumu nui):

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

I kēia manawa, hoʻomaka ʻo MCO e hana i kahi faila crio.conf hou no ka hui. I kēia hihia, hiki ke nānā ʻia ka faila hoʻonohonoho hoʻopau piha me ka Kubernetes API. E hoʻomanaʻo, ʻo ContainerRuntimeConfig kahi mana kūikawā o MachineConfig, no laila hiki iā mākou ke ʻike i ka hopena ma ka nānā ʻana i nā laina kūpono i MachineConfigs:

oc get MachineConfigs | grep rendered

Panina:

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

E ʻoluʻolu e hoʻomaopopo i ka hopena o ka faila hoʻonohonoho no nā kumu kumu he mana hou aʻe ma mua o nā hoʻonohonoho kumu. No ka nānā ʻana iā ia, e holo i kēia kauoha. Ma ka hele ʻana, ʻike mākou ʻo ia paha kekahi o nā laina hoʻokahi maikaʻi loa i ka mōʻaukala o 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

Panina:

pids_limit = 2048

I kēia manawa, e hōʻoia mākou ua hoʻopili ʻia ka hoʻonohonoho ʻana i nā nodes haku āpau. ʻO ka mea mua, loaʻa iā mākou kahi papa inoa o nā nodes i ka hui:

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

I kēia manawa, e nānā kākou i ka faila i hoʻokomo ʻia. E ʻike ʻoe ua hōʻano hou ʻia ka faila me nā waiwai hou no ka pid a me ka debug kuhikuhi a mākou i kuhikuhi ai i ka punawai ContainerRuntimeConfig. ʻO ka nani ponoʻī:

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

Panina:

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

Ua hana ʻia kēia mau hoʻololi a pau i ka puʻupuʻu me ka holo ʻole o SSH. Ua hana ʻia nā hana a pau ma ke komo ʻana i ka haku kumu Kuberentes. ʻO ia hoʻi, ua hoʻonohonoho ʻia kēia mau ʻāpana hou ma nā kumu kumu. ʻAʻole i loli nā node limahana, e hōʻike ana i nā pōmaikaʻi o ke ʻano Kubernetes o ka hoʻohana ʻana i nā mokuʻāina kikoʻī a me nā mokuʻāina maoli e pili ana i nā mea hoʻokipa pahu a me nā mīkini pahu me nā mea hoʻololi.

Hōʻike ka laʻana ma luna nei i ka hiki ke hoʻololi i kahi puʻupuʻu OpenShift Container Platform 4 liʻiliʻi me ʻekolu nodes hana a i ʻole kahi pūʻulu hana nui me 3000 nodes. I kēlā me kēia hihia, e like ka nui o ka hana - a liʻiliʻi loa - e hoʻonohonoho i ka faila ContainerRuntimeConfig, a hoʻololi i hoʻokahi lepili ma MachineConfigPool. A hiki iā ʻoe ke hana i kēia me kekahi mana o ka OpenShift Container Platform 4.X e holo ana i nā Kubernetes a puni kona ola.

Hoʻololi pinepine nā ʻoihana ʻenehana i hiki ʻole iā mākou ke wehewehe i ke kumu e koho ai mākou i kekahi mau ʻenehana no nā mea i lalo. ʻO nā ʻenekini pahu pahu ka mea i hoʻopili pololei ʻia e nā mea hoʻohana. Mai ka hoʻomaka maoli ʻana o ka kaulana o nā ipu me ka hiki ʻana mai o nā mīkini pahu, hōʻike pinepine nā mea hoʻohana iā lākou. ʻO kēia kekahi kumu i koho ai ʻo Red Hat iā CRI-O. Ke ulu nei nā pahu me ka nānā ʻana i kēia manawa i ka orchestration, a ua ʻike mākou ua hāʻawi ʻo CRI-O i ka ʻike maikaʻi loa i ka hana ʻana me OpenShift 4.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka