Thawv rau Conveyor: CRI-O tam sim no nyob hauv OpenShift Container Platform 4

Platform Kaus mom Liab OpenShift Thawv Platform 4 tso cai rau koj los txhim kho cov creation hosts rau deploy thawv, suav nrog hauv kev tsim kho vaj tse ntawm cov chaw muab kev pabcuam huab, ntawm virtualization platforms lossis hauv cov tshuab tsis muaj hlau. Txhawm rau tsim kom muaj huab-raws li platform tiag tiag, peb yuav tsum tau tswj hwm tag nrho cov ntsiab lus siv thiab yog li ua kom muaj kev ntseeg siab ntawm cov txheej txheem automation nyuaj.

Thawv rau Conveyor: CRI-O tam sim no nyob hauv OpenShift Container Platform 4

Qhov kev daws teeb meem yog siv Red Hat Enterprise Linux CoreOS (ib qho txawv ntawm Red Hat Enterprise Linux) thiab CRI-O raws li tus qauv, thiab ntawm no yog vim li cas ...

Txij li thaum lub ntsiab lus ntawm kev caij nkoj yog ib qho zoo heev rau kev nrhiav cov piv txwv thaum piav qhia txog kev ua haujlwm ntawm Kubernetes thiab ntim khoom, cia peb sim tham txog cov teeb meem kev lag luam uas CoreOS thiab CRI-O daws, siv piv txwv. Brunel's inventions rau zus tau tej cov rigging blocks. Xyoo 1803, Marc Brunel tau ua haujlwm los tsim 100 rigging blocks rau cov kev xav tau ntawm cov tub rog British loj hlob. Lub rigging block yog ib hom kev rigging uas yog siv los txuas cov hlua rau sails. Txog rau thaum pib ntawm lub xyoo pua 19th, cov blocks no tau ua los ntawm tes, tab sis Brunel tau tswj hwm kev tsim khoom thiab pib tsim cov txheej txheem uas siv cov cuab yeej siv tshuab. Automation ntawm cov txheej txheem no txhais tau hais tias cov txiaj ntsig tau zoo ib yam, tuaj yeem hloov tau yooj yim yog tias tawg, thiab tuaj yeem tsim ntau ntau.

Tam sim no xav txog yog tias Brunel yuav tsum ua qhov no rau 20 lub nkoj sib txawv (Kubernetes versions) thiab rau tsib lub ntiaj teb sib txawv nrog cov dej hiav txwv sib txawv thiab cua (cov chaw muab huab cua). Tsis tas li ntawd, nws yuav tsum tau hais tias tag nrho cov nkoj (OpenShift pawg), tsis hais lub ntiaj teb nyob rau hauv uas navigation yog nqa tawm, los ntawm qhov pom ntawm tus thawj coj (cov neeg ua haujlwm uas tswj hwm kev ua haujlwm ntawm pawg) coj zoo ib yam. Txhawm rau txuas ntxiv kev sib piv ntawm kev sib tw hauv hiav txwv, cov thawj coj ntawm lub nkoj tsis quav ntsej txhua yam ntawm rigging blocks (CRI-O) siv rau lawv cov nkoj - qhov tseem ceeb rau lawv yog cov blocks no muaj zog thiab txhim khu kev qha.

OpenShift 4, raws li huab platform, ntsib kev sib tw ua lag luam zoo sib xws. Cov nodes tshiab yuav tsum tau tsim thaum lub sij hawm tsim pawg, nyob rau hauv cov kev tshwm sim ntawm ib tug tsis ua hauj lwm nyob rau hauv ib tug ntawm cov nodes, los yog thaum scaling lub pawg. Thaum lub node tshiab tsim thiab pib, cov khoom tseem ceeb ntawm cov tswv cuab, suav nrog CRI-O, yuav tsum tau teeb tsa raws li. Ib yam li lwm yam kev tsim khoom, "cov khoom siv raw" yuav tsum tau muab thaum pib. Hauv cov nkoj, cov khoom siv raw yog hlau thiab ntoo. Txawm li cas los xij, nyob rau hauv cov ntaub ntawv ntawm kev tsim ib tug tswv tsev rau deploying ntim nyob rau hauv ib tug OpenShift 4 pawg, koj yuav tsum muaj configuration ntaub ntawv thiab API-muab servers raws li input. OpenShift tom qab ntawd yuav muab cov qib xav tau ntawm automation thoob plaws tag nrho lub neej voj voog, muab cov khoom tsim nyog txhawb rau cov neeg siv kawg thiab yog li recouping peev hauv lub platform.

OpenShift 4 tau tsim nyob rau hauv xws li ib txoj hauv kev los muab lub peev xwm los hloov kho cov kab ke kom yooj yim thoob plaws lub neej tag nrho ntawm lub platform (rau versions 4.X) rau txhua tus neeg muab kev pabcuam huab loj, virtualization platforms thiab txawm tias liab qab hlau tshuab. Yuav kom ua tau li no, cov nodes yuav tsum tau tsim nyob rau hauv lub hauv paus ntawm interchangeable ntsiab. Thaum ib pawg yuav tsum muaj qhov tshiab ntawm Kubernetes, nws kuj tau txais cov qauv sib xws ntawm CRI-O ntawm CoreOS. Txij li thaum CRI-O version yog khi ncaj qha rau Kubernetes, qhov no yooj yim heev rau txhua qhov kev tso cai rau kev sim, teeb meem, lossis kev txhawb nqa lub hom phiaj. Tsis tas li ntawd, txoj hauv kev no txo ​​cov nqi rau cov neeg siv kawg thiab Red Hat.

Qhov no yog ib txoj hauv kev tshiab ntawm kev xav txog Kubernetes pawg thiab nteg lub hauv paus rau kev npaj qee qhov muaj txiaj ntsig zoo thiab muaj txiaj ntsig tshiab. CRI-O (Container Runtime Interface - Open Container Initiative, abbreviated CRI-OCI) tau dhau los ua qhov kev xaiv zoo tshaj plaws rau kev tsim ntau ntawm cov nodes uas tsim nyog los ua haujlwm nrog OpenShift. CRI-O yuav hloov lub tshuab Docker yav dhau los, muab cov neeg siv OpenShift economical, ruaj khov, yooj yim thiab tho txawv - yog, koj tau hnov ​​​​txog txoj cai - lub tshuab ntim tho txawv tsim tshwj xeeb rau kev ua haujlwm nrog Kubernetes.

Lub ntiaj teb qhib ntim

Lub ntiaj teb tau txav mus rau qhov qhib ntim tau ntev. Txawm nyob rau hauv Kubernetes, los yog nyob rau theem qis, kev txhim kho cov qauv ntim khoom ua rau lub ecosystem ntawm innovation ntawm txhua theem.

Nws tag nrho pib nrog kev tsim ntawm Open Containers Initiative nyob rau lub Rau Hli 2015. Nyob rau theem pib ntawm kev ua haujlwm, cov thawv ntim khoom tau tsim duab ΠΈ runtime ib puag ncig. Qhov no ua kom ntseeg tau tias cov cuab yeej siv tau ib qho qauv ntim cov duab thiab ib qho kev sib koom ua ke rau kev ua haujlwm nrog lawv. Cov lus qhia tshwj xeeb tau ntxiv tom qab kev faib tawm, cia cov neeg siv tau yooj yim sib qhia ntim cov duab.

Lub zej zog Kubernetes tom qab ntawd tau tsim ib tus qauv rau kev sib txuas sib txuas, hu ua Thawv Runtime Interface (CRI). Ua tsaug rau qhov no, cov neeg siv Kubernetes tuaj yeem txuas ntau lub cav los ua haujlwm nrog cov thawv ntxiv rau Docker.

Cov kws ua haujlwm ntawm Red Hat thiab Google pom kev lag luam xav tau rau lub cav ntim khoom uas tuaj yeem lees txais Kubelet cov lus thov dhau ntawm CRI raws tu qauv thiab qhia cov thawv uas tau sib xws nrog OCI cov lus qhia saum toj no. Yog li OCID tshwm sim. Tab sis thov zam txim rau kuv, tsis yog peb hais tias cov khoom no yuav mob siab rau CRI-O? Qhov tseeb nws yog, tsuas yog nrog kev tso tawm version 1.0 Qhov project tau hloov npe CRI-O.

Txhuv. 1

Thawv rau Conveyor: CRI-O tam sim no nyob hauv OpenShift Container Platform 4

Kev tsim kho tshiab nrog CRI-O thiab CoreOS

Nrog rau kev tshaj tawm ntawm OpenShift 4 platform, nws tau hloov pauv thawv cav, siv los ntawm lub neej ntawd hauv lub platform, thiab Docker tau hloov pauv los ntawm CRI-O, muab cov txiaj ntsig zoo, ruaj khov, yooj yim thiab boring ib puag ncig rau kev khiav lub thawv uas txhim kho nrog Kubernetes. Qhov no zoo heev simplifies pawg txhawb nqa thiab teeb tsa. Configuration ntawm lub thawv cav thiab tus tswv tsev, nrog rau lawv cov kev tswj hwm, ua automated hauv OpenShift 4.

Tos, qhov no zoo li cas?

Yog lawm, nrog rau qhov tshwm sim ntawm OpenShift 4, tsis tas yuav tsum txuas mus rau ib tus tswv tsev thiab nruab lub cav ntim khoom, teeb tsa chaw cia, teeb tsa kev tshawb nrhiav servers lossis teeb tsa lub network. Lub OpenShift 4 platform tau raug kho dua tshiab los siv cov Operator Framework Tsis yog tsuas yog hais txog cov neeg siv khoom kawg nkaus xwb, tab sis kuj tseem hais txog kev ua haujlwm ntawm theem pib xws li xa cov duab, teeb tsa lub kaw lus, lossis txhim kho cov hloov tshiab.

Kubernetes ib txwm tso cai rau cov neeg siv los tswj cov ntawv thov los ntawm kev txhais lub xeev xav tau thiab siv cov tswj, kom ntseeg tau tias lub xeev tiag tiag phim lub xeev lub hom phiaj kom ze li sai tau. Qhov no lub hom phiaj lub xeev thiab lub xeev txoj hauv kev qhib lub sijhawm zoo los ntawm kev txhim kho thiab kev ua haujlwm. Cov neeg tsim khoom tuaj yeem txhais lub xeev xav tau los ntawm hla nws rau tus neeg teb xov tooj nyob rau hauv daim ntawv ntawm YAML lossis JSON cov ntaub ntawv, thiab tom qab ntawd tus neeg teb xov tooj tuaj yeem tsim cov ntawv thov uas xav tau hauv qhov chaw tsim khoom, thiab lub xeev kev ua haujlwm ntawm qhov piv txwv no yuav ua tiav raws li qhov teev tseg.

Los ntawm kev siv Cov Neeg Ua Haujlwm hauv lub platform, OpenShift 4 coj cov qauv tshiab no (siv lub tswv yim ntawm kev teeb tsa thiab lub xeev tiag tiag) rau kev tswj hwm ntawm RHEL CoreOS thiab CRI-O. Cov dej num ntawm kev teeb tsa thiab kev tswj hwm versions ntawm lub operating system thiab lub thawv cav yog automated siv lub thiaj li hu ua Tshuab Config Operator (MCO). MCO ua kom yooj yim rau kev ua haujlwm ntawm pawg thawj coj, qhov tseem ceeb ntawm kev ua haujlwm ntawm cov theem kawg ntawm kev teeb tsa, nrog rau kev ua haujlwm tom qab kev teeb tsa (hnub ob txoj haujlwm). Tag nrho cov no ua rau OpenShift 4 muaj tseeb huab platform. Peb mam li nkag rau hauv qhov no me ntsis tom qab.

Khiav ntim

Cov neeg siv tau muaj lub sijhawm los siv lub cav CRI-O hauv OpenShift platform txij li version 3.7 hauv Tech Saib ua ntej thiab los ntawm version 3.9 hauv Cov Txheej Txheem Feem Ntau (tam sim no txhawb). Tsis tas li ntawd, Red Hat siv ntau heev CRI-O rau kev khiav haujlwm ntau lawm hauv OpenShift Online txij li version 3.10. Tag nrho cov no tau tso cai rau pab pawg ua haujlwm ntawm CRI-O kom tau txais kev paub ntau yam hauv cov thawv ntim khoom loj ntawm Kubernetes pawg. Kom tau txais kev nkag siab yooj yim ntawm Kubernetes siv CRI-O li cas, cia peb saib cov lus piav qhia hauv qab no, uas qhia tau hais tias kev ua haujlwm zoo li cas.

Rice. 2. Lub thawv ua haujlwm li cas hauv Kubernetes pawg

Thawv rau Conveyor: CRI-O tam sim no nyob hauv OpenShift Container Platform 4

CRI-O ua kom yooj yim rau kev tsim cov thawv tshiab los ntawm synchronizing tag nrho cov theem saum toj kawg nkaus thaum pib cov nodes tshiab, thiab thaum tso tawm tshiab versions ntawm OpenShift platform. Kev kho dua tshiab ntawm tag nrho lub platform tso cai rau kev hloov pauv hloov pauv / thim rov qab, thiab tseem tiv thaiv kev tsis sib haum xeeb hauv kev vam khom ntawm lub thawv tail core, thawv cav, nodes (Kubelets) thiab Kubernetes Master node. Los ntawm lub hauv paus tswj hwm tag nrho cov txheej txheem platform, nrog kev tswj hwm thiab hloov kho, yeej ib txwm muaj txoj hauv kev tseeb los ntawm xeev A mus rau xeev B. Qhov no ua kom yooj yim cov txheej txheem hloov tshiab, txhim kho kev ruaj ntseg, txhim kho kev tshaj tawm, thiab pab txo tus nqi ntawm kev hloov tshiab thiab kev teeb tsa ntawm cov tshiab versions. .

Ua kom pom lub zog ntawm cov khoom hloov pauv

Raws li tau hais ua ntej, siv Machine Config Operator los tswj lub thawv ntim thiab lub cav ntim hauv OpenShift 4 muab qib tshiab ntawm automation uas yav tas los tsis tuaj yeem ua tau ntawm Kubernetes platform. Txhawm rau ua kom pom cov yam ntxwv tshiab, peb yuav qhia seb koj tuaj yeem hloov pauv li cas rau cov ntaub ntawv crio.conf. Txhawm rau kom tsis txhob tsis meej pem los ntawm cov lus siv, sim ua kom pom tseeb ntawm cov txiaj ntsig.

Ua ntej, cia peb tsim qhov hu ua lub thawv runtime configuration - Thawv Runtime Config. Xav tias nws yog Kubernetes cov peev txheej uas sawv cev rau kev teeb tsa rau CRI-O. Nyob rau hauv qhov tseeb, nws yog ib tug tshwj xeeb version ntawm ib yam dab tsi hu ua MachineConfig, uas yog tej configuration uas yog deployed rau lub RHEL CoreOS tshuab ua ib feem ntawm ib tug OpenShift pawg.

Qhov kev cai no, hu ua ContainerRuntimeConfig, tau tsim los ua kom yooj yim rau cov thawj coj hauv pawg los teeb tsa CRI-O. Cov cuab yeej no muaj zog txaus uas nws tsuas yog siv tau rau qee qhov ntawm nyob ntawm MachineConfigPool chaw. Xav tias nws yog ib pawg ntawm cov tshuab uas ua haujlwm rau tib lub hom phiaj.

Daim ntawv ceeb toom ob kab kawg uas peb yuav hloov pauv hauv cov ntaub ntawv /etc/crio/crio.conf. Ob kab no zoo ib yam li cov kab hauv cov ntaub ntawv crio.conf, lawv yog:

vi ContainerRuntimeConfig.yaml

Xaus:

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

Tam sim no cia peb thawb cov ntaub ntawv no mus rau Kubernetes pawg thiab xyuas tias nws tau tsim tiag tiag. Thov nco ntsoov tias kev ua haujlwm zoo ib yam li nrog rau lwm yam khoom siv Kubernetes:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Xaus:

NAME              AGE
set-log-and-pid   22h

Thaum peb tau tsim lub ContainerRuntimeConfig, peb yuav tsum hloov kho ib qho ntawm MachineConfigPools kom teeb liab rau Kubernetes tias peb xav siv qhov kev teeb tsa no rau ib pawg ntawm cov tshuab hauv pawg. Hauv qhov no peb yuav hloov lub MachineConfigPool rau tus tswv nodes:

oc edit MachineConfigPool/master

Xaus (kom meej meej, lub ntsiab tseem ceeb yog sab laug):

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

Lub sijhawm no, MCO pib tsim cov ntaub ntawv crio.conf tshiab rau pawg. Hauv qhov no, cov ntaub ntawv teeb tsa tiav tiav tuaj yeem pom siv Kubernetes API. Nco ntsoov, ContainerRuntimeConfig tsuas yog ib qho tshwj xeeb ntawm MachineConfig, yog li peb tuaj yeem pom qhov tshwm sim los ntawm kev saib cov kab cuam tshuam hauv MachineConfigs:

oc get MachineConfigs | grep rendered

Xaus:

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

Thov nco ntsoov tias cov ntaub ntawv configuration tshwm sim rau tus tswv nodes yog ib tug tshiab version dua cov thawj configurations. Txhawm rau saib nws, khiav cov lus txib hauv qab no. Nyob rau hauv tas li ntawd, peb nco ntsoov tias qhov no yog tej zaum ib tug ntawm qhov zoo tshaj plaws ib-liners nyob rau hauv keeb kwm ntawm 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

Xaus:

pids_limit = 2048

Tam sim no cia peb ua kom paub tseeb tias qhov kev teeb tsa tau raug siv rau txhua tus tswv ntawm cov nodes. Ua ntej peb tau txais cov npe ntawm cov nodes hauv pawg:

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

Tam sim no cia saib cov ntaub ntawv tau teeb tsa. Koj yuav pom tias cov ntaub ntawv tau hloov kho nrog cov txiaj ntsig tshiab rau pid thiab cov lus qhia debug uas peb tau teev tseg hauv cov khoom siv ContainerRuntimeConfig. Elegance nws tus kheej:

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

Xaus:

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

Tag nrho cov kev hloov pauv no rau pawg tau ua tsis tau txawm tias khiav SSH. Txhua txoj haujlwm tau ua tiav los ntawm kev nkag mus rau Kuberentes tus tswv ntawm node. Ntawd yog, cov kev txwv tshiab no tau teeb tsa tsuas yog ntawm tus tswv nodes. Cov neeg ua haujlwm ntawm cov nodes tsis hloov pauv, uas qhia tau hais tias cov txiaj ntsig ntawm Kubernetes txoj kev siv cov lus teev tseg thiab cov xeev tiag tiag hauv kev sib raug zoo nrog lub thawv hosts thiab thawv cav nrog cov khoom sib hloov.

Cov piv txwv saum toj no qhia tau hais tias muaj peev xwm hloov pauv rau OpenShift Container Platform 4 pawg me me nrog peb cov kab ntau lawm lossis pawg ntau lawm loj nrog 3000 nodes. Txawm li cas los xij, qhov nyiaj ua haujlwm yuav zoo ib yam - thiab tsawg heev - tsuas yog teeb tsa cov ntaub ntawv ContainerRuntimeConfig, thiab hloov ib daim ntawv lo hauv MachineConfigPool. Thiab koj tuaj yeem ua qhov no nrog txhua qhov version ntawm OpenShift Container Platform 4.X khiav Kubernetes thoob plaws hauv nws lub neej.

Feem ntau cov tuam txhab thev naus laus zis hloov pauv sai heev uas peb tsis tuaj yeem piav qhia vim li cas peb xaiv qee yam thev naus laus zis rau cov khoom siv hauv qab. Container engines muaj keeb kwm yog cov khoom uas cov neeg siv cuam tshuam nrog ncaj qha. Txij li thaum muaj koob meej ntawm cov ntim ib txwm pib nrog lub advent ntawm lub thawv cav, cov neeg siv feem ntau pom kev txaus siab rau lawv. Qhov no yog lwm qhov laj thawj vim li cas Red Hat xaiv CRI-O. Cov thawv ntim tau hloov zuj zus nrog kev tsom mus rau tam sim no ntawm kev orchestration, thiab peb tau pom tias CRI-O muab kev paub zoo tshaj plaws thaum ua haujlwm nrog OpenShift 4.

Tau qhov twg los: www.hab.com

Ntxiv ib saib