Plataforma
A suluzione ovvia era di utilizà Red Hat Enterprise Linux CoreOS (una variante di Red Hat Enterprise Linux) è CRI-O cum'è standard, è eccu perchè ...
Siccomu u tema di a vela hè assai bonu per truvà analogie quandu spiegà u travagliu di Kubernetes è di cuntenituri, pruvemu di parlà di i prublemi di cummerciale chì CoreOS è CRI-O risolve, utilizendu un esempiu.
Avà imaginate se Brunel avia da fà stu travagliu per 20 mudelli di navi diffirenti (versioni Kubernetes) è per cinque pianeti diffirenti cù correnti marini è venti completamente differenti (fornitori di nuvola). Inoltre, era necessariu chì tutti i navi (Clusters OpenShift), indipendentemente da i pianeti nantu à quale a navigazione hè realizata, da u puntu di vista di i capitani (operatori chì gestiscenu l'operazione di i clusters) cumportanu u stessu. Per cuntinuà l'analogia marittima, i capitani di i navi ùn importanu micca ciò chì tipu di rigging blocks (CRI-O) sò usati nantu à i so navi - u principale per elli hè chì sti blocchi sò forti è affidabili.
OpenShift 4, cum'è una piattaforma nuvola, face una sfida cummerciale assai simili. I novi nodi devenu esse creati à u mumentu di a creazione di cluster, in casu di fallimentu in unu di i nodi, o quandu scala u cluster. Quandu un novu nodu hè creatu è inizializatu, i cumpunenti critichi di l'ospiti, cumpresu CRI-O, devenu esse cunfigurati in cunfurmità. Cum'è in ogni altra pruduzzione, "materia prima" deve esse furnita à u principiu. In u casu di i navi, a materia prima sò metalli è legnu. In ogni casu, in u casu di creà un òspite per implementà cuntenituri in un cluster OpenShift 4, avete bisognu à avè i schedarii di cunfigurazione è i servitori furniti da l'API cum'è input. OpenShift poi furnisce u livellu d'automatizazione necessariu in tuttu u ciclu di vita, offre u supportu di produttu necessariu à l'utilizatori finali è cusì ricuperendu l'investimentu in a piattaforma.
OpenShift 4 hè statu creatu in modu chì furnisce l'abilità di aghjurnà convenientemente u sistema in tuttu u ciclu di vita di a piattaforma (per e versioni 4.X) per tutti i principali fornitori di cloud computing, piattaforme di virtualizazione è ancu sistemi di bare metal. Per fà questu, i nodi devenu esse creati nantu à a basa di elementi intercambiabili. Quandu un cluster richiede una nova versione di Kubernetes, riceve ancu a versione currispondente di CRI-O in CoreOS. Siccomu a versione CRI-O hè ligata direttamente à Kubernetes, questu simplifica assai ogni permutazione per teste, risoluzione di prublemi o scopi di supportu. Inoltre, stu approcciu riduce i costi per l'utilizatori finali è Red Hat.
Questu hè un modu fundamentale novu di pensà à i clusters Kubernetes è pone a basa per a pianificazione di alcune funzioni novi assai utili è convincenti. CRI-O (Container Runtime Interface - Open Container Initiative, abbreviata CRI-OCI) hè stata a scelta più riescita per a creazione di massa di nodi chì hè necessariu di travaglià cù OpenShift. CRI-O rimpiazzà u mutore Docker utilizatu prima, chì offre l'utilizatori OpenShift
U mondu di i cuntenituri aperti
U mondu si move versu i cuntenituri aperti per un bellu pezzu. Sia in Kubernetes, o à i livelli più bassi,
Tuttu hà cuminciatu cù a creazione di l'Iniziativa Open Containers
A cumunità Kubernetes hà sviluppatu dopu un standard unicu per una interfaccia pluggable, chjamata
L'ingegneri di Red Hat è Google anu vistu una necessità di u mercatu per un mutore di cuntainer chì puderia accettà e richieste Kubelet nantu à u protocolu CRI è hà introduttu cuntenituri chì eranu cumpatibili cù e specificazioni OCI sopra citate. Allora
Fig. 1.
Innovazione cù CRI-O è CoreOS
Cù u lanciu di a piattaforma OpenShift 4, hè stata cambiata
Aspetta, cumu hè questu?
Hè cusì, cù l'avventu di OpenShift 4, ùn ci hè più bisognu di cunnette cù l'ospiti individuali è installà un mutore di cuntainer, cunfigurà u almacenamentu, cunfigurà i servitori di ricerca o cunfigurà una reta. A piattaforma OpenShift 4 hè stata completamente riprogettata per aduprà
Kubernetes hà sempre permessu à l'utilizatori di gestisce l'applicazioni definendu u statu desideratu è utilizendu
Utilizendu Operatori in a piattaforma, OpenShift 4 porta stu novu paradigma (aduprendu u cuncettu di set è statu attuale) à a gestione di RHEL CoreOS è CRI-O. I travaglii di cunfigurà è gestisce e versioni di u sistema operatore è u mutore di cuntainer sò automatizati cù u cusì chjamatu
Corsa di cuntenituri
L'utilizatori anu avutu l'uppurtunità d'utilizà u mutore CRI-O in a piattaforma OpenShift da a versione 3.7 in u statutu Tech Preview è da a versione 3.9 in u statutu Generally Available (attualmente supportatu). Inoltre, Red Hat usa massivamente
Risu. 2. Cumu i cuntenituri travaglianu in un cluster Kubernetes
CRI-O simplificheghja a creazione di novi hosts di container sincronizendu tuttu u livellu superiore quandu inizializza novi nodi, è quandu libera novi versioni di a piattaforma OpenShift. A rivisione di tutta a piattaforma permette l'aghjurnamenti di transazzione / rollbacks, è ancu impedisce i blocchi in dipendenze trà u core di cuda di u containeru, u mutore di u containeru, i nodi (Kubelets) è u node Kubernetes Master. Gestendu cintrali tutti i cumpunenti di a piattaforma, cù u cuntrollu è a versione, ci hè sempre un percorsu chjaru da u statu A à u statu B. Questu simplifica u prucessu d'aghjurnamentu, migliurà a sicurità, migliurà a rappurtazione di rendiment, è aiuta à riduce u costu di l'aghjurnamenti è l'installazione di novi versioni. .
Dimustrà u putere di l'elementi di sustituzione
Cum'è diciatu prima, utilizendu l'Operatore di Config di Machine per gestisce l'ospite di u containeru è u mutore di u containeru in OpenShift 4 furnisce un novu livellu d'automatizazione chì ùn era micca pussibule in a piattaforma Kubernetes. Per dimustrà e novi funziunalità, vi mustraremu cumu pudete fà cambiamenti à u schedariu crio.conf. Per evitari di cunfundà a terminologia, pruvate di fucalizza nantu à i risultati.
Prima, creemu ciò chì si chjama una cunfigurazione di runtime di cuntainer - Container Runtime Config. Pensate à questu cum'è una risorsa Kubernetes chì rapprisenta a cunfigurazione per CRI-O. In realtà, hè una versione specializata di qualcosa chjamata MachineConfig, chì hè qualsiasi cunfigurazione chì hè implementata à una macchina RHEL CoreOS cum'è parte di un cluster OpenShift.
Questa risorsa persunalizata, chjamata ContainerRuntimeConfig, hè stata creata per fà più faciule per l'amministratori di cluster per cunfigurà CRI-O. Stu strumentu hè abbastanza putente chì pò esse appiicata solu à certi nodi sicondu i paràmetri di MachineConfigPool. Pensate à questu cum'è un gruppu di machini chì serve u stessu scopu.
Avvisu l'ultimi dui linii chì andemu à cambià in u schedariu /etc/crio/crio.conf. Sti dui linii sò assai simili à i linii in u schedariu crio.conf, sò:
vi ContainerRuntimeConfig.yaml
Cunsigliu:
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
Avà spingemu stu schedariu à u cluster Kubernetes è verificate chì hè statu veramente creatu. Per piacè nutate chì l'operazione hè esattamente uguale à qualsiasi altra risorsa Kubernetes:
oc create -f ContainerRuntimeConfig.yaml
oc get ContainerRuntimeConfig
Cunsigliu:
NAME AGE
set-log-and-pid 22h
Una volta avemu creatu u ContainerRuntimeConfig, avemu bisognu di mudificà unu di i MachineConfigPools per signalà à Kubernetes chì vulemu applicà sta cunfigurazione à un gruppu specificu di macchine in u cluster. In questu casu, cambià a MachineConfigPool per i nodi maestri:
oc edit MachineConfigPool/master
Conclusione (per a chiarezza, l'essenza principale hè lasciata):
...
metadata:
creationTimestamp: 2019-04-10T23:42:28Z
generation: 1
labels:
debug-crio: config-log-and-pid
operator.machineconfiguration.openshift.io/required-for-upgrade: ""
...
À questu puntu, MCO cumencia à creà un novu file crio.conf per u cluster. In questu casu, u schedariu di cunfigurazione cumpletamente finitu pò esse vistu cù l'API Kubernetes. Ricurdativi, ContainerRuntimeConfig hè solu una versione specializata di MachineConfig, cusì pudemu vede u risultatu fighjendu e linee pertinenti in MachineConfigs:
oc get MachineConfigs | grep rendered
Cunsigliu:
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
Per piacè nutate chì u schedariu di cunfigurazione risultatu per i nodi maestri era una versione più nova di e cunfigurazioni originali. Per vede, eseguite u cumandimu seguitu. In u passaghju, avemu nutatu chì questu hè forse unu di i migliori one-liners in a storia di 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
Cunsigliu:
pids_limit = 2048
Avà assicuremu chì a cunfigurazione hè stata applicata à tutti i nodi maestri. Prima avemu una lista di nodi in u cluster:
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
Avà fighjemu u schedariu installatu. Puderete vede chì u schedariu hè statu aghjurnatu cù i novi valori per e direttive pid è debug chì avemu specificatu in a risorsa ContainerRuntimeConfig. L'eleganza stessu:
oc debug node/ip-10-0-135-153.us-east-2.compute.internal — cat /host/etc/crio/crio.conf | egrep 'debug||pid’
Cunsigliu:
...
pids_limit = 2048
...
log_level = "debug"
...
Tutti questi cambiamenti à u cluster sò stati fatti senza mancu eseguisce SSH. Tuttu u travagliu hè statu fattu accede à u node maestru Kuberentes. Questu hè, sti novi paràmetri sò stati cunfigurati solu nantu à i nodi maestri. I nodi di i travagliadori ùn anu micca cambiatu, chì mostra i benefici di a metodulugia Kubernetes di l'usu di stati specificati è attuali in relazione à l'ospiti di u containeru è i mutori di u containeru cù elementi intercambiabili.
L'esempiu sopra mostra a capacità di fà cambiamenti à un picculu cluster OpenShift Container Platform 4 cù trè nodi di produzzione o un grande cluster di produzzione cù nodi 3000. In ogni casu, a quantità di travagliu serà a stessa - è assai chjuca - basta cunfigurà u schedariu ContainerRuntimeConfig, è cambia una etichetta in MachineConfigPool. È pudete fà questu cù qualsiasi versione di OpenShift Container Platform 4.X chì esegue Kubernetes in tuttu u so ciclu di vita.
Spessu e cumpagnie tecnologiche evoluzione cusì rapidamente chì ùn pudemu spiegà perchè scegliemu certe tecnulugia per i cumpunenti sottostanti. I mutori di cuntainer sò storicamente u cumpunente chì l'utilizatori interagiscenu direttamente. Siccomu a popularità di i cuntenituri naturalmente hà cuminciatu cù l'avventu di i mutori di cuntainer, l'utilizatori spessu mostranu interessu in elli. Questu hè un altru mutivu perchè Red Hat hà sceltu CRI-O. I cuntenituri sò in evoluzione cù u focusu avà nantu à l'orchestrazione, è avemu trovu chì CRI-O furnisce a megliu sperienza quandu travaglia cù OpenShift 4.
Source: www.habr.com