ProHoster > Blog > uprava > 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 Sergey, ja sam DevOps u Surfu. DevOps odjel u Surfu ima za cilj ne samo uspostaviti interakciju između stručnjaka i integrirati radne procese, već i aktivno istraživati i implementirati trenutne tehnologije kako u vlastitoj infrastrukturi tako iu infrastrukturi korisnika.
U nastavku ću govoriti malo o promjenama u tehnološkom nizu za spremnike na koje smo naišli dok smo proučavali distribuciju 8 CentOS i o tome što je CRI-O i kako brzo postaviti izvršno okruženje za Kubernetes.
Zašto Docker nije uključen u CentOS 8?
Nakon instaliranja najnovijih velikih izdanja rhel 8 ili 8 CentOS ne možemo ne primijetiti: ove distribucije i službena spremišta ne sadrže aplikaciju Lučki radnik, koji ideološki i funkcionalno zamjenjuju pakete podman, Buildah (prisutno u distribuciji prema zadanim postavkama) i CRI-O. To je zbog praktične primjene 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 stvoriti otvorene industrijske standarde za formate spremnika i runtimee koji rješavaju nekoliko problema odjednom. Prvo, nisu proturječili filozofiji Linuxa (npr. u dijelu da svaki program treba izvršiti jednu radnju, a Lučki radnik je vrsta kombajna sve u jednom). Drugo, mogli bi eliminirati sve postojeće nedostatke u softveru Lučki radnik. Treće, bili bi potpuno kompatibilni s poslovnim zahtjevima vodećih komercijalnih platformi za implementaciju, upravljanje i posluživanje kontejnerskih aplikacija (na primjer, Red Hat OpenShift).
Ograničenja Lučki radnik a prednosti novog softvera već su detaljno opisane u ovaj članak, a detaljan opis cjelokupnog softverskog paketa koji se nudi unutar OCI projekta i njegovih arhitektonskih značajki može se pronaći u službenoj dokumentaciji i člancima samog Red Hata (nije loše članak u Red Hat blogu) i kod trećih strana recenzije.
Važno je napomenuti koju funkcionalnost imaju komponente predloženog skupa:
podman — izravna interakcija sa spremnicima i pohranjivanje slika kroz runC proces;
Buildah — sastavljanje i učitavanje slika u registar;
CRI-O — izvršno okruženje za sustave orkestracije spremnika (na primjer, Kubernetes).
Mislim da je za razumijevanje opće sheme interakcije između komponenti stoga preporučljivo ovdje dati dijagram veze Kubernetes c trčanjeC i knjižnice niske razine pomoću CRI-O:
CRI-O и Kubernetes pridržavati se istog ciklusa izdanja i podrške (matrica kompatibilnosti je vrlo jednostavna: glavne verzije Kubernetes и CRI-O podudaraju), a to, uzimajući u obzir usmjerenost na potpuno i sveobuhvatno testiranje rada ovog skupa od strane programera, daje nam pravo očekivati maksimalnu postižnu stabilnost u radu u svim scenarijima upotrebe (relativna lakoća je također korisna ovdje CRI-O u usporedbi s Lučki radnik zbog namjernog ograničenja funkcionalnosti).
Pri instalaciji Kubernetes "pravi način" način (prema OCI, naravno) koristeći CRI-O na 8 CentOS Nailazili smo na manje poteškoće koje smo, međutim, uspješno prebrodili. Rado ću s vama podijeliti upute za instalaciju i konfiguraciju, što će ukupno trajati oko 10 minuta.
Kako implementirati Kubernetes na CentOS 8 pomoću okvira CRI-O
Preduvjeti: prisutnost barem jednog hosta (2 jezgre, 4 GB RAM-a, najmanje 15 GB prostora za pohranu) s instaliranim 8 CentOS (preporuča se instalacijski profil “Server”), kao i unose za njega u lokalnom DNS-u (u krajnjem slučaju, možete proći unosom u /etc/hosts). I ne zaboravite onemogućiti zamjenu.
Sve operacije na hostu izvodimo kao root korisnik, budite oprezni.
U prvom koraku ćemo konfigurirati OS, instalirati i konfigurirati preliminarne ovisnosti za CRI-O.
Ažurirajmo OS:
dnf -y update
Zatim trebate konfigurirati vatrozid i SELinux. Ovdje sve ovisi o okruženju u kojem će naš domaćin ili domaćini raditi. Možete postaviti vatrozid prema preporukama iz dokumentacijaili, ako ste na pouzdanoj mreži ili koristite vatrozid treće strane, promijenite zadanu zonu u pouzdanu ili isključite vatrozid:
postavite potrebnu verziju CRI-O (glavna verzija CRI-O, kao što je već spomenuto, odgovaraju traženoj verziji Kubernetes), od najnovije stabilne verzije Kubernetes trenutno 1.18:
Obratite pozornost na prvu nijansu s kojom se susrećemo tijekom postupka instalacije: morate urediti konfiguraciju CRI-O prije pokretanja usluge, jer potrebna conmon komponenta ima drugačiju lokaciju od navedene:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Druga važna nijansa: budući da ne koristimo demona Lučki radnik, ali koristimo daemon CRI-O, prije pokretanja i inicijalizacije Kubernetes trebate izvršiti odgovarajuće postavke u konfiguracijskoj datoteci /var/lib/kubelet/config.yaml, nakon što ste prvo stvorili željeni direktorij:
Treća važna točka s kojom se susrećemo tijekom instalacije: unatoč činjenici da smo naveli korišteni upravljački program cgrupa, i njegovu konfiguraciju kroz proslijeđene argumente kubelet je zastario (kao što je izričito navedeno u dokumentaciji), moramo dodati argumente u datoteku, inače naš klaster neće biti inicijaliziran:
Za prilagodbu kontrolna ravnina ili radnik čvorova za nekoliko minuta, možete koristiti s ovom skriptom.
Vrijeme je da inicijaliziramo naš klaster.
Da biste inicijalizirali klaster, pokrenite naredbu:
kubeadm init --pod-network-cidr=10.244.0.0/16
Svakako zapišite naredbu za pridruživanje klasteru “kubeadm join …”, koju se od vas traži da koristite na kraju izlaza, ili barem navedene tokene.
Instalirajmo dodatak (CNI) za Pod mrežu. Preporučujem korištenje platno. Možda i popularniji Flanel ima problema s kompatibilnošću nftables, i platno - jedina CNI implementacija preporučena i potpuno testirana u projektu Kubernetes:
Da biste povezali radni čvor s našim klasterom, morate ga konfigurirati prema uputama 1 i 2 ili koristiti skripta, zatim pokrenite naredbu iz "kubeadm init..." izlaza koji smo zapisali u prethodnom koraku:
Provjerimo je li naš klaster inicijaliziran i počeo raditi:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Spreman! Već možete ugostiti korisni teret na svom K8s klasteru.
Što nas čeka naprijed
Nadam se da su vam gornje upute pomogle uštedjeti vrijeme i živce.
Ishod procesa koji se odvijaju u industriji često ovisi o tome kako ih prihvaća većina krajnjih korisnika i programera drugog softvera u odgovarajućoj niši. Još nije sasvim jasno do čega će OCI inicijative dovesti za nekoliko godina, ali ćemo sa zadovoljstvom gledati. Svoje mišljenje možete podijeliti odmah u komentarima.
Ostani u tunelu!
Ovaj se članak pojavio zahvaljujući sljedećim izvorima: