Coimeádán go dtí an iompair: tá CRI-O réamhshocraithe anois in OpenShift Container Platform 4

Ardán Ardán Coimeádán OpenShift Red Hat 4 ligeann duit an cruthú a shruthlíniú хостов для развертывания контейнеров, в том числе в инфраструктуре поставщиков облачных сервисов, на платформах виртуализации или в bare-metal системах. Чтобы создать в полном смысле облачную платформу, нам пришлось взять под жесткий контроль все применяемые элементы и таким образом повысить надежность сложного процесса автоматизации.

Coimeádán go dtí an iompair: tá CRI-O réamhshocraithe anois in OpenShift Container Platform 4

Ba é an réiteach soiléir ná Red Hat Enterprise Linux CoreOS (leagan de Red Hat Enterprise Linux) agus CRI-O a úsáid mar chaighdeán, agus seo an fáth ...

Поскольку тема мореплавания является весьма удачной для поиска аналогий при объяснении работы Kubernetes и контейнеров, попробуем рассказать о тех бизнес-проблемах, которые решают CoreOS и CRI-O, на примере Aireagáin Brunel chun bloic rigging a tháirgeadh. В 1803 году перед Марком Брюнелем была поставлена задача изготовить 100 тысяч такелажных блоков для нужд растущего морского флота Великобритании. Такелажный блок – тип оснастки, которая используется для крепления канатов к парусам. Вплоть до самого начала 19-го столетия эти блоки изготавливались вручную, но Брюнелю удалось автоматизировать производство и начать изготавливать стандартизированные блоки с помощью станков. Автоматизация этого процесса означала, что в результате все блоки получались практически одинаковыми, могли быть с легкостью заменены в случае поломки и могли изготавливаться в больших количествах.

А теперь представьте, что Брюнелю пришлось бы проделать эту работу для 20 различных моделей судов (версий Kubernetes) и для пяти различных планет с совершенно разными морскими течениями и ветрами (облачные провайдеры). К тому же требовалось, чтобы все корабли (кластеры OpenShift), независимо от планет, по которым осуществляется навигация, с точки зрения капитанов (операторов, управляющих работой кластеров) вели себя одинаково. Продолжая морскую аналогию, капитанам кораблей абсолютно не важно, какие такелажные блоки (CRI-O) используются на их кораблях – для них главное, чтобы эти блоки были прочными и надежными.

Перед OpenShift 4, как облачной платформой, стоит очень похожая бизнес-задача. Новые ноды должны создаваться в момент создания кластера, в случае сбоя в одном из узлов, или при масштабировании кластера. При создании и инициализации нового узла должны быть соответственно сконфигурированы и критические компоненты хоста, в том числе CRI-O. Как и в любом другом производстве в начале необходимо подать «сырье». В случае кораблей в качестве сырья выступают металл и древесина. Однако в случае создания хоста для развертывания контейнеров в кластере OpenShift 4, на входе нужно иметь файлы конфигурации и предоставляемые API серверы. После чего OpenShift будет обеспечивать нужный уровень автоматизации в течение всего жизненного цикла, предлагая необходимую продуктовую поддержку для конечных пользователей и окупая таким образом инвестиции в платформу.

Cruthaíodh OpenShift 4 sa chaoi is go soláthrófar an cumas an córas a nuashonrú go caothúil ar feadh shaolré iomlán an ardáin (le haghaidh leaganacha 4.X) do gach príomhsholáthraí ríomhaireachta scamall, ardáin fíorúlaithe agus fiú córais miotail lom. Chun seo a dhéanamh, ní mór nóid a chruthú ar bhonn eilimintí idirmhalartaithe. Nuair a éilíonn braisle leagan nua de Kubernetes, faigheann sé an leagan comhfhreagrach de CRI-O ar CoreOS freisin. Ós rud é go bhfuil an leagan CRI-O ceangailte go díreach le Kubernetes, simplíonn sé seo go mór aon iomalartaithe chun críocha tástála, fabhtcheartaithe nó tacaíochta. Ina theannta sin, laghdaíonn an cur chuige seo costais d’úsáideoirí deiridh agus Red Hat.

Это принципиально новый взгляд на кластеры Kubernetes, который закладывает основу для планирования новых весьма полезных и привлекательных функций. CRI-O (проект открытого контейнера Container Runtime Interface — Open Container Initiative, сокращенно CRI-OCI) оказался наиболее удачным выбором для массового создания узлов, которое необходимо для работы с OpenShift. CRI-O придет на смену использовавшемуся ранее движку Docker, предлагая пользователям OpenShift eacnamaíoch, cobhsaí, simplí agus leadránach – да, вы не ослышались – скучный контейнерный движок, созданный специально для работы с Kubernetes.

Domhan na gcoimeádán oscailte

Tá an domhan ag bogadh i dtreo coimeádáin oscailte le fada an lá. Cibé i Kubernetes, nó ag leibhéil níos ísle, caighdeáin coimeádáin a fhorbairt éiceachóras nuálaíochta ag gach leibhéal dá bharr.

Thosaigh sé ar fad le cruthú an Tionscnaimh Gabhdáin Oscailte i mí an Mheithimh 2015. Ag an gcéim luath seo den obair, foirmíodh sonraíochtaí coimeádáin образа (image) и среды исполнения (runtime). Это позволило гарантировать, что инструменты могут использовать единый стандарт íomhánna coimeádán agus formáid aontaithe chun oibriú leo. Cuireadh sonraíochtaí leis níos déanaí дистрибуции (distribution), rud a ligeann d'úsáideoirí a roinnt go héasca íomhánna coimeádán.

Ansin d'fhorbair pobal Kubernetes caighdeán amháin do chomhéadan inphlocáilte, ar a dtugtar Comhéadan Am Rite Coimeádán (CRI). A bhuíochas leis seo, bhí úsáideoirí Kubernetes in ann innill éagsúla a nascadh le bheith ag obair le coimeádáin chomh maith le Docker.

Chonaic innealtóirí ag Red Hat agus Google gá sa mhargadh le haghaidh inneall coimeádán a d'fhéadfadh glacadh le hiarratais Kubelet thar phrótacal CRI agus thug siad isteach coimeádáin a bhí ag luí leis na sonraíochtaí OCI a luaitear thuas. Mar sin появился OCID. Но позвольте, ведь мы же сказали, что этот материал будет посвящен CRI-O? На самом деле так и есть, просто с выпуском leagan 1.0 проект был переименован в CRI-O.

Fig. 1.

Coimeádán go dtí an iompair: tá CRI-O réamhshocraithe anois in OpenShift Container Platform 4

Nuálaíocht le CRI-O agus CoreOS

Le seoladh an ardán OpenShift 4, athraíodh é inneall coimeádán, используемый в платформе по умолчанию, и на смену Docker пришел CRI-O, предложивший экономичную, стабильную, простую и скучную среду для запуска контейнера, которая развивается параллельно с Kubernetes. Это значительно упрощает поддержку и конфигурацию кластера. Конфигурирование контейнерного движка и хоста, а также управление ими становится автоматизированной в рамках OpenShift 4.

Стоп, как это?

Sin ceart, le teacht OpenShift 4, ní gá a thuilleadh ceangal le hóstach aonair agus inneall coimeádán a shuiteáil, stóráil a chumrú, freastalaithe cuardaigh a chumrú nó líonra a chumrú. Tá an t-ardán OpenShift 4 athdhearadh go hiomlán chun úsáid a bhaint as an Creat Oibreoir ní hamháin i dtéarmaí feidhmchláir úsáideoirí deiridh, ach freisin i dtéarmaí oibríochtaí bunúsacha ar leibhéal an ardáin mar íomhánna a imscaradh, an córas a chumrú, nó nuashonruithe a shuiteáil.

Cheadaigh Kubernetes i gcónaí d'úsáideoirí feidhmchláir a bhainistiú tríd an stát atá ag teastáil a shainiú agus a úsáid rialtóirí, a chinntiú go bhfuil an stát iarbhír ag teacht leis an spriocstát chomh gar agus is féidir. seo stát sprice agus cur chuige an stáit iarbhír osclaíonn sé deiseanna iontacha ó thaobh na forbartha agus na n-oibríochtaí araon. Is féidir le forbróirí an stát riachtanach a shainiú trí cuir ar aghaidh é оператору в виде YAML или JSON файла, а затем оператор может создать в эксплуатационной среде необходимый экземпляр приложения, при этом рабочее состояние этого экземпляра будет полностью соответствовать заданному.

Trí úsáid a bhaint as Oibreoirí san ardán, tugann OpenShift 4 an paradigm nua seo (ag baint úsáide as an gcoincheap maidir le staid shocraithe agus iarbhír) le bainistíocht RHEL CoreOS agus CRI-O. Déantar na tascanna a bhaineann le leaganacha den chóras oibriúcháin agus inneall coimeádán a chumrú agus a bhainistiú a uathoibriú ag baint úsáide as an gceann ar a dtugtar Oibreoir Cumraíochta Meaisín (MCO). Déanann MCO obair an riarthóra braisle a shimpliú go mór, go bunúsach uathoibriú na gcéimeanna deiridh den suiteáil, chomh maith le hoibríochtaí iar-shuiteála ina dhiaidh sin (oibríochtaí an dara lá). Fágann sé seo go léir gur ardán scamall fíor é OpenShift 4. Rachaimid isteach anseo beagán níos déanaí.

Coimeádáin ag rith

У пользователей была возможность использовать движок CRI-O в платформе OpenShift начиная с версии 3.7 в статусе Tech Preview и с версии 3.9 в статусе Generally Available (поддерживается в настоящее время). Кроме того, Red Hat массово использует CRI-O chun ualaí oibre táirgeachta a rith в OpenShift Online начиная с версии 3.10. Все это позволило команде, работающей над CRI-O, получить огромный опыт массового запуска контейнеров на крупных кластерах Kubernetes. Чтобы получить базовые представления о том, как Kubernetes использует CRI-O, давайте рассмотрим следующую иллюстрацию, на которой показан принцип работы архитектуры.

Rís. 2. Conas a oibríonn coimeádáin i mbraisle Kubernetes

Coimeádán go dtí an iompair: tá CRI-O réamhshocraithe anois in OpenShift Container Platform 4

Déanann CRI-O cruthú óstach coimeádán nua a shimpliú tríd an mbarrleibhéal iomlán a shioncronú nuair a bhíonn nóid nua á dtosú, agus nuair a bhíonn leaganacha nua den ardán OpenShift á scaoileadh. Ligeann athbhreithniú ar an ardán iomlán do nuashonruithe idirbheartaíochta/rolladh siar, agus cuireann sé cosc ​​freisin ar spleáchais idir croí-eireaball an choimeádáin, inneall coimeádáin, nóid (Kubelets) agus nód Máistir Kubernetes. Trí na comhpháirteanna ardán go léir a bhainistiú go lárnach, le rialú agus leagan, tá cosán soiléir i gcónaí ó stát A go stát B. Simplíonn sé seo an próiseas nuashonraithe, feabhsaíonn sé slándáil, feabhsaíonn sé tuairisciú feidhmíochta, agus cabhraíonn sé le costas nuashonruithe agus suiteálacha nua a laghdú. .

Cumhacht na n-eilimintí athsholáthair a léiriú

Как было упомянуто ранее, использование Machine Config Operator для управления хостом контейнера и контейнерным движком в OpenShift 4 обеспечивает новый уровень автоматизации, который не был возможен на платформе Kubernetes ранее. Чтобы продемонстрировать новые возможности, мы покажем, как вы могли бы вносить изменения в файл crio.conf. Чтобы не запутаться в терминологии, старайтесь сконцентрироваться на результатах.

Сначала, давайте создадим то, что называется конфигурацией среды исполнения контейнера – Container Runtime Config. Считайте, что это некий ресурс Kubernetes, который представляет конфигурацию для CRI-O. В действительности же это специализированная версия того, что называется MachineConfig, что представляет собой любую конфигурацию, развертываемую на машине RHEL CoreOS в рамках кластера OpenShift.

Cruthaíodh an acmhainn saincheaptha seo, ar a dtugtar ContainerRuntimeConfig, chun é a dhéanamh níos éasca do riarthóirí braisle CRI-O a chumrú. Tá an uirlis seo cumhachtach go leor nach féidir é a chur i bhfeidhm ach ar nóid áirithe ag brath ar na socruithe MachineConfigPool. Smaoinigh air mar ghrúpa meaisíní a fhreastalaíonn ar an gcuspóir céanna.

Tabhair faoi deara an dá líne dheireanacha atáimid chun athrú sa chomhad /etc/crio/crio.conf. Tá an dá líne seo an-chosúil leis na línte sa chomhad crio.conf, is iad sin:

vi ContainerRuntimeConfig.yaml

Conclúid:

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

Anois, déanaimis an comhad seo a bhrú chuig braisle Kubernetes agus seiceáil gur cruthaíodh é i ndáiríre. Tabhair faoi deara go bhfuil an oibríocht díreach mar an gcéanna le haon acmhainn Kubernetes eile:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Conclúid:

NAME              AGE
set-log-and-pid   22h

Nuair a bheidh an ContainerRuntimeConfig cruthaithe againn, ní mór dúinn ceann de na MachineConfigPools a mhodhnú chun a chur in iúl do Kubernetes go dteastaíonn uainn an chumraíocht seo a chur i bhfeidhm ar ghrúpa meaisíní ar leith sa bhraisle. Sa chás seo athróimid an MachineConfigPool do na nóid mháistir:

oc edit MachineConfigPool/master

Conclúid (ar mhaithe le soiléireacht, fágtar an príomhbhunús):

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

Ag an bpointe seo, tosaíonn MCO ag cruthú comhad crio.conf nua don bhraisle. Sa chás seo, is féidir an comhad cumraíochta críochnaithe go hiomlán a fheiceáil ag baint úsáide as an Kubernetes API. Cuimhnigh, níl in ContainerRuntimeConfig ach leagan speisialaithe de MachineConfig, ionas gur féidir linn an toradh a fheiceáil trí bhreathnú ar na línte ábhartha i MachineConfigs:

oc get MachineConfigs | grep rendered

Conclúid:

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

Tabhair faoi deara le do thoil gur leagan níos nuaí ná na cumraíochtaí bunaidh a bhí sa chomhad cumraíochta a tháinig as do na máistirnóid. Chun féachaint air, rith an t-ordú seo a leanas. Le linn dúinn a rith, tugaimid faoi deara gurb é seo, b'fhéidir, ceann de na cinn is fearr i stair 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

Conclúid:

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’

Conclúid:

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

Rinneadh na hathruithe seo go léir ar an mbraisle gan fiú SSH a rith. Rinneadh an obair ar fad trí rochtain a fháil ar mháistir nód Kuberentes. Is é sin, ní raibh na paraiméadair nua seo cumraithe ach amháin ar mháistir-nóid. Níor athraigh na nóid oibrithe, rud a léiríonn na buntáistí a bhaineann le modheolaíocht Kubernetes maidir le stáit shonraithe agus iarbhír a úsáid maidir le hóstach coimeádáin agus innill coimeádán le heilimintí idirmhalartaithe.

Léiríonn an sampla thuas an cumas athruithe a dhéanamh ar bhraisle beag OpenShift Container Platform 4 le trí nód táirgeachta nó braisle táirgthe ollmhór le 3000 nóid. In aon chás, beidh an méid oibre mar an gcéanna - agus an-bheag - ach an comhad ContainerRuntimeConfig a chumrú, agus lipéad amháin a athrú i MachineConfigPool. Agus is féidir leat é seo a dhéanamh le haon leagan den OpenShift Container Platform 4.X ag rith Kubernetes ar feadh a shaolré.

Зачастую технологические компании развиваются настолько быстро, что мы не в состоянии объяснить, почему мы выбираем те или иные технологии для базовых компонентов. Контейнерные движки исторически были тем компонентом, с которым пользователи взаимодействуют напрямую. Поскольку популярность контейнеров закономерно начиналась с появления контейнерных движков, пользователи нередко проявляют к ним заинтересованность. Это еще одна причина, почему Red Hat остановила свой выбор на CRI-O. Контейнеры развиваются, при этом сегодня основное внимание уделяется оркестровке, и мы пришли к выводу, что CRI-O обеспечивает наилучший опыт при работе с OpenShift 4.

Foinse: will.com

Add a comment