ProHoster > Блог > Administracija > CRI-O kao zamjena za Docker kao runtime okruženje za Kubernetes: postavljanje na CentOS 8
CRI-O kao zamjena za Docker kao runtime okruženje za Kubernetes: postavljanje na CentOS 8
Zdravo! Moje ime je Sergej, ja sam DevOps u Surfu. DevOps odjel u Surf-u ima za cilj ne samo uspostavljanje interakcije između stručnjaka i integraciju radnih procesa, već i aktivno istraživanje i implementaciju trenutnih tehnologija kako u vlastitu infrastrukturu tako i u infrastrukturu korisnika.
U nastavku ću malo govoriti o promjenama u tehnološkom steku za kontejnere na koje smo naišli dok smo proučavali distribuciju CentOS 8 i o tome šta je CRI-O i kako brzo postaviti izvršno okruženje za Kubernet.
Zašto Docker nije uključen u CentOS 8?
Nakon instaliranja najnovijih velikih izdanja rhel 8 ili CentOS 8 ne može se ne primijetiti: ove distribucije i službena spremišta nemaju aplikaciju doker, koji ideološki i funkcionalno zamjenjuju pakete podman, Buildah (prisutno u distribuciji po defaultu) i CRI-O. To je zbog praktične implementacije standarda koje je, između ostalog, razvio Red Hat u sklopu projekta Open Container Initiative (OCI).
Cilj OCI-ja, koji je dio The Linux Foundation, je stvaranje otvorenih industrijskih standarda za formate kontejnera i vremena izvršavanja koji rješavaju nekoliko problema odjednom. Prvo, nisu bili u suprotnosti sa filozofijom Linuxa (na primjer, u dijelu da svaki program treba da izvrši jednu radnju, a doker je neka vrsta kombajna sve u jednom). Drugo, mogli bi eliminisati sve postojeće nedostatke u softveru doker. Treće, oni bi bili u potpunosti kompatibilni sa poslovnim zahtjevima vodećih komercijalnih platformi za implementaciju, upravljanje i opsluživanje kontejnerskih aplikacija (na primjer, Red Hat OpenShift).
mane doker a prednosti novog softvera su već detaljno opisane u ovaj članak, a detaljan opis cjelokupnog softverskog paketa koji se nudi u okviru OCI projekta i njegovih arhitektonskih karakteristika možete pronaći u službenoj dokumentaciji i člancima samog Red Hata (nije loše članak u Red Hat blogu) i treće strane recenzije.
Važno je napomenuti koju funkcionalnost imaju komponente predloženog steka:
podman — direktna interakcija sa kontejnerima i skladištenjem slika kroz runC proces;
Buildah — sastavljanje i postavljanje slika u registar;
CRI-O — izvršno okruženje za sisteme orkestracije kontejnera (na primer, Kubernetes).
Mislim da je za razumijevanje opće sheme interakcije između komponenti steka preporučljivo dati dijagram povezivanja ovdje Kubernet c runC i biblioteke niskog nivoa koje koriste CRI-O:
CRI-O и Kubernet pridržavati se istog ciklusa izdanja i podrške (matrica kompatibilnosti je vrlo jednostavna: glavne verzije Kubernet и CRI-O podudaraju), a to, uzimajući u obzir fokus na potpuno i sveobuhvatno testiranje rada ovog steka od strane programera, daje nam za pravo da očekujemo maksimalnu moguću stabilnost u radu pod bilo kojim scenarijem upotrebe (relativna lakoća je također korisna ovdje CRI-O u poređenju sa doker zbog namjernog ograničenja funkcionalnosti).
Prilikom instaliranja Kubernet "pravi put" način (prema OCI, naravno) korištenje CRI-O na CentOS 8 Naišli smo na manje poteškoće koje smo, međutim, uspješno savladali. Rado ću podijeliti s vama upute za instalaciju i konfiguraciju, što će ukupno trajati oko 10 minuta.
Kako implementirati Kubernetes na CentOS 8 koristeći CRI-O okvir
Preduvjeti: prisustvo najmanje jednog hosta (2 jezgra, 4 GB RAM-a, najmanje 15 GB skladišta) sa instaliranim CentOS 8 (preporučuje se instalacijski profil „Server“), kao i unosi za njega u lokalnom DNS-u (u krajnjem slučaju, možete proći unosom u /etc/hosts). I ne zaboravi onemogućiti swap.
Sve operacije izvodimo na hostu kao root korisnik, budite oprezni.
U prvom koraku ćemo konfigurisati OS, instalirati i konfigurisati preliminarne zavisnosti za CRI-O.
Ažurirajmo OS:
dnf -y update
Zatim morate konfigurirati firewall i SELinux. Ovdje sve ovisi o okruženju u kojem će naš domaćin ili domaćini raditi. Možete postaviti zaštitni zid prema preporukama iz dokumentaciju, ili, ako ste na pouzdanoj mreži ili koristite zaštitni zid treće strane, promijenite zadanu zonu u pouzdanu ili isključite zaštitni zid:
postavite potrebnu verziju CRI-O (glavna verzija CRI-O, kao što je već spomenuto, odgovaraju traženoj verziji Kubernet), od najnovije stabilne verzije Kubernet trenutno 1.18:
Obratite pažnju na prvu nijansu na koju nailazimo tokom procesa instalacije: morate urediti konfiguraciju CRI-O prije pokretanja usluge, budući da tražena komponenta conmon ima drugačiju lokaciju od navedene:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Druga važna nijansa: pošto ne koristimo demona doker, ali mi koristimo demona CRI-O, prije pokretanja i inicijalizacije Kubernet morate napraviti odgovarajuća podešavanja u konfiguracijskoj datoteci /var/lib/kubelet/config.yaml, nakon što ste prvo kreirali željeni direktorij:
Treća važna tačka na koju nailazimo tokom instalacije: uprkos činjenici da smo naveli korišćeni drajver cgroup, i njegovu konfiguraciju kroz proslijeđene argumente kubelet je zastarjela (kao što je eksplicitno navedeno u dokumentaciji), moramo dodati argumente u datoteku, inače naš klaster neće biti inicijaliziran:
Za prilagođavanje kontrolni avion ili radnik čvorova za nekoliko minuta, možete koristiti sa ovom skriptom.
Vrijeme je da inicijaliziramo naš klaster.
Da biste inicijalizirali klaster, pokrenite naredbu:
kubeadm init --pod-network-cidr=10.244.0.0/16
Obavezno zapišite naredbu za pridruživanje klasteru “kubeadm join…”, koju se od vas traži da koristite na kraju izlaza, ili barem navedene tokene.
Hajde da instaliramo dodatak (CNI) za Pod mrežu. Preporučujem korištenje Calico. Možda i popularniji Flannel ima problema sa kompatibilnošću sa nftables, da i Calico - jedina CNI implementacija preporučena i potpuno testirana od strane projekta Kubernet:
Da povežete radni čvor s našim klasterom, morate ga konfigurirati prema uputama 1 i 2 ili koristiti script, zatim pokrenite naredbu iz “kubeadm init...” izlaza koju smo zapisali u prethodnom koraku:
Provjerimo da li je naš klaster inicijaliziran i počeo s radom:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Spremni! Već možete ugostiti korisna opterećenja na svom K8s klasteru.
Šta nas čeka pred nama
Nadam se da su vam gore navedene upute pomogle da uštedite malo vremena i živaca.
Ishod procesa koji se dešavaju u industriji često zavisi od toga kako ih prihvata većina krajnjih korisnika i programera drugog softvera u odgovarajućoj niši. Još nije sasvim jasno do čega će inicijative OCI-ja dovesti za nekoliko godina, ali ćemo sa zadovoljstvom gledati. Svoje mišljenje možete podijeliti odmah u komentarima.
Stay tuned!
Ovaj se članak pojavio zahvaljujući sljedećim izvorima: