Platforma
AcÄ«mredzamais risinÄjums bija izmantot Red Hat Enterprise Linux CoreOS (Red Hat Enterprise Linux variantu) un CRI-O kÄ standartu, un lÅ«k, kÄpÄc...
TÄ kÄ burÄÅ”anas tÄma ir ļoti laba, lai atrastu analoÄ£ijas, skaidrojot Kubernetes un konteineru darbu, mÄÄ£inÄsim runÄt par biznesa problÄmÄm, kuras risina CoreOS un CRI-O, izmantojot piemÄru
Tagad iedomÄjieties, ja Brunelam Å”is darbs bÅ«tu jÄveic 20 dažÄdiem kuÄ£u modeļiem (Kubernetes versijas) un piecÄm dažÄdÄm planÄtÄm ar pilnÄ«gi atŔķirÄ«gÄm jÅ«ras straumÄm un vÄjiem (mÄkoÅu nodroÅ”inÄtÄjiem). TurklÄt tika noteikts, ka visiem kuÄ£iem (OpenShift klasteriem) neatkarÄ«gi no planÄtÄm, uz kurÄm tiek veikta navigÄcija, no kapteiÅu (operatoru, kas pÄrvalda kopu darbÄ«bu) viedokļa uzvesties vienÄdi. Turpinot jÅ«rniecÄ«bas analoÄ£iju, kuÄ£u kapteiÅiem ir pilnÄ«gi vienalga, kÄdi takelÄžas bloki (CRI-O) tiek izmantoti uz viÅu kuÄ£iem - viÅiem galvenais, lai Å”ie bloki bÅ«tu spÄcÄ«gi un uzticami.
OpenShift 4 kÄ mÄkoÅa platforma saskaras ar ļoti lÄ«dzÄ«gu biznesa izaicinÄjumu. Jauni mezgli ir jÄizveido klastera izveides laikÄ, kļūmes gadÄ«jumÄ kÄdÄ no mezgliem vai klastera mÄrogoÅ”anas laikÄ. Kad tiek izveidots un inicializÄts jauns mezgls, attiecÄ«gi jÄkonfigurÄ kritiskie resursdatora komponenti, tostarp CRI-O. TÄpat kÄ jebkurÄ citÄ ražoÅ”anÄ, āizejvielasā ir jÄpiegÄdÄ sÄkumÄ. AttiecÄ«bÄ uz kuÄ£iem izejvielas ir metÄls un koks. TomÄr, ja izveidojat resursdatoru konteineru izvietoÅ”anai OpenShift 4 klasterÄ«, kÄ ievadei ir jÄbÅ«t konfigurÄcijas failiem un API nodroÅ”inÄtiem serveriem. PÄc tam OpenShift nodroÅ”inÄs nepiecieÅ”amo automatizÄcijas lÄ«meni visÄ dzÄ«ves ciklÄ, piedÄvÄjot galalietotÄjiem nepiecieÅ”amo produktu atbalstu un tÄdÄjÄdi atmaksÄjot investÄ«cijas platformÄ.
OpenShift 4 tika izveidots tÄ, lai nodroÅ”inÄtu iespÄju Ärti atjauninÄt sistÄmu visÄ platformas dzÄ«ves ciklÄ (versijai 4.X) visiem lielÄkajiem mÄkoÅdatoÅ”anas pakalpojumu sniedzÄjiem, virtualizÄcijas platformÄm un pat tukÅ”a metÄla sistÄmÄm. Lai to izdarÄ«tu, mezgli ir jÄizveido, pamatojoties uz savstarpÄji aizvietojamiem elementiem. Ja klasterim ir nepiecieÅ”ama jauna Kubernetes versija, tÄ saÅem arÄ« atbilstoÅ”o CRI-O versiju operÄtÄjsistÄmÄ CoreOS. TÄ kÄ CRI-O versija ir tieÅ”i saistÄ«ta ar Kubernetes, tas ievÄrojami vienkÄrÅ”o visas permutÄcijas testÄÅ”anas, problÄmu novÄrÅ”anas vai atbalsta nolÅ«kos. TurklÄt Ŕī pieeja samazina galalietotÄju un Red Hat izmaksas.
Å is ir principiÄli jauns domÄÅ”anas veids par Kubernetes klasteriem, un tas ir pamats dažu ļoti noderÄ«gu un pÄrliecinoÅ”u jaunu funkciju plÄnoÅ”anai. CRI-O (Container Runtime Interface - Open Container Initiative, saÄ«sinÄti CRI-OCI) izrÄdÄ«jÄs veiksmÄ«gÄkÄ izvÄle mezglu masveida izveidei, kas nepiecieÅ”ama darbam ar OpenShift. CRI-O aizstÄs iepriekÅ” izmantoto Docker dzinÄju, piedÄvÄjot OpenShift lietotÄjiem
AtvÄrto konteineru pasaule
Pasaule jau ilgu laiku virzÄs uz atvÄrtiem konteineriem. Vai Kubernetes, vai zemÄkos lÄ«meÅos,
Viss sÄkÄs ar Open Containers Initiative izveidi
PÄc tam Kubernetes kopiena izstrÄdÄja vienotu standartu pievienojamam interfeisam, ko sauc
Red Hat un Google inženieri saskatÄ«ja tirgus nepiecieÅ”amÄ«bu pÄc konteinera dzinÄja, kas varÄtu pieÅemt Kubelet pieprasÄ«jumus, izmantojot CRI protokolu, un ieviesa konteinerus, kas bija saderÄ«gi ar iepriekÅ” minÄtajÄm OCI specifikÄcijÄm. TÄtad
Att. 1.
InovÄcija ar CRI-O un CoreOS
LÄ«dz ar OpenShift 4 platformas palaiÅ”anu tÄ tika mainÄ«ta
Pagaidiet, kÄ tas ir?
TieÅ”i tÄ, lÄ«dz ar OpenShift 4 parÄdÄ«Å”anos vairs nav nepiecieÅ”ams izveidot savienojumu ar atseviŔķiem resursdatoriem un instalÄt konteineru dzinÄju, konfigurÄt krÄtuvi, konfigurÄt meklÄÅ”anas serverus vai konfigurÄt tÄ«klu. OpenShift 4 platforma ir pilnÄ«bÄ pÄrveidota, lai izmantotu
Kubernetes vienmÄr ir ļÄvis lietotÄjiem pÄrvaldÄ«t lietojumprogrammas, definÄjot vÄlamo stÄvokli un izmantojot
Izmantojot platformÄ Operatorus, OpenShift 4 nodroÅ”ina Å”o jauno paradigmu (izmantojot kopas un faktiskÄ stÄvokļa jÄdzienu) RHEL CoreOS un CRI-O pÄrvaldÄ«bÄ. OperÄtÄjsistÄmas un konteinera dzinÄja versiju konfigurÄÅ”anas un pÄrvaldÄ«bas uzdevumi tiek automatizÄti, izmantojot t.s
DarbojoŔie konteineri
LietotÄjiem ir bijusi iespÄja izmantot CRI-O dzinÄju OpenShift platformÄ kopÅ” versijas 3.7 tehniskÄ priekÅ”skatÄ«juma statusÄ un no versijas 3.9 statusÄ VispÄrÄ«gi pieejams (paÅ”laik tiek atbalstÄ«ts). TurklÄt Red Hat masveidÄ izmanto
RÄ«si. 2. KÄ konteineri darbojas Kubernetes klasterÄ«
CRI-O vienkÄrÅ”o jaunu konteineru saimniekdatoru izveidi, sinhronizÄjot visu augstÄko lÄ«meni, inicializÄjot jaunus mezglus un izlaižot jaunas OpenShift platformas versijas. Visas platformas pÄrskatÄ«Å”ana ļauj veikt darÄ«jumu atjauninÄjumus/atcelÅ”anu, kÄ arÄ« novÄrÅ” strupceļu atkarÄ«bas starp konteinera astes kodolu, konteinera dzinÄju, mezgliem (Kubelets) un Kubernetes Master mezglu. CentralizÄti pÄrvaldot visus platformas komponentus ar vadÄ«bu un versiju veidoÅ”anu, vienmÄr ir skaidrs ceļŔ no stÄvokļa A uz stÄvokli B. Tas vienkÄrÅ”o atjauninÄÅ”anas procesu, uzlabo droŔību, uzlabo veiktspÄjas pÄrskatus un palÄ«dz samazinÄt izmaksas par atjauninÄjumiem un jaunu versiju instalÄÅ”anu. .
AizvietojoÅ”o elementu jaudas demonstrÄÅ”ana
KÄ minÄts iepriekÅ”, izmantojot Machine Config Operator, lai pÄrvaldÄ«tu konteinera resursdatoru un konteinera dzinÄju OpenShift 4, tiek nodroÅ”inÄts jauns automatizÄcijas lÄ«menis, kas iepriekÅ” nebija iespÄjams Kubernetes platformÄ. Lai demonstrÄtu jaunÄs funkcijas, mÄs parÄdÄ«sim, kÄ jÅ«s varat veikt izmaiÅas failÄ crio.conf. Lai nemulsinÄtu terminoloÄ£iju, mÄÄ£iniet koncentrÄties uz rezultÄtiem.
Vispirms izveidosim tÄ saukto konteinera izpildlaika konfigurÄciju ā Container Runtime Config. PadomÄjiet par to kÄ par Kubernetes resursu, kas atspoguļo CRI-O konfigurÄciju. PatiesÄ«bÄ tÄ ir specializÄta versija tam, ko sauc par MachineConfig, kas ir jebkura konfigurÄcija, kas tiek izvietota RHEL CoreOS maŔīnÄ kÄ daļa no OpenShift klastera.
Å is pielÄgotais resurss ar nosaukumu ContainerRuntimeConfig tika izveidots, lai klasteru administratoriem bÅ«tu vieglÄk konfigurÄt CRI-O. Å is rÄ«ks ir pietiekami jaudÄ«gs, lai to varÄtu lietot tikai noteiktiem mezgliem atkarÄ«bÄ no MachineConfigPool iestatÄ«jumiem. Uztveriet to kÄ maŔīnu grupu, kas kalpo vienam un tam paÅ”am mÄrÄ·im.
IevÄrojiet pÄdÄjÄs divas rindiÅas, kuras mÄs mainÄ«sim /etc/crio/crio.conf failÄ. Å Ä«s divas rindas ir ļoti lÄ«dzÄ«gas rindÄm failÄ crio.conf, tÄs ir:
vi ContainerRuntimeConfig.yaml
SecinÄjums:
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
Tagad virzÄ«sim Å”o failu uz Kubernetes klasteru un pÄrbaudÄ«sim, vai tas tieÅ”Äm ir izveidots. LÅ«dzu, Åemiet vÄrÄ, ka darbÄ«ba ir tieÅ”i tÄda pati kÄ ar jebkuru citu Kubernetes resursu:
oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig
SecinÄjums:
NAME AGE
set-log-and-pid 22h
Kad esam izveidojuÅ”i ContainerRuntimeConfig, mums ir jÄmaina viens no MachineConfigPools, lai ziÅotu Kubernetes, ka vÄlamies lietot Å”o konfigurÄciju noteiktai klastera maŔīnu grupai. Å ajÄ gadÄ«jumÄ mÄs mainÄ«sim galveno mezglu MachineConfigPool:
oc edit MachineConfigPool/master
SecinÄjums (skaidrÄ«bas labad galvenÄ bÅ«tÄ«ba ir atstÄta):
...
metadata:
creationTimestamp: 2019-04-10T23:42:28Z
generation: 1
labels:
debug-crio: config-log-and-pid
operator.machineconfiguration.openshift.io/required-for-upgrade: ""
...
Å ajÄ brÄ«dÄ« MCO sÄk klasterim izveidot jaunu crio.conf failu. Å ajÄ gadÄ«jumÄ pilnÄ«bÄ pabeigto konfigurÄcijas failu var apskatÄ«t, izmantojot Kubernetes API. Atcerieties, ka ContainerRuntimeConfig ir tikai specializÄta MachineConfig versija, tÄpÄc mÄs varam redzÄt rezultÄtu, aplÅ«kojot attiecÄ«gÄs rindiÅas rÄ«kÄ MachineConfig:
oc get MachineConfigs | grep rendered
SecinÄjums:
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
LÅ«dzu, Åemiet vÄrÄ, ka iegÅ«tais galveno mezglu konfigurÄcijas fails bija jaunÄka versija nekÄ sÄkotnÄjÄs konfigurÄcijas. Lai to apskatÄ«tu, palaidiet Å”Ädu komandu. GarÄmejot, mÄs atzÄ«mÄjam, ka Å”is, iespÄjams, ir viens no labÄkajiem vienas lÄ«nijas materiÄliem Kubernetes vÄsturÄ:
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
SecinÄjums:
pids_limit = 2048
Tagad pÄrliecinÄsimies, ka konfigurÄcija ir piemÄrota visiem galvenajiem mezgliem. Vispirms mÄs iegÅ«stam klastera mezglu sarakstu:
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
Tagad apskatÄ«sim instalÄto failu. JÅ«s redzÄsit, ka fails ir atjauninÄts ar jaunajÄm vÄrtÄ«bÄm pid un atkļūdoÅ”anas direktÄ«vÄm, kuras norÄdÄ«jÄm resursÄ ContainerRuntimeConfig. Pati elegance:
oc debug node/ip-10-0-135-153.us-east-2.compute.internal ā cat /host/etc/crio/crio.conf | egrep 'debug||pidā
SecinÄjums:
...
pids_limit = 2048
...
log_level = "debug"
...
Visas Ŕīs klastera izmaiÅas tika veiktas, pat nepalaižot SSH. Viss darbs tika veikts, piekļūstot Kuberentes galvenajam mezglam. Tas nozÄ«mÄ, ka Å”ie jaunie parametri tika konfigurÄti tikai galvenajos mezglos. Darbinieku mezgli nemainÄ«jÄs, kas parÄda Kubernetes metodoloÄ£ijas priekÅ”rocÄ«bas, izmantojot norÄdÄ«tos un faktiskos stÄvokļus saistÄ«bÄ ar konteineru saimniekiem un konteineru dzinÄjiem ar mainÄmiem elementiem.
IepriekÅ” minÄtais piemÄrs parÄda iespÄju veikt izmaiÅas nelielÄ OpenShift Container Platform 4 klasterÄ« ar trim ražoÅ”anas mezgliem vai milzÄ«gÄ ražoÅ”anas klasterÄ« ar 3000 mezgliem. JebkurÄ gadÄ«jumÄ darba apjoms bÅ«s tÄds pats ā un ļoti mazs ā vienkÄrÅ”i konfigurÄjiet ContainerRuntimeConfig failu un nomainiet vienu etiÄ·eti programmÄ MachineConfigPool. To var izdarÄ«t ar jebkuru OpenShift Container Platform 4.X versiju, kurÄ darbojas Kubernetes visÄ tÄ dzÄ«ves ciklÄ.
Bieži vien tehnoloÄ£iju uzÅÄmumi attÄ«stÄs tik Ätri, ka mÄs nevaram izskaidrot, kÄpÄc mÄs izvÄlamies noteiktas tehnoloÄ£ijas pamatÄ esoÅ”ajiem komponentiem. Konteineru dzinÄji vÄsturiski ir bijuÅ”i komponenti, ar kuriem lietotÄji mijiedarbojas tieÅ”i. TÄ kÄ konteineru popularitÄte dabiski sÄkÄs lÄ«dz ar konteineru dzinÄju parÄdÄ«Å”anos, lietotÄji bieži izrÄda interesi par tiem. Tas ir vÄl viens iemesls, kÄpÄc Red Hat izvÄlÄjÄs CRI-O. Konteineri attÄ«stÄs, tagad koncentrÄjoties uz orÄ·estrÄÅ”anu, un mÄs esam noskaidrojuÅ”i, ka CRI-O nodroÅ”ina vislabÄko pieredzi darbÄ ar OpenShift 4.
Avots: www.habr.com