Контейнер ба конвейер: CRI-O ҳоло дар OpenShift Container Platform 4 пешфарз аст

Платформа Платформаи контейнерҳои Red Hat OpenShift 4 ба шумо имкон медихад, ки офариниш ба тартиб оварда шавад ҳостҳо барои ҷойгиркунии контейнерҳо, аз ҷумла дар инфрасохтори провайдерҳои хидматрасонии абрӣ, дар платформаҳои виртуализатсия ё дар системаҳои металлӣ. Барои сохтани платформаи воқеан ба абр асосёфта, мо бояд тамоми унсурҳои истифодашударо таҳти назорати қатъӣ гирем ва ба ин васила эътимоднокии раванди мураккаби автоматикунониро баланд бардорем.

Контейнер ба конвейер: CRI-O ҳоло дар OpenShift Container Platform 4 пешфарз аст

Ҳалли возеҳ ин буд, ки Red Hat Enterprise Linux CoreOS (як варианти Red Hat Enterprise Linux) ва CRI-O ҳамчун стандарт истифода шаванд ва ин аст, ки чаро...

Азбаски мавзӯи киштиронӣ барои дарёфти аналогияҳо ҳангоми шарҳи кори Кубернетес ва контейнерҳо хеле хуб аст, биёед кӯшиш кунем, ки дар бораи мушкилоти тиҷорате, ки CoreOS ва CRI-O ҳал мекунанд, бо истифода аз мисол сӯҳбат кунем. Ихтироъҳои Брунел барои истеҳсоли блокҳои арматура. Дар соли 1803 ба Марк Брунел супориш дода шуд, ки барои эҳтиёҷоти флоти афзояндаи баҳрии Бритониё 100 блокҳои арматура истеҳсол кунад. Блоки тақаллуб як намуди тақаллубест, ки барои пайваст кардани ресмон ба бодбонҳо истифода мешавад. То ибтидои асри 19 ин блокҳо дастӣ сохта мешуданд, аммо Брунел тавонистааст истеҳсолотро автоматӣ кунад ва ба истеҳсоли блокҳои стандартӣ бо истифодаи асбобҳои дастӣ шурӯъ кард. Автоматикунонии ин процесс маънои онро дошт, ки блокҳои ҳосилшуда аслан якхела буда, ҳангоми шикастан ба осонӣ иваз карда мешаванд ва ба миқдори зиёд истеҳсол карда мешаванд.

Акнун тасаввур кунед, ки агар Брунел бояд ин корро барои 20 модели киштиҳои гуногун (версияҳои Кубернетес) ва барои панҷ сайёраи гуногун бо ҷараёнҳои баҳр ва шамолҳои тамоман гуногун (провайдерҳои абр) иҷро мекард. Гайр аз ин, талаб карда шуд, ки аз хамаи киштихо (кластерхои OpenShift), сарфи назар аз он ки дар кадом сайёрахо навигация гузаронда мешавад, аз нуктаи назари капитанхо (оператороне, ки кори кластерхоро идора мекунанд) як хел рафтор кунанд. Барои идома додани аналогияи баҳрӣ, капитанҳои киштӣ ба он аҳамият намедиҳанд, ки дар киштиҳои худ чӣ гуна блокҳои арматура (CRI-O) истифода мешаванд - барои онҳо чизи асосӣ ин аст, ки ин блокҳо қавӣ ва боэътимод мебошанд.

OpenShift 4, ҳамчун платформаи абрӣ, бо мушкилоти хеле шабеҳи тиҷорат рӯбарӯ аст. Гиреҳҳои нав бояд ҳангоми сохтани кластер, дар сурати нокомӣ дар яке аз гиреҳҳо ё ҳангоми миқёси кластер эҷод карда шаванд. Вақте ки гиреҳи нав сохта ва оғоз карда мешавад, ҷузъҳои муҳими мизбон, аз ҷумла CRI-O, бояд мувофиқан танзим карда шаванд. Чун дар дигар истехсолот «ашьёи хом» бояд дар ибтидо таъмин карда шавад. Дар киштихо ашьёи хом металл ва чубу тахта мебошанд. Аммо, дар сурати сохтани ҳост барои ҷойгиркунии контейнерҳо дар кластери OpenShift 4, шумо бояд файлҳои конфигуратсия ва серверҳои аз ҷониби API таъминшуда ҳамчун вуруд дошта бошед. OpenShift пас аз он сатҳи зарурии автоматизатсияро дар тамоми давраи ҳаёт таъмин мекунад ва ба корбарони ниҳоӣ дастгирии зарурии маҳсулотро пешниҳод мекунад ва ба ин васила сармоягузорӣ дар платформаро ҷуброн мекунад.

OpenShift 4 тавре сохта шудааст, ки қобилияти ба осонӣ навсозии системаро дар тамоми давраи ҳаёти платформа (барои версияҳои 4.X) барои ҳама провайдерҳои асосии роёниши абрӣ, платформаҳои виртуализатсия ва ҳатто системаҳои металлии бараҳна таъмин кунад. Барои ин гиреҳҳо бояд дар асоси унсурҳои ивазшаванда сохта шаванд. Вақте ки кластер версияи нави Kubernetes-ро талаб мекунад, он инчунин версияи мувофиқи CRI-O-ро дар CoreOS мегирад. Азбаски версияи CRI-O мустақиман ба Kubernetes пайваст аст, ин ҳама тағиротҳоро барои санҷиш, бартараф кардани мушкилот ё ҳадафҳои дастгирӣ хеле содда мекунад. Илова бар ин, ин равиш хароҷотро барои корбарони ниҳоӣ ва Red Hat коҳиш медиҳад.

Ин як роҳи комилан нави тафаккур дар бораи кластерҳои Kubernetes аст ва барои банақшагирии баъзе хусусиятҳои нави хеле муфид ва ҷолиб замина мегузорад. CRI-O (Container Runtime Interface - Open Container Initiative, мухтасари CRI-OCI) интихоби муваффақтарин барои эҷоди оммавии гиреҳҳо гардид, ки барои кор бо OpenShift заруранд. CRI-O муҳаррики қаблан истифодашудаи Docker-ро иваз карда, ба корбарони OpenShift пешниҳод мекунад сарфакорона, устувор, оддй ва дилгиркунанда - бале, шумо дуруст шунидаед - як муҳаррики контейнерии дилгиркунанда, ки махсус барои кор бо Kubernetes сохта шудааст.

Ҷаҳони контейнерҳои кушод

Дунё кайҳо боз ба сӯи контейнерҳои кушод ҳаракат мекунад. Новобаста аз он ки дар Кубернетес, ё дар сатҳи поёнтар, таҳияи стандартҳои контейнер боиси экосистемаи инноватсия дар ҳама сатҳҳо мегардад.

Ҳамааш аз таъсиси Ташаббуси контейнерҳои кушод оғоз ёфт дар моҳи июни соли 2015. Дар ин марҳилаи аввали кор, мушаххасоти контейнер ташкил карда шуданд тасвир и муҳити вақти корӣ. Ин кафолат дод, ки асбобҳо метавонанд стандарти ягонаро истифода баранд тасвирҳои контейнер ва формати ягонаи кор бо онҳо. Хусусиятҳо баъдтар илова карда шуданд тақсимот, ба корбарон имкон медиҳад, ки ба осонӣ мубодила кунанд тасвирҳои контейнер.

Пас аз он ҷомеаи Кубернетес стандарти ягонаи интерфейси пайвастшавандаро таҳия кард, ки ном дорад Интерфейси Runtime Container (CRI). Ба шарофати ин, корбарони Kubernetes тавонистанд муҳаррикҳои гуногунро барои кор бо контейнерҳо ба ғайр аз Docker пайваст кунанд.

Муҳандисони Red Hat ва Google эҳтиёҷоти бозорро ба як муҳаррики контейнерӣ диданд, ки метавонад дархостҳои Kubeletро тавассути протоколи CRI қабул кунад ва контейнерҳоеро пешниҳод кунанд, ки бо мушаххасоти дар боло зикршуда OCI мувофиқанд. Пас OCID пайдо шуд. Аммо бубахшед, оё мо нагуфтем, ки ин мавод ба CRI-O бахшида мешавад? Дар асл ин аст, танҳо бо озод нусхаи 1.0 Лоиҳа номи CRI-O шуд.

Наќшаи. 1.

Контейнер ба конвейер: CRI-O ҳоло дар OpenShift Container Platform 4 пешфарз аст

Навоварӣ бо CRI-O ва CoreOS

Бо ба кор андохтани платформаи OpenShift 4, он тағир дода шуд муҳаррики контейнерӣ, ки ба таври нобаёнӣ дар платформа истифода мешуд ва Docker бо CRI-O иваз карда шуд, ки муҳити камхарҷ, устувор, оддӣ ва дилгиркунанда барои кор кардани контейнер, ки дар баробари Kubernetes таҳия мешавад, пешниҳод мекунад. Ин дастгирӣ ва конфигуратсияи кластерро хеле содда мекунад. Конфигуратсияи муҳаррики контейнерӣ ва ҳост, инчунин идоракунии онҳо дар доираи OpenShift 4 автоматӣ карда мешавад.

Интизор шавед, ин чӣ гуна аст?

Дуруст аст, ки бо пайдоиши OpenShift 4, дигар зарурати пайвастшавӣ ба ҳостҳои инфиродӣ ва насби муҳаррики контейнер, танзими анбор, танзим кардани серверҳои ҷустуҷӯ ё танзим кардани шабака вуҷуд надорад. Платформаи OpenShift 4 барои истифодаи он комилан аз нав тарҳрезӣ шудааст Чаҳорчӯбаи оператор на танҳо аз рӯи барномаҳои корбари ниҳоӣ, балки инчунин дар робита ба амалиёти асосии сатҳи платформа, ба монанди ҷойгиркунии тасвирҳо, танзими система ё насб кардани навсозиҳо.

Kubernetes ҳамеша ба корбарон имкон медиҳад, ки барномаҳоро тавассути муайян кардани ҳолати дилхоҳ ва истифода идора кунанд назоратчиён, то боварӣ ҳосил кунед, ки ҳолати воқеӣ ба ҳолати ҳадаф то ҳадди имкон зич мувофиқат кунад. Ин давлати мақсаднок ва муносибати давлати воқеӣ хам аз чихати тараккиёт ва хам аз нуктаи назари амалиёт имкониятхои калон мекушояд. Таҳиягарон метавонанд ҳолати заруриро тавассути гузаронад ба оператор дар шакли файли YAML ё JSON, ва он гоҳ оператор метавонад намунаи дархости дархостро дар муҳити истеҳсолӣ созад ва ҳолати кори ин инстансия пурра ба ҳолати муқарраршуда мувофиқат мекунад.

Бо истифода аз Операторҳо дар платформа, OpenShift 4 ин парадигмаи навро (бо истифода аз консепсияи маҷмӯи ва ҳолати воқеӣ) ба идоракунии RHEL CoreOS ва CRI-O меорад. Вазифаҳои конфигуратсия ва идоракунии версияҳои системаи оператсионӣ ва муҳаррики контейнерӣ бо истифода аз ба ном автоматӣ карда мешаванд. Оператори танзимоти мошин (MCO). MCO кори мудири кластерро хеле содда карда, аслан марҳалаҳои охирини насбкунӣ ва инчунин амалиёти минбаъдаи насбкуниро автоматӣ мекунад (амалиёти рӯзи дуюм). Ҳамаи ин OpenShift 4-ро платформаи абрии ҳақиқӣ месозад. Мо ба ин каме дертар мепардозем.

Контейнерҳои ҳаракаткунанда

Истифодабарандагон имкон доштанд, ки муҳаррики CRI-O-ро дар платформаи OpenShift аз версияи 3.7 дар ҳолати Пешнамоиши Tech ва аз версияи 3.9 дар ҳолати Умуман дастрас (ҳоло дастгирӣ карда мешавад) истифода баранд. Илова бар ин, Red Hat ба таври оммавӣ истифода мебарад CRI-O барои иҷрои сарбории истеҳсолӣ дар OpenShift Online аз версияи 3.10. Ҳамаи ин ба гурӯҳе, ки дар CRI-O кор мекунад, имкон дод, ки таҷрибаи васеъро дар партови оммавии контейнерҳо дар кластерҳои бузурги Кубернетес ба даст оранд. Барои гирифтани фаҳмиши асосӣ дар бораи чӣ гуна Kubernetes CRI-O-ро истифода мебарад, биёед ба тасвири зерин назар кунем, ки чӣ тавр меъморӣ кор мекунад.

Райс. 2. Чӣ тавр контейнерҳо дар кластери Kubernetes кор мекунанд

Контейнер ба конвейер: CRI-O ҳоло дар OpenShift Container Platform 4 пешфарз аст

CRI-O эҷоди ҳостҳои нави контейнерро тавассути ҳамоҳангсозии тамоми сатҳи боло ҳангоми оғоз кардани гиреҳҳои нав ва ҳангоми баровардани версияҳои нави платформаи OpenShift осон мекунад. Баррасии тамоми платформа имкон медиҳад, ки навсозӣ/бозгашти транзаксиявӣ ва инчунин аз бастани вобастагӣ байни ядрои думи контейнер, муҳаррики контейнер, гиреҳҳо (Kubelets) ва гиреҳи Kubernetes Master пешгирӣ мекунад. Бо идоракунии мутамарказ ҳамаи ҷузъҳои платформа, бо назорат ва версиясозӣ, ҳамеша роҳи равшан аз ҳолати А то ҳолати В мавҷуд аст. Ин раванди навсозӣро содда мекунад, амниятро беҳтар мекунад, гузоришдиҳии иҷроишро беҳтар мекунад ва ба кам кардани арзиши навсозӣ ва насби версияҳои нав мусоидат мекунад. .

Намоиши қудрати элементҳои ивазшаванда

Тавре ки қаблан зикр гардид, бо истифода аз Оператори Config Machine барои идоракунии мизбони контейнер ва муҳаррики контейнерӣ дар OpenShift 4 сатҳи нави автоматизатсияро таъмин мекунад, ки қаблан дар платформаи Kubernetes имконнопазир буд. Барои намоиш додани хусусиятҳои нав, мо нишон медиҳем, ки чӣ тавр шумо метавонед ба файли crio.conf тағирот ворид кунед. Барои он ки бо истилоҳот ошуфта нашавед, кӯшиш кунед, ки ба натиҷаҳо диққат диҳед.

Аввалан, биёед он чизеро созем, ки конфигуратсияи вақти кори контейнер номида мешавад - Container Runtime Config. Онро ҳамчун манбаи Kubernetes фикр кунед, ки конфигуратсияи CRI-O-ро ифода мекунад. Дар асл, он як версияи махсуси чизе бо номи MachineConfig мебошад, ки ҳама гуна конфигуратсияест, ки дар мошини RHEL CoreOS ҳамчун як қисми кластери OpenShift ҷойгир карда шудааст.

Ин манбаи фармоишӣ, ки ContainerRuntimeConfig ном дорад, барои осон кардани танзими CRI-O барои маъмурони кластер сохта шудааст. Ин асбоб ба қадри кофӣ пурқувват аст, ки он метавонад танҳо ба гиреҳҳои муайян вобаста ба танзимоти MachineConfigPool татбиқ карда шавад. Онро ҳамчун як гурӯҳи мошинҳо тасаввур кунед, ки ба як ҳадаф хизмат мекунанд.

Ба ду сатри охир аҳамият диҳед, ки мо дар файли /etc/crio/crio.conf тағир медиҳем. Ин ду сатр ба сатрҳои файли crio.conf хеле монанданд, онҳо инҳоянд:

vi ContainerRuntimeConfig.yaml

Хулоса:

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

Акнун биёед ин файлро ба кластери Kubernetes тела кунем ва тафтиш кунем, ки он воқеан сохта шудааст. Лутфан қайд кунед, ки амалиёт бо ҳама манбаи дигари Kubernetes комилан якхела аст:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Хулоса:

NAME              AGE
set-log-and-pid   22h

Пас аз он ки мо ContainerRuntimeConfig-ро сохтем, мо бояд яке аз MachineConfigPools-ро тағир диҳем, то ба Kubernetes сигнал диҳем, ки мо мехоҳем ин конфигуратсияро ба гурӯҳи мушаххаси мошинҳои кластер татбиқ кунем. Дар ин ҳолат мо MachineConfigPool-ро барои гиреҳҳои асосӣ иваз мекунем:

oc edit MachineConfigPool/master

Хулоса (барои возеҳият, моҳияти асосӣ боқӣ мемонад):

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

Дар ин лаҳза, MCO ба эҷоди файли нави crio.conf барои кластер оғоз мекунад. Дар ин ҳолат, файли конфигуратсияи пурраро бо истифода аз API Kubernetes дидан мумкин аст. Дар хотир доред, ки ContainerRuntimeConfig танҳо як версияи махсуси MachineConfig аст, бинобар ин мо метавонем натиҷаро тавассути дидани сатрҳои дахлдор дар MachineConfigs бубинем:

oc get MachineConfigs | grep rendered

Хулоса:

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

Лутфан таваҷҷӯҳ намоед, ки файли конфигуратсияи натиҷавӣ барои гиреҳҳои асосӣ версияи навтар аз конфигуратсияҳои аслӣ буд. Барои дидани он, фармони зеринро иҷро кунед. Ҳангоми гузаштан, мо қайд мекунем, ки ин шояд яке аз беҳтарин як лайнерҳо дар таърихи Кубернетес бошад:

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

Хулоса:

pids_limit = 2048

Акнун биёед боварӣ ҳосил кунем, ки конфигуратсия ба ҳама гиреҳҳои асосӣ татбиқ шудааст. Аввал мо рӯйхати гиреҳҳоро дар кластер мегирем:

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

Акнун биёед файли насбшударо бубинем. Шумо хоҳед дид, ки файл бо арзишҳои нави дастурҳои pid ва debug навсозӣ шудааст, ки мо дар манбаи ContainerRuntimeConfig нишон додаем. Худи зебоӣ:

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

Хулоса:

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

Ҳамаи ин тағиротҳо дар кластер бидуни иҷро кардани SSH анҷом дода шуданд. Ҳама корҳо тавассути дастрасӣ ба гиреҳи устои Kuberentes анҷом дода шуданд. Яъне, ин параметрҳои нав танҳо дар гиреҳҳои асосӣ танзим карда шуданд. Гиреҳҳои коргарӣ тағир наёфтанд, ки ин бартариҳои методологияи Кубернетесро дар бораи истифодаи ҳолати мушаххас ва воқеиро дар робита бо мизбонҳои контейнерӣ ва муҳаррикҳои контейнерӣ бо унсурҳои ивазшаванда нишон медиҳад.

Мисоли боло қобилияти ворид кардани тағиротро ба кластери хурди OpenShift Container Platform 4 бо се гиреҳи истеҳсолӣ ё кластери азими истеҳсолӣ бо 3000 гиреҳ нишон медиҳад. Дар ҳар сурат, ҳаҷми кор яксон хоҳад буд - ва хеле хурд - танҳо файли ContainerRuntimeConfig -ро танзим кунед ва як нишона дар MachineConfigPool -ро тағир диҳед. Ва шумо метавонед ин корро бо ҳама гуна версияи OpenShift Container Platform 4.X, ки Kubernetes-ро дар тӯли тамоми давраи ҳаёти худ иҷро мекунад, иҷро кунед.

Аксар вақт ширкатҳои технологӣ чунон зуд инкишоф меёбанд, ки мо наметавонем шарҳ диҳем, ки чаро мо технологияҳои муайянро барои ҷузъҳои асосӣ интихоб мекунем. Муҳаррикҳои контейнерӣ таърихан ҷузъе буданд, ки корбарон мустақиман бо онҳо ҳамкорӣ мекунанд. Азбаски маъруфияти контейнерҳо табиатан бо пайдоиши муҳаррикҳои контейнерӣ оғоз ёфт, корбарон аксар вақт ба онҳо таваҷҷӯҳ зоҳир мекунанд. Ин як сабаби дигари Red Hat CRI-O-ро интихоб мекунад. Контейнерҳо бо таваҷҷӯҳ ба оркестрсозӣ инкишоф меёбанд ва мо дарёфтем, ки CRI-O таҷрибаи беҳтаринро ҳангоми кор бо OpenShift 4 таъмин мекунад.

Манбаъ: will.com

Илова Эзоҳ