Sets'oants'o sa ho tsamaisa thepa: CRI-O e se e le ea kamehla ho OpenShift Container Platform 4

Platform Sethala sa Red Hat OpenShift Container 4 e o lumella ho ntlafatsa tlhahiso mabotho a ho tsamaisa lijana, ho kenyeletsoa le lits'ebetsong tsa lits'ebeletso tsa lits'ebeletso tsa maru, li-platform tsa virtualization kapa lits'ebetsong tsa tšepe tse se nang letho. Ho theha sethala se thehiloeng marung e le kannete, re ne re tlameha ho nka taolo e tiileng ea likarolo tsohle tse sebelisitsoeng mme ka hona ho eketsa ts'epo ea ts'ebetso e rarahaneng ea automation.

Sets'oants'o sa ho tsamaisa thepa: CRI-O e se e le ea kamehla ho OpenShift Container Platform 4

Tharollo e totobetseng e ne e le ho sebelisa Red Hat Enterprise Linux CoreOS (e fapaneng ea Red Hat Enterprise Linux) le CRI-O e le maemo, 'me ke ka lebaka lena ...

Kaha sehlooho sa ho tsamaea ka sekepe ke ntho e ntle haholo bakeng sa ho fumana li-analogies ha u hlalosa mosebetsi oa Kubernetes le lijana, a re leke ho bua ka mathata a khoebo ao CoreOS le CRI-O ba a rarollang, ho sebelisa mohlala. Liqapi tsa Brunel bakeng sa tlhahiso ea li-rigging blocks. Ka 1803, Marc Brunel o ile a fuoa mosebetsi oa ho hlahisa li-block tsa 100 bakeng sa litlhoko tsa sesole sa metsing sa Brithani se ntseng se hōla. Rigging block ke mofuta oa lithapo tse sebelisetsoang ho hokela liropo holim'a liseile. Ho fihlela qalong ea lekholo la bo19 la lilemo, li-block tsena li ne li etsoa ka letsoho, empa Brunel o ile a khona ho iketsetsa tlhahiso 'me a qala ho hlahisa li-blocks tse tloaelehileng ho sebelisa lisebelisoa tsa mochine. Automation ea ts'ebetso ena e ne e bolela hore li-blocks tse hlahisitsoeng li ne li tšoana hantle, li ka nkeloa sebaka habonolo haeba li robehile, 'me li ka hlahisoa ka bongata.

Joale ak'u nahane hore na Brunel o ne a tlameha ho etsa mosebetsi ona bakeng sa mefuta e fapaneng ea likepe tse 20 (liphetolelo tsa Kubernetes) le bakeng sa lipolanete tse hlano tse fapaneng tse nang le maqhubu a leoatle le meea e fapaneng ka ho feletseng (bafani ba maru). Ho phaella moo, ho ne ho hlokahala hore likepe tsohle (lihlopha tsa OpenShift), ho sa tsotellehe lipolanete tseo ho tsamaisoang ho tsona, ho ea ka pono ea batsamaisi (basebetsi ba laolang ts'ebetso ea lihlopha) ba itšoare ka tsela e tšoanang. Ho tsoela pele ka papiso ea leoatle, batsamaisi ba likepe ha ba tsotelle ho hang hore na ke mefuta efe ea li-rigging blocks (CRI-O) e sebelisoang likepeng tsa bona - ntho e ka sehloohong ho bona ke hore li-blocks tsena li matla ebile li ka tšeptjoa.

OpenShift 4, joalo ka sethala sa maru, e tobane le phephetso e ts'oanang haholo ea khoebo. Li-node tse ncha li tlameha ho etsoa ka nako ea ho theha lihlopha, ha ho ka ba le ho hlōleha ho e 'ngoe ea li-node, kapa ha ho lekanya sehlopha. Ha node e ncha e thehoa 'me e qalisoa, likarolo tsa bohlokoa tsa moamoheli, ho kenyeletsoa CRI-O, li tlameha ho hlophisoa ka nepo. Joalo ka tlhahiso efe kapa efe, "lisebelisoa tse tala" li tlameha ho fanoa qalong. Tabeng ea likepe, thepa e tala ke tšepe le lehong. Leha ho le joalo, molemong oa ho theha moamoheli bakeng sa ho tsamaisa lijana ka har'a sehlopha sa OpenShift 4, o hloka ho ba le lifaele tsa tlhophiso le li-server tse fanoeng ke API joalo ka kenyelletso. Joale OpenShift e tla fana ka boemo bo hlokehang ba boiketsetso ho pholletsa le potoloho eohle ea bophelo, e fana ka ts'ehetso e hlokahalang ea sehlahisoa ho basebelisi ba ho qetela 'me kahoo e khutlise matsete sethaleng.

OpenShift 4 e bōpiloe ka tsela ea ho fana ka bokhoni ba ho ntlafatsa tsamaiso ka mokhoa o bonolo ho pholletsa le nako eohle ea bophelo ea sethaleng (bakeng sa liphetolelo tsa 4.X) bakeng sa bafani bohle ba ka sehloohong ba k'homphieutha ea maru, li-platform tsa virtualization esita le lisebelisoa tsa tšepe tse se nang letho. Ho etsa sena, li-node li tlameha ho etsoa motheong oa lintho tse feto-fetohang. Ha sehlopha se hloka mofuta o mocha oa Kubernetes, se boetse se fumana mofuta o lumellanang oa CRI-O ho CoreOS. Kaha mofuta oa CRI-O o hokahane ka kotloloho le Kubernetes, sena se nolofatsa litumello life kapa life bakeng sa liteko, ho rarolla mathata, kapa ho tšehetsa merero. Ho phaella moo, mokhoa ona o fokotsa litšenyehelo bakeng sa basebelisi ba ho qetela le Red Hat.

Ona ke mokhoa o mocha oa ho nahana ka lihlopha tsa Kubernetes mme o rala motheo oa ho rala likarolo tse ncha tse bohlokoa haholo. CRI-O (Container Runtime Interface - Open Container Initiative, e khutsufalitsoeng CRI-OCI) e bile khetho e atlehileng ka ho fetisisa bakeng sa ho theoa ha li-node tse hlokahalang ho sebetsa le OpenShift. CRI-O e tla nkela sebaka sa enjine ea Docker e neng e sebelisoa pele, e fanang ka basebelisi ba OpenShift e moruo, e tsitsitseng, e bonolo le e tenang - ee, u utloile hantle - enjene ea sejana e tenang e etselitsoeng ho sebetsa le Kubernetes.

Lefatše la lijana tse bulehileng

Lefatše esale le lebile ho lijana tse bulehileng ka nako e telele. Ebang ke Kubernetes, kapa maemong a tlase, ntshetsopele ya maemo a ditshelo e fella ka tsamaiso ea tikoloho ea popontshwa maemong ohle.

Tsohle li qalile ka ho theoa ha Open Containers Initiative ka Phuptjane 2015. Nakong ena ea pele ea mosebetsi, ho ile ha etsoa litlhaloso tsa setshelo setšoantšo и tikoloho ea nako ea ho sebetsa. Sena se ne se tiisa hore lisebelisoa li ka sebelisa tekanyetso e le 'ngoe litšoantšo tsa setshelo le sebopeho se kopaneng sa ho sebetsa le bona. Litlhaloso li ile tsa kenyelletsoa hamorao kabo, e lumellang basebelisi ho arolelana habonolo litšoantšo tsa setshelo.

Sechaba sa Kubernetes se ile sa theha tekanyetso e le 'ngoe bakeng sa sehokelo sa pluggable, se bitsoang Container Runtime Interface (CRI). Ka lebaka la sena, basebelisi ba Kubernetes ba khonne ho hokahanya lienjineri tse fapaneng ho sebetsa le lijana ho kenyelletsa Docker.

Baenjiniere ba Red Hat le Google ba ile ba bona tlhokahalo ea 'maraka bakeng sa mochine oa setshelo o ka amohelang likōpo tsa Kubelet holim'a protocol ea CRI le ho hlahisa lijana tse lumellanang le litlhaloso tsa OCI tse boletsoeng ka holimo. Kahoo OCID e hlahile. Empa ntšoarele, na ha rea ​​​​ka ra re thepa ee e tla neheloa ho CRI-O? Ha e le hantle ho joalo, feela ka tokollo mofuta 1.0 morero o ile oa rehoa CRI-O.

Setšoantšo: leshome le metso e mehlano.

Sets'oants'o sa ho tsamaisa thepa: CRI-O e se e le ea kamehla ho OpenShift Container Platform 4

Boqapi ka CRI-O le CoreOS

Ka ho qalisoa ha sethala sa OpenShift 4, se ile sa fetoloa enjene ea setshelo, e sebelisitsoeng ka ho sa feleng sethaleng, 'me Docker e ile ea nkeloa sebaka ke CRI-O, e fana ka tikoloho e theko e tlaase, e tsitsitseng, e bonolo le e tenang bakeng sa ho tsamaisa setshelo se hlahang ka tsela e tšoanang le Kubernetes. Sena se nolofatsa haholo tšehetso ea lihlopha le tlhophiso. Tlhophiso ea enjene ea setshelo le moamoheli, hammoho le botsamaisi ba bona, e fetoha ka har'a OpenShift 4.

Ema, see se joang?

Ke 'nete, ka ho fihla ha OpenShift 4, ha ho sa na tlhokahalo ea ho hokela ho batho ba amohelang batho ka bomong le ho kenya enjene ea setshelo, ho lokisa polokelo, ho lokisa li-server kapa ho lokisa marang-rang. Sethala sa OpenShift 4 se hlophisitsoe bocha hore se sebelisoe Moralo oa Opereishene eseng feela mabapi le lits'ebetso tsa basebelisi ba ho qetela, empa hape le mabapi le ts'ebetso ea mantlha ea sethala joalo ka ho tsamaisa litšoantšo, ho hlophisa sistimi, kapa ho kenya liapdeite.

Kubernetes esale e lumella basebelisi ho laola lits'ebetso ka ho hlalosa boemo boo ba bo batlang le ho bo sebelisa balaoli, ho etsa bonnete ba hore naha ea sebele e lumellana le boemo bo reretsoeng ka hohle kamoo ho ka khonehang. Sena boemo ba sepheo le mokhoa oa sebele oa naha e bula menyetla e meholo ho tsoa ponong ea nts'etsopele le ts'ebetso. Bahlahisi ba ka hlalosa boemo bo hlokahalang ka ho e fetisetse ho opareitara ka sebopeho sa faele ea YAML kapa ea JSON, ebe opareitara e ka etsa mohlala oa kopo o hlokahalang tikolohong ea tlhahiso, mme boemo ba ts'ebetso ea mohlala ona bo tla lumellana ka botlalo le bo boletsoeng.

Ka ho sebelisa Operators sethaleng, OpenShift 4 e tlisa paradigm ena e ncha (ho sebelisa mohopolo oa sete le boemo ba sebele) ho tsamaiso ea RHEL CoreOS le CRI-O. Mesebetsi ea ho hlophisa le ho laola mefuta ea sistimi ea ts'ebetso le enjene ea setshelo e etsoa ka boiketsetso ho sebelisoa seo ho thoeng ke Mochine oa Config Operator (MCO). MCO e nolofatsa haholo mosebetsi oa motsamaisi oa sehlopha, ha e le hantle e iketsetsa mekhahlelo ea ho qetela ea ho kenya, hammoho le ts'ebetso e latelang ea ho kenya (letsatsi la bobeli). Sena sohle se etsa hore OpenShift 4 e be sethala sa maru sa nnete. Re tla kena tabeng ena hamorao.

Lijana tse mathang

Basebelisi ba bile le monyetla oa ho sebelisa enjene ea CRI-O sethaleng sa OpenShift ho tloha phetolelong ea 3.7 ho boemo ba Tech Preview le ho tloha ho mofuta oa 3.9 boemong bo Fumanehang ka Kakaretso (e tšehetsoeng hona joale). Ho feta moo, Red Hat e sebelisoa haholo CRI-O bakeng sa ho tsamaisa mesebetsi e mengata ea tlhahiso ho OpenShift Online ho tloha ka mofuta oa 3.10. Sena sohle se ile sa lumella sehlopha se sebetsang ho CRI-O ho fumana phihlelo e batsi ea ho kenya lisebelisoa tse ngata tsa lihlopha tse kholo tsa Kubernetes. Ho fumana kutloisiso ea mantlha ea hore na Kubernetes o sebelisa CRI-O joang, a re shebeng papiso e latelang, e bonts'ang hore na moaho o sebetsa joang.

Raese. 2. Lijana li sebetsa joang sehlopheng sa Kubernetes

Sets'oants'o sa ho tsamaisa thepa: CRI-O e se e le ea kamehla ho OpenShift Container Platform 4

CRI-O e nolofatsa ho theoa ha li-container tse ncha ka ho hokahanya boemo bohle bo holimo ha ho qala li-node tse ncha, le ha ho lokolloa liphetolelo tse ncha tsa sethala sa OpenShift. Phetoho ea sethala kaofela e lumella lintlafatso / li-rollback tsa transaction, hape e thibela ho putlama ho its'etleha lipakeng tsa mohatla oa sets'oants'o, enjene ea setshelo, li-node (Kubelets) le node ea Kubernetes Master. Ka ho laola likarolo tsohle tsa sethala, ka taolo le phetolelo, kamehla ho na le tsela e hlakileng ho tloha ho A ho ea sebakeng sa B. Sena se nolofatsa ts'ebetso ea ntlafatso, se ntlafatsa ts'ireletso, se ntlafatsa tlaleho ea ts'ebetso, 'me se thusa ho fokotsa litšenyehelo tsa lisebelisoa le ho kenya liphetolelo tse ncha. .

Ho bontsha matla a dielemente tse nchafatsang

Joalokaha ho boletsoe pejana, ho sebelisa Machine Config Operator ho laola mochine oa setshelo le mochine oa setshelo ho OpenShift 4 e fana ka boemo bo bocha ba ho iketsetsa boits'oaro bo neng bo sa khonehe pele ho sethaleng sa Kubernetes. Ho hlahisa likarolo tse ncha, re tla u bontša hore na u ka etsa liphetoho joang faeleng ea crio.conf. Ho qoba ho ferekanngoa ke mantsoe, leka ho tsepamisa maikutlo liphellong.

Taba ea pele, a re theheng se bitsoang tlhophiso ea nako ea setshelo - Container Runtime Config. Nahana ka eona e le sesebelisoa sa Kubernetes se emelang tlhophiso ea CRI-O. Ha e le hantle, ke mofuta o ikhethileng oa ntho e bitsoang MachineConfig, e leng tlhophiso efe kapa efe e romelloang mochining oa RHEL CoreOS e le karolo ea sehlopha sa OpenShift.

Sesebelisoa sena sa tloaelo, se bitsoang ContainerRuntimeConfig, se entsoe ho nolofalletsa batsamaisi ba lihlopha ho hlophisa CRI-O. Sesebelisoa sena se matla hoo se ka sebelisoang ho li-node tse itseng ho latela litlhophiso tsa MachineConfigPool. Nahana ka eona e le sehlopha sa mechine e sebeletsang morero o tšoanang.

Hlokomela mela e 'meli ea ho qetela eo re tla e fetola faeleng ea /etc/crio/crio.conf. Mela ena e 'meli e tšoana haholo le mela e faeleng ea crio.conf, ke:

vi ContainerRuntimeConfig.yaml

Qetello:

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

Joale ha re sutumelleng faele ena sehlopheng sa Kubernetes 'me re hlahlobe hore na ehlile e entsoe. Ka kopo hlokomela hore ts'ebetso e ts'oana hantle le lisebelisoa tse ling tsa Kubernetes:

oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig

Qetello:

NAME              AGE
set-log-and-pid   22h

Ha re se re thehile ContainerRuntimeConfig, re hloka ho fetola e 'ngoe ea MachineConfigPools ho bontša Kubernetes hore re batla ho sebelisa tlhophiso ena ho sehlopha se itseng sa mechini sehlopheng. Tabeng ena re tla fetola MachineConfigPool bakeng sa li-node tse kholo:

oc edit MachineConfigPool/master

Qetello (bakeng sa ho hlaka, moelelo oa mantlha o setse):

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

Ka nako ena, MCO e qala ho theha faele e ncha ea crio.conf bakeng sa sehlopha. Tabeng ena, faele ea tlhophiso e felileng ka botlalo e ka bonoa ho sebelisoa Kubernetes API. Hopola, ContainerRuntimeConfig ke mofuta o ikhethileng oa MachineConfig, kahoo re ka bona sephetho ka ho sheba mela e amehang ho MachineConfigs:

oc get MachineConfigs | grep rendered

Qetello:

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

Ka kopo hlokomela hore faele ea tlhophiso e hlahisitsoeng bakeng sa li-master node e bile mofuta o mocha ho feta litlhophiso tsa mantlha. Ho e sheba, tsamaisa taelo e latelang. Ha re feta, rea hlokomela hore mohlomong ena ke e 'ngoe ea li-line-line tse ntle ka ho fetisisa nalaneng ea 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

Qetello:

pids_limit = 2048

Joale a re etse bonnete ba hore tlhophiso e sebelisitsoe ho li-node tsohle tsa master. Pele re fumana lethathamo la li-node sehlopheng:

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

Joale a re shebeng faele e kentsoeng. U tla bona hore faele e nchafalitsoe ka litekanyetso tse ncha tsa litaelo tsa pid le debug tseo re li hlalositseng mohloling oa ContainerRuntimeConfig. Elegance ka boeona:

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

Qetello:

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

Liphetoho tsena kaofela ho sehlopha li entsoe ntle le ho tsamaisa SSH. Mosebetsi oohle o ne o etsoa ka ho fihlella node e kholo ea Kuberentes. Ke hore, li-parameter tsena tse ncha li ne li hlophisitsoe feela ka li-node tse kholo. Li-node tsa basebetsi ha lia fetoha, tse bonts'ang melemo ea mokhoa oa Kubernetes oa ho sebelisa linaha tse boletsoeng le tsa 'nete mabapi le li-container le lienjineri tsa lijana tse nang le likarolo tse feto-fetohang.

Mohlala o ka holimo o bontša bokhoni ba ho etsa liphetoho sehlopheng se senyenyane sa OpenShift Container Platform 4 se nang le li-node tse tharo tsa tlhahiso kapa sehlopha se seholo sa tlhahiso se nang le li-node tse 3000. Leha ho le joalo, palo ea mosebetsi e tla tšoana - mme e nyane haholo - lokisa feela faele ea ContainerRuntimeConfig, 'me u fetole label e le' ngoe ho MachineConfigPool. 'Me u ka etsa sena ka mofuta ofe kapa ofe oa OpenShift Container Platform 4.X e tsamaisang Kubernetes ho pholletsa le bophelo ba eona.

Hangata lik'hamphani tsa theknoloji li fetoha ka potlako hoo re sitoang ho hlalosa hore na ke hobane'ng ha re khetha theknoloji e itseng bakeng sa likarolo tsa motheo. Lienjineri tsa li-container esale e le karolo eo basebelisi ba sebelisanang le eona ka kotloloho. Kaha ho tsebahala ha lijana ka tlhaho ho qalile ka ho fihla ha lienjineri tsa lijana, basebelisi ba atisa ho bontša thahasello ho tsona. Lena ke lebaka le leng le entseng hore Red Hat e khethe CRI-O. Lits'oants'o li ntse li tsoela pele ho tsepamisitsoe maikutlo ho orchestration, 'me re fumane hore CRI-O e fana ka boiphihlelo bo botle ha o sebetsa le OpenShift 4.

Source: www.habr.com

Eketsa ka tlhaloso