ProHoster > Blog > podávání > CRI-O jako náhrada za Docker jako běhové prostředí pro Kubernetes: nastavení na CentOS 8
CRI-O jako náhrada za Docker jako běhové prostředí pro Kubernetes: nastavení na CentOS 8
Ahoj! Jmenuji se Sergey a jsem DevOps ve společnosti Surf. Oddělení DevOps ve společnosti Surf si klade za cíl nejen navázat interakci mezi specialisty a integrovat pracovní procesy, ale také aktivně zkoumat a implementovat současné technologie jak ve vlastní infrastruktuře, tak v infrastruktuře zákazníka.
Níže budu mluvit trochu o změnách v technologickém zásobníku pro kontejnery, se kterými jsme se setkali při studiu distribuce CentOS 8 a o tom, co je vytvořit to a jak rychle nastavit spustitelné prostředí pro Kubernetes.
Proč není Docker součástí CentOS 8?
Po instalaci nejnovějších hlavních verzí RHEL 8 nebo CentOS 8 nelze si nevšimnout: tyto distribuce a oficiální úložiště neobsahují aplikaci přístavní dělník, které ideově a funkčně nahrazují balíčky Podman, Buildah (ve výchozím nastavení přítomno v distribuci) a vytvořit to. Je to dáno praktickou implementací standardů vyvinutých mimo jiné společností Red Hat v rámci projektu Open Container Initiative (OCI).
Cílem OCI, která je součástí The Linux Foundation, je vytvořit otevřené průmyslové standardy pro formáty kontejnerů a runtime, které řeší několik problémů najednou. Za prvé, nebyly v rozporu s filozofií Linuxu (například v části, že každý program by měl provádět jednu akci, a přístavní dělník je druh all-in-one kombajnu). Za druhé, mohli odstranit všechny existující nedostatky v softwaru přístavní dělník. Za třetí, budou plně kompatibilní s obchodními požadavky předních komerčních platforem pro zavádění, správu a obsluhu kontejnerových aplikací (například Red Hat OpenShift).
Omezení přístavní dělník a výhody nového softwaru již byly podrobně popsány v tento článek, a podrobný popis celého softwarového stacku nabízeného v rámci projektu OCI a jeho architektonických prvků najdete v oficiální dokumentaci a článcích samotného Red Hatu (není špatný článek na blogu Red Hat) a na třetí straně recenze.
Je důležité si uvědomit, jakou funkcionalitu mají součásti navrhovaného zásobníku:
Podman — přímá interakce s kontejnery a ukládáním obrázků prostřednictvím procesu runC;
Buildah — sestavení a nahrání obrázků do registru;
vytvořit to — spustitelné prostředí pro systémy orchestrace kontejnerů (například Kubernetes).
Myslím, že pro pochopení obecného schématu interakce mezi komponentami zásobníku je vhodné poskytnout zde schéma zapojení Kubernetes c runC a nízkoúrovňové knihovny používající vytvořit to:
vytvořit to и Kubernetes dodržovat stejný cyklus vydávání a podpory (matice kompatibility je velmi jednoduchá: hlavní verze Kubernetes и vytvořit to shodují se), a to, s přihlédnutím k zaměření na kompletní a komplexní testování provozu tohoto stacku vývojáři, nám dává právo očekávat maximální dosažitelnou stabilitu v provozu za jakýchkoliv scénářů použití (relativní lehkost je výhodná i zde vytvořit to ve srovnání s přístavní dělník z důvodu účelového omezení funkčnosti).
Při instalaci Kubernetes "správným způsobem" způsobem (podle OCI, samozřejmě) pomocí vytvořit to na CentOS 8 Narazili jsme na drobné potíže, které jsme však úspěšně překonali. Rád se s vámi podělím o návod na instalaci a konfiguraci, což celkem zabere asi 10 minut.
Jak nasadit Kubernetes na CentOS 8 pomocí frameworku CRI-O
Předpoklady: přítomnost alespoň jednoho hostitele (2 jádra, 4 GB RAM, alespoň 15 GB úložiště) s nainstalovaným CentOS 8 (doporučuje se instalační profil „Server“) a také jeho záznamy v místním DNS (jako poslední možnost si vystačíte se záznamem v /etc/hosts). A nezapomeň zakázat swap.
Veškeré operace provádíme na hostiteli jako uživatel root, buďte opatrní.
V prvním kroku nakonfigurujeme OS, nainstalujeme a nakonfigurujeme předběžné závislosti pro CRI-O.
Pojďme aktualizovat OS:
dnf -y update
Dále musíte nakonfigurovat firewall a SELinux. Zde vše závisí na prostředí, ve kterém bude náš hostitel nebo hostitelé pracovat. Firewall si můžete buď nastavit podle doporučení z dokumentacenebo, pokud jste v důvěryhodné síti nebo používáte bránu firewall třetí strany, změňte výchozí zónu na důvěryhodnou nebo bránu firewall vypněte:
nastavte požadovanou verzi vytvořit to (hlavní verze vytvořit to, jak již bylo zmíněno, odpovídat požadované verzi Kubernetes), od nejnovější stabilní verze Kubernetes aktuálně 1.18:
Věnujte pozornost první nuanci, se kterou se setkáme během procesu instalace: musíte upravit konfiguraci vytvořit to před spuštěním služby, protože požadovaná běžná komponenta má jiné umístění, než je zadané:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Nyní můžete aktivovat a spustit démona vytvořit to:
Druhá důležitá nuance: protože nepoužíváme démona přístavní dělník, ale používáme démona vytvořit to, před spuštěním a inicializací Kubernetes musíte provést příslušná nastavení v konfiguračním souboru /var/lib/kubelet/config.yaml po vytvoření požadovaného adresáře:
Třetí důležitý bod, na který narazíme při instalaci: přesto, že jsme uvedli použitý ovladač cgroupa jeho konfiguraci prostřednictvím předávaných argumentů kubelet je zastaralý (jak je výslovně uvedeno v dokumentaci), musíme do souboru přidat argumenty, jinak nebude náš cluster inicializován:
K přizpůsobení řídicí rovina nebo pracovník uzly během několika minut, můžete použít s tímto skriptem.
Je čas inicializovat náš cluster.
Chcete-li inicializovat cluster, spusťte příkaz:
kubeadm init --pod-network-cidr=10.244.0.0/16
Nezapomeňte si zapsat příkaz pro připojení ke clusteru „kubeadm join…“, o jehož použití budete požádáni na konci výstupu, nebo alespoň zadané tokeny.
Nainstalujme plugin (CNI) pro síť Pod. Doporučuji používat Kaliko. Možná populárnější Flanel má problémy s kompatibilitou nftables, a Kaliko - jediná implementace CNI doporučená a plně otestovaná projektem Kubernetes:
Chcete-li připojit pracovní uzel k našemu clusteru, musíte jej nakonfigurovat podle pokynů 1 a 2 nebo použít skripta poté spusťte příkaz z výstupu „kubeadm init...“, který jsme si zapsali v předchozím kroku:
Zkontrolujeme, zda je náš cluster inicializován a začal fungovat:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Připraveno! Na clusteru K8s již můžete hostovat užitečné zatížení.
Co nás čeká dál
Doufám, že vám výše uvedené pokyny pomohly ušetřit čas a nervy.
Výsledek procesů probíhajících v tomto odvětví často závisí na tom, jak jsou přijímány většinou koncových uživatelů a vývojářů jiného softwaru v odpovídajícím výklenku. Zatím není zcela jasné, k čemu povedou iniciativy OCI za pár let, ale budeme s potěšením sledovat. O svůj názor se můžete podělit už teď v komentářích.
Zůstaňte naladěni!
Tento článek se objevil díky následujícím zdrojům: