ProHoster > Blog > Amministrazione > CRI-O cum'è un sustitutu di Docker cum'è un ambiente di runtime per Kubernetes: setup in CentOS 8
CRI-O cum'è un sustitutu di Docker cum'è un ambiente di runtime per Kubernetes: setup in CentOS 8
Bonghjornu! Mi chjamu Sergey, sò DevOps à Surf. U dipartimentu DevOps in Surf ùn hà micca solu scopu di stabilisce l'interazzione trà i specialisti è integrà i prucessi di travagliu, ma ancu di ricerca attivamente è implementà e tecnulugia attuali sia in a so propria infrastruttura sia in l'infrastruttura di u cliente.
Quì sottu parleraghju un pocu di i cambiamenti in a pila di tecnulugia per i cuntenituri chì avemu scontru mentre studiava a distribuzione. CentOS 8 è circa ciò chì hè CRI-O è cumu stabilisce rapidamente un ambiente eseguibile per Kubernetes.
Perchè Docker ùn hè micca inclusu in CentOS 8?
Dopu avè installatu l'ultime versioni maiò rilu 8 o CentOS 8 ùn si pò fà di nutà : sti distribuzioni è i repositori ufficiali ùn cuntenenu micca l'applicazione Docker, chì sustituisce ideologicamente è funziunale i pacchetti podman, Custruì (presente in a distribuzione per difettu) è CRI-O. Questu hè duvuta à l'implementazione pratica di i normi sviluppati, frà altri cose, da Red Hat in parte di u prughjettu Open Container Initiative (OCI).
L'obiettivu di l'OCI, chì face parte di a Fundazione Linux, hè di creà standard di l'industria aperti per formati di cuntenituri è runtimes chì risolve parechji prublemi à una volta. Prima, ùn anu micca cuntraditu a filusufìa di Linux (per esempiu, in a parte chì ogni prugramma duverebbe fà una azione, è Docker hè una spezia di combinazione all-in-one). Siconda, puderanu eliminà tutte e carenze esistenti in u software Docker. In terzu, seranu cumplettamente cumpatibili cù i bisogni di l'affari stabiliti da e piattaforme cummirciali principali per implementà, gestisce è serve applicazioni containerizzate (per esempiu, Red Hat OpenShift).
shortcomings Docker è i vantaghji di u novu software sò digià stati descritti in qualchì dettagliu in stu articulu, è una descrizzione dettagliata di tutta a pila di software offerta in u prughjettu OCI è e so caratteristiche architettoniche ponu esse truvate in a documentazione ufficiale è l'articuli di Red Hat stessu (micca male. un articulu in u blog Red Hat) è in terzu recensioni.
Hè impurtante di nutà chì funziunalità sò i cumpunenti di a pila pruposta:
podman - interazione diretta cù i cuntenituri è u almacenamentu di l'imaghjini attraversu u prucessu runC;
Custruì - assemblea è carica di l'imaghjini à u registru;
CRI-O - un ambiente eseguibile per i sistemi di orchestrazione di cuntainer (per esempiu, Kubernetes).
Pensu chì per capisce u schema generale di l'interazzione trà i cumpunenti di a pila, hè cunsigliatu di furnisce un diagramma di cunnessione quì. Kubernetes c corre C è biblioteche di livellu bassu utilizendu CRI-O:
CRI-O и Kubernetes aderisce à u stessu ciculu di liberazione è supportu (a matrice di cumpatibilità hè assai simplice: versioni maiò Kubernetes и CRI-O coincide), è questu, tenendu in contu l'enfasi di a prova cumpleta è cumpleta di u funziunamentu di sta pila da i sviluppatori, ci dà u dirittu di aspittà a stabilità massima ottenibile in operazione in ogni scenariu d'usu (a ligerezza relativa hè ancu benefica quì. CRI-O paragunatu à Docker a causa di una limitazione intenzionale di funziunalità).
Quandu stallate Kubernetes "modu ghjustu" modu (sicondu l'OCI, sicuru) utilizendu CRI-O nantu CentOS 8 Avemu scontru alcune difficultà minori, chì, però, avemu superatu cù successu. Seraghju felice di sparte cun voi l'istruzzioni di installazione è di cunfigurazione, chì in totale duranu circa 10 minuti.
Cumu implementà Kubernetes in CentOS 8 utilizendu u framework CRI-O
Prerequisiti: presenza di almenu un host (2 core, 4 GB RAM, almenu 15 GB almacenamiento) cù installatu CentOS 8 (U prufilu d'installazione "Server" hè cunsigliatu), è ancu entrate per ellu in u DNS locale (cum'è l'ultimu risorsu, pudete fà cun una entrata in /etc/hosts). È ùn vi scurdate disattivà u scambiu.
Facemu tutte l'operazioni nantu à l'ospitu cum'è l'utilizatore root, attentu.
In u primu passu, cunfiguremu u SO, installate è cunfigurà dipendenze preliminari per CRI-O.
Aggiornemu l'OS:
dnf -y update
Dopu avete bisognu di cunfigurà u firewall è SELinux. Quì tuttu dipende di l'ambienti in quale u nostru ospite o l'ospiti travaglià. Pudete sia stallà un firewall secondu i cunsiglii da ducumentazione, o, sè site in una reta di fiducia o utilizate un firewall di terzu, cambiate a zona predeterminata in fiducia o disattivate u firewall:
stabilisce a versione necessaria CRI-O (versione maiò CRI-O, cum'è digià dettu, currisponde à a versione necessaria Kubernetes), dapoi l'ultima versione stabile Kubernetes attualmente 1.18:
Prestate attenzione à a prima sfumatura chì avemu scontru durante u prucessu di stallazione: avete bisognu di edità a cunfigurazione CRI-O prima di inizià u serviziu, postu chì u cumpunente cumunu necessariu hà un locu sfarente da quellu specificatu:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
A seconda sfumatura impurtante: postu chì ùn avemu micca usatu un daemon Docker, ma avemu aduprà u demone CRI-O, prima di u lanciu è l'inizializazione Kubernetes avete bisognu di fà i paràmetri adatti in u schedariu di cunfigurazione /var/lib/kubelet/config.yaml, avè prima creatu u cartulare desideratu:
U terzu puntu impurtante chì avemu scontru durante a stallazione: malgradu u fattu chì avemu indicatu u driver utilizatu cgroup, è a so cunfigurazione attraversu l'argumenti passati kubelet hè obsoleto (cum'è esplicitamente dichjaratu in a ducumentazione), avemu bisognu di aghjunghje argumenti à u schedariu, altrimenti u nostru cluster ùn hà micca inizializatu:
Per persunalizà pianu di cuntrollu o travagliadori nodes in minuti, pudete aduprà cù stu script.
Hè ora di inizializà u nostru cluster.
Per inizializà u cluster, eseguite u cumandimu:
kubeadm init --pod-network-cidr=10.244.0.0/16
Assicuratevi di scrive u cumandamentu per unisce à u cluster "kubeadm join ...", chì vi hè dumandatu à aduprà à a fine di l'output, o almenu i tokens specificati.
Installemu u plugin (CNI) per a reta Pod. Vi cunsigliu d'utilizà Calico. Possibile più populari Flannel hà prublemi di cumpatibilità cù nftables, iè è Calico - l'unica implementazione CNI cunsigliata è cumpletamente pruvata da u prugettu Kubernetes:
Per cunnette un nodu di u travagliu à u nostru cluster, avete bisognu di cunfigurà secondu l'istruzzioni 1 è 2, o l'utilizanu script, poi eseguite u cumandamentu da a pruduzzioni "kubeadm init..." chì avemu scrittu in u passu precedente:
Cuntrollamu chì u nostru cluster hè inizializatu è hà cuminciatu à travaglià:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Pronti ! Pudete digià ospitare carichi utili nantu à u vostru cluster K8s.
Ciò chì ci aspetta avanti
Spergu chì l'istruzzioni sopra anu aiutatu à salvà un pocu di tempu è nervi.
U risultatu di i prucessi chì si trovanu in l'industria spessu depende di cumu sò accettati da a maiò parte di l'utilizatori finali è di i sviluppatori di altre software in u nichu currispondente. Ùn hè ancu chjaramente chjaru ciò chì l'iniziativi di l'OCI portanu in qualchì annu, ma fighjeremu cun piacè. Pudete sparte a vostra opinione avà in i cumenti.
Resta attenti!
Questu articulu hè apparsu grazia à e seguenti fonti: