ProHoster > Blog > Administrácia > CRI-O ako náhrada za Docker ako spustiteľné prostredie pre Kubernetes: nastavenie na CentOS 8
CRI-O ako náhrada za Docker ako spustiteľné prostredie pre Kubernetes: nastavenie na CentOS 8
Ahoj! Moje meno je Sergey, som DevOps v Surf. Cieľom oddelenia DevOps v Surf je nielen nadviazať interakciu medzi špecialistami a integrovať pracovné procesy, ale aj aktívne skúmať a implementovať súčasné technológie vo vlastnej infraštruktúre aj v infraštruktúre zákazníka.
Nižšie porozprávam trochu o zmenách v zásobníku technológií pre kontajnery, s ktorými sme sa stretli pri štúdiu distribúcie 8 CentOS a o čom to je CRI-O a ako rýchlo nastaviť spustiteľné prostredie pre Kubernetes.
Prečo nie je Docker súčasťou CentOS 8?
Po inštalácii najnovších hlavných vydaní RHEL 8 alebo 8 CentOS nemožno si nevšimnúť: tieto distribúcie a oficiálne úložiská neobsahujú aplikáciu prístavný robotník, ktoré ideovo a funkčne nahrádzajú balíčky podmaní, Buildah (v distribúcii sa štandardne nachádza) a CRI-O. Je to spôsobené praktickou implementáciou štandardov vyvinutých okrem iného spoločnosťou Red Hat v rámci projektu Open Container Initiative (OCI).
Cieľom OCI, ktorý je súčasťou The Linux Foundation, je vytvoriť otvorené priemyselné štandardy pre formáty kontajnerov a runtime, ktoré riešia niekoľko problémov naraz. Po prvé, neboli v rozpore s filozofiou Linuxu (napríklad v časti, že každý program by mal vykonávať jednu akciu a prístavný robotník je akýmsi kombajnom typu všetko v jednom). Po druhé, mohli by odstrániť všetky existujúce nedostatky v softvéri prístavný robotník. Po tretie, boli by plne kompatibilné s obchodnými požiadavkami popredných komerčných platforiem na nasadenie, správu a obsluhu kontajnerových aplikácií (napríklad Red Hat OpenShift).
Obmedzenie prístavný robotník a výhody nového softvéru už boli dosť podrobne opísané v v tomto článkua podrobný popis celého softvérového zásobníka ponúkaného v rámci projektu OCI a jeho architektonických prvkov nájdete v oficiálnej dokumentácii a článkoch samotného Red Hatu (nie je to zlé článok v blogu Red Hat) a v tretej strane recenzie.
Je dôležité poznamenať, aké funkcie majú komponenty navrhovaného zásobníka:
podmaní — priama interakcia s kontajnermi a ukladanie obrázkov prostredníctvom procesu runC;
Buildah — zostavovanie a nahrávanie obrázkov do registra;
CRI-O — spustiteľné prostredie pre systémy na orchestráciu kontajnerov (napríklad Kubernetes).
Myslím si, že na pochopenie všeobecnej schémy interakcie medzi komponentmi zásobníka je vhodné poskytnúť tu schému zapojenia Kubernetes c runC a nízkoúrovňové knižnice používajúce CRI-O:
CRI-O и Kubernetes dodržiavať rovnaký cyklus vydávania a podpory (matica kompatibility je veľmi jednoduchá: hlavné verzie Kubernetes и CRI-O sa zhodujú), a to, berúc do úvahy zameranie sa na úplné a komplexné testovanie prevádzky tohto zásobníka vývojármi, nám dáva právo očakávať maximálnu dosiahnuteľnú stabilitu v prevádzke pri akýchkoľvek scenároch použitia (relatívna ľahkosť je tu tiež prospešná CRI-O v porovnaní s prístavný robotník z dôvodu účelového obmedzenia funkčnosti).
Pri inštalácii Kubernetes „správnym spôsobom“ (samozrejme podľa OCI) pomocou CRI-O na 8 CentOS Narazili sme na menšie ťažkosti, ktoré sme však úspešne zvládli. Rád sa s vami podelím o návod na inštaláciu a konfiguráciu, čo celkovo zaberie asi 10 minút.
Ako nasadiť Kubernetes na CentOS 8 pomocou rámca CRI-O
Predpoklady: prítomnosť aspoň jedného hostiteľa (2 jadrá, 4 GB RAM, aspoň 15 GB úložisko) s nainštalovaným 8 CentOS (odporúča sa inštalačný profil „Server“), ako aj jeho záznamy v lokálnom DNS (ako posledná možnosť si vystačíte so záznamom v /etc/hosts). A nezabudni zakázať výmenu.
Všetky operácie vykonávame na hostiteľovi ako užívateľ root, buďte opatrní.
V prvom kroku nakonfigurujeme OS, nainštalujeme a nakonfigurujeme predbežné závislosti pre CRI-O.
Poďme aktualizovať OS:
dnf -y update
Ďalej musíte nakonfigurovať firewall a SELinux. Tu všetko závisí od prostredia, v ktorom bude náš hostiteľ alebo hostitelia pracovať. Firewall môžete nastaviť buď podľa odporúčaní z dokumentáciualebo ak ste v dôveryhodnej sieti alebo používate bránu firewall tretej strany, zmeňte predvolenú zónu na dôveryhodnú alebo bránu firewall vypnite:
nastavte požadovanú verziu CRI-O (hlavná verzia CRI-O, ako už bolo spomenuté, zodpovedajú požadovanej verzii Kubernetes), od najnovšej stabilnej verzie Kubernetes momentálne 1.18:
Venujte pozornosť prvej nuancii, s ktorou sa stretneme počas procesu inštalácie: musíte upraviť konfiguráciu CRI-O pred spustením služby, pretože požadovaný bežný komponent má iné umiestnenie, než je zadané:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Druhá dôležitá nuansa: keďže nepoužívame démona prístavný robotník, ale používame démona CRI-O, pred spustením a inicializáciou Kubernetes musíte vykonať príslušné nastavenia v konfiguračnom súbore /var/lib/kubelet/config.yaml po vytvorení požadovaného adresára:
Tretí dôležitý bod, s ktorým sa stretávame pri inštalácii: napriek tomu, že sme uviedli použitý ovládač cgroupa jeho konfiguráciu prostredníctvom odovzdaných argumentov kocka je zastaraný (ako je výslovne uvedené v dokumentácii), musíme do súboru pridať argumenty, inak nebude náš klaster inicializovaný:
Prispôsobiť kontrolná rovina alebo robotník uzly za pár minút, môžete použiť s týmto skriptom.
Je čas inicializovať náš klaster.
Ak chcete inicializovať klaster, spustite príkaz:
kubeadm init --pod-network-cidr=10.244.0.0/16
Nezabudnite si zapísať príkaz na pripojenie ku klastru „kubeadm join…“, ktorý sa od vás požaduje použiť na konci výstupu, alebo aspoň zadané tokeny.
Nainštalujeme plugin (CNI) pre sieť Pod. Odporúčam používať kaliko. Možno viac populárne flanel má problémy s kompatibilitou nftables, áno a áno kaliko - jediná implementácia CNI odporúčaná a plne otestovaná projektom Kubernetes:
Ak chcete pripojiť pracovný uzol k nášmu klastru, musíte ho nakonfigurovať podľa pokynov 1 a 2 alebo použiť skript, potom spustite príkaz z výstupu „kubeadm init...“, ktorý sme si zapísali v predchádzajúcom kroku:
Skontrolujeme, či je náš klaster inicializovaný a začal pracovať:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Pripravený! Už môžete hostiť užitočné zaťaženia na svojom klastri K8s.
Čo nás čaká ďalej
Dúfam, že vám vyššie uvedené pokyny pomohli ušetriť čas a nervy.
Výsledok procesov vyskytujúcich sa v tomto odvetví často závisí od toho, ako ich akceptuje väčšina koncových používateľov a vývojári iného softvéru v príslušnom výklenku. Zatiaľ nie je celkom jasné, k čomu povedú iniciatívy OCI o pár rokov, no budeme s radosťou sledovať. O svoj názor sa môžete podeliť už teraz v komentároch.
Zostaňte naladení!
Tento článok sa objavil vďaka nasledujúcim zdrojom: