ProHoster > Blog > Administratioun > CRI-O als Ersatz fir Docker als Runtime Ëmfeld fir Kubernetes: Setup op CentOS 8
CRI-O als Ersatz fir Docker als Runtime Ëmfeld fir Kubernetes: Setup op CentOS 8
Hallo! Mäin Numm ass Sergey, ech sinn DevOps bei Surf. D'DevOps Departement bei Surf zielt net nëmmen d'Interaktioun tëscht Spezialisten z'etabléieren an d'Aarbechtsprozesser z'integréieren, awer och aktiv ze recherchéieren an aktuell Technologien souwuel an der eegener Infrastruktur wéi och an der Infrastruktur vum Client ze realiséieren.
Drënner wäert ech e bëssen iwwer d'Ännerungen am Technologiestack fir Container schwätzen, déi mir begéint hunn wärend der Verdeelung studéiert. CentOS 8 an iwwer wat et ass CRI-O a wéi Dir séier en ausführbar Ëmfeld opbaut fir Kubernetes.
Firwat ass Docker net an CentOS 8 abegraff?
Nodeems Dir déi lescht grouss Verëffentlechungen installéiert hutt RECHEL 8 oder CentOS 8 et kann net hëllefen, awer ze bemierken: dës Verdeelungen an offiziell Repositories enthalen net d'Applikatioun Docker, déi ideologesch a funktionell Packagen ersetzen podman, Buildah (präsent an der Verdeelung als Standard) an CRI-O. Dëst ass wéinst der praktescher Ëmsetzung vu Standarden, déi ënner anerem vum Red Hat am Kader vum Open Container Initiative (OCI) Projet entwéckelt goufen.
D'Zil vun OCI, deen Deel vun der Linux Foundation ass, ass oppe Industriestandards fir Containerformater a Runtime ze kreéieren déi verschidde Probleemer gläichzäiteg léisen. Als éischt hunn se d'Philosophie vu Linux net widdersprécht (zum Beispill am Deel datt all Programm eng Handlung sollt ausféieren, an Docker ass eng Zort All-in-One Kombinatioun). Zweetens kënne se all existent Mängel an der Software eliminéieren Docker. Drëttens, si wiere voll kompatibel mat de Geschäftsbedéngungen vu féierende kommerziellen Plattforme fir d'Deployment, d'Gestioun an d'Déngscht vun containeriséierte Applikatiounen (zum Beispill Red Hat OpenShift).
Defiziter Docker an d'Virdeeler vun der neier Software sinn schonn am Detail beschriwwe ginn dësen Artikel, an eng detailléiert Beschreiwung vum ganze Software Stack ugebueden am OCI Projet a seng architektonesch Fonctiounen kann an der offizieller Dokumentatioun an Artikele vum Red Hat selwer fonnt ginn (net schlecht en Artikel am Red Hat Blog) an an Drëtt Partei Rezensiounen.
Et ass wichteg ze notéieren wéi eng Funktionalitéit d'Komponente vum proposéierte Stack hunn:
podman - direkt Interaktioun mat Container a Bildlagerung duerch de RunC Prozess;
Buildah - Assemblée an eropluede Biller an de Registry;
CRI-O - en ausféierbar Ëmfeld fir Container Orchestratiounssystemer (zum Beispill Kubernetes).
Ech denken datt fir den allgemenge Schema vun der Interaktioun tëscht de Komponente vum Stack ze verstoen, ass et ubruecht e Verbindungsdiagramm hei ze bidden Kubernetes c runC an niddereg-Niveau Bibliothéiken benotzt CRI-O:
CRI-O и Kubernetes hale sech un déiselwecht Verëffentlechung an Ënnerstëtzungszyklus (d'Kompatibilitéitsmatrix ass ganz einfach: grouss Versiounen Kubernetes и CRI-O zesummekommen), an dëst, andeems de Fokus op kompletten an ëmfaassenden Tester vun der Operatioun vun dësem Stack vun Entwéckler berécksiichtegt, gëtt eis d'Recht déi maximal erreechbar Stabilitéit an der Operatioun ënner all Benotzungsszenarien ze erwaarden (relativ Liichtegkeet ass och gutt hei CRI-O verglach mat Docker opgrond vun enger gezielter Begrenzung vun der Funktionalitéit).
Bei der Installatioun Kubernetes "richteg Manéier" Manéier (no OCI, natierlech) benotzt CRI-O op CentOS 8 Mir stoungen op e puer kleng Schwieregkeeten, déi mir awer erfollegräich iwwerwonnen hunn. Ech wäert frou Iech Installatiouns- a Konfiguratiounsinstruktiounen ze deelen, déi am Ganzen ongeféier 10 Minutten daueren.
Wéi deployéiert Kubernetes op CentOS 8 mam CRI-O Kader
Viraussetzunge: Präsenz vun mindestens engem Host (2 Kären, 4 GB RAM, mindestens 15 GB Späichere) mat installéiert CentOS 8 (de "Server" Installatiounsprofil ass recommandéiert), souwéi Entréen dofir an der lokaler DNS (als leschten Auswee kënnt Dir mat engem Entrée an /etc/hosts duerchgoen). An net vergiessen auszeschalten Swap.
Mir maachen all Operatiounen um Host als Root Benotzer, passt op.
Am éischte Schrëtt wäerte mir d'OS konfiguréieren, virleefeg Ofhängegkeete fir CRI-O installéieren a konfiguréieren.
Loosst eis den OS aktualiséieren:
dnf -y update
Als nächst musst Dir d'Firewall a SELinux konfiguréieren. Hei hänkt alles vum Ëmfeld of, an deem eise Host oder Hosten schaffe wäerten. Dir kënnt entweder eng Firewall opbauen no de Empfehlungen vun Dokumentatioun, oder, wann Dir op engem vertrauenswürdege Netzwierk sidd oder eng Drëtt-Partei Firewall benotzt, ännert d'Standardzon op vertraut oder schalt d'Firewall aus:
déi néideg Versioun setzen CRI-O (Major Versioun CRI-O, wéi schonn ernimmt, Match der néideg Versioun Kubernetes), zënter der leschter stabiler Versioun Kubernetes aktuell 1.18:
Opgepasst op déi éischt Nuance déi mir während dem Installatiounsprozess begéinen: Dir musst d'Konfiguratioun änneren CRI-O ier Dir de Service ufänkt, well déi erfuerderlech Conmon Komponent eng aner Plaz huet wéi déi spezifizéiert:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Elo kënnt Dir den Daemon aktivéieren an starten CRI-O:
systemctl enable --now crio
Dir kënnt den Daemon Status kontrolléieren:
systemctl status crio
Installatioun an Aktivatioun Kubernetes.
Loosst eis de erfuerderleche Repository addéieren:
Déi zweet wichteg Nuance: well mir net en Daemon benotzen Docker, mee mir benotzen den Daemon CRI-O, virum Start an Initialiséierung Kubernetes Dir musst déi entspriechend Astellungen an der Konfiguratiounsdatei /var/lib/kubelet/config.yaml maachen, nodeems Dir als éischt de gewënschte Verzeichnis erstallt hutt:
Den drëtte wichtege Punkt dee mir während der Installatioun begéinen: trotz der Tatsaach datt mir de benotzte Chauffer uginn hunn cgroup, a seng Konfiguratioun duerch d'Argumenter passéiert kubelet ass veroudert (wéi explizit an der Dokumentatioun uginn), musse mir Argumenter an d'Datei addéieren, soss gëtt eise Cluster net initialiséiert:
Fir ze personaliséieren Kontroll-Fliger oder Aarbechter Noden a Minutten, kënnt Dir benotzen mat dësem Skript.
Et ass Zäit eise Cluster ze initialiséieren.
Fir de Cluster ze initialiséieren, fuert de Kommando:
kubeadm init --pod-network-cidr=10.244.0.0/16
Gitt sécher de Kommando opzeschreiwen fir de Cluster "kubeadm join ..." ze verbannen, deen Dir gefrot gëtt um Enn vun der Ausgab ze benotzen, oder op d'mannst déi spezifizéiert Tokens.
Loosst eis de Plugin (CNI) fir de Pod Netzwierk installéieren. Ech recommandéieren ze benotzen Calico. Méiglech méi populär Flannel huet Onbedenklechkeet Problemer mat nftables,jo an Calico - déi eenzeg CNI Ëmsetzung recommandéiert a voll getest vum Projet Kubernetes:
Fir e Worker Node mat eisem Cluster ze verbannen, musst Dir en no den Instruktioune 1 an 2 konfiguréieren, oder benotzen Schrëft, fuert dann de Kommando aus dem "kubeadm init..." Output deen mir am virege Schrëtt geschriwwen hunn:
Loosst eis kucken ob eise Cluster initialiséiert ass an ugefaang huet ze schaffen:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Fäerdeg! Dir kënnt scho Notzlaascht op Ärem K8s Cluster hosten.
Wat op eis erwaart
Ech hoffen, datt d'Instruktioune hei uewen gehollef hunn Iech Zäit an Nerven ze spueren.
D'Resultat vu Prozesser, déi an der Industrie optrieden, hänkt dacks dovun of wéi se vun de Gros vun Endbenotzer an Entwéckler vun anere Software an der entspriechender Nisch akzeptéiert ginn. Wat d'OCI-Initiativen an e puer Joer wäerte féieren ass nach net ganz kloer, mä mir wäerte mat Freed kucken. Dir kënnt Är Meenung elo an de Kommentaren deelen.