ProHoster > Blog > administration > CRI-O som erstatning for Docker som runtime-miljø for Kubernetes: opsætning på CentOS 8
CRI-O som erstatning for Docker som runtime-miljø for Kubernetes: opsætning på CentOS 8
Hej! Mit navn er Sergey, jeg er DevOps hos Surf. DevOps-afdelingen hos Surf har ikke kun til formål at etablere interaktion mellem specialister og integrere arbejdsprocesser, men også aktivt at forske i og implementere aktuelle teknologier både i sin egen infrastruktur og i kundens infrastruktur.
Nedenfor vil jeg fortælle lidt om ændringerne i teknologistakken for containere, som vi stødte på, mens vi studerede distributionen 8 CentOS og om hvad det er skabe det og hvordan man hurtigt opsætter et eksekverbart miljø til Kubernetes.
Hvorfor er Docker ikke inkluderet i CentOS 8?
Efter installation af de seneste større udgivelser RHEL 8 eller 8 CentOS man kan ikke undgå at bemærke: disse distributioner og officielle arkiver indeholder ikke applikationen Docker, som ideologisk og funktionelt erstatter pakker Podman, Buildah (til stede i distributionen som standard) og skabe det. Det skyldes den praktiske implementering af standarder udviklet blandt andet af Red Hat som en del af Open Container Initiative (OCI) projektet.
Målet med OCI, som er en del af The Linux Foundation, er at skabe åbne industristandarder for containerformater og kørselstider, der løser flere problemer på én gang. For det første var de ikke i modstrid med Linux-filosofien (for eksempel i den del, at hvert program skulle udføre én handling, og Docker er en slags alt-i-én mejetærsker). For det andet kunne de fjerne alle eksisterende mangler i softwaren Docker. For det tredje ville de være fuldt ud kompatible med forretningskravene fra førende kommercielle platforme til at implementere, administrere og betjene containeriserede applikationer (for eksempel Red Hat OpenShift).
Begrænsninger Docker og fordelene ved den nye software er allerede blevet beskrevet mere detaljeret i denne artikel, og en detaljeret beskrivelse af hele softwarestakken, der tilbydes inden for OCI-projektet og dets arkitektoniske funktioner, kan findes i den officielle dokumentation og artikler fra Red Hat selv (ikke en dårlig artiklen i Red Hat blog) og i tredjepart anmeldelser.
Det er vigtigt at bemærke, hvilken funktionalitet komponenterne i den foreslåede stak har:
Podman — direkte interaktion med containere og billedlagring gennem runC-processen;
Buildah — samling og upload af billeder til registreringsdatabasen;
skabe det — et eksekverbart miljø til containerorkestreringssystemer (f.eks. Kubernetes).
Jeg tror, at for at forstå det generelle skema for interaktion mellem komponenterne i stakken, er det tilrådeligt at give et forbindelsesdiagram her Kubernetes c runC og biblioteker på lavt niveau ved hjælp af skabe det:
skabe det и Kubernetes overhold den samme udgivelses- og supportcyklus (kompatibilitetsmatrixen er meget enkel: større versioner Kubernetes и skabe det falder sammen), og dette, under hensyntagen til fokus på fuldstændig og omfattende test af driften af denne stak af udviklere, giver os ret til at forvente den maksimalt opnåelige stabilitet i drift under alle brugsscenarier (relativ lethed er også fordelagtig her skabe det sammenlignet med Docker på grund af målrettet begrænsning af funktionalitet).
Når du installerer Kubernetes "rigtige måde" måde (ifølge OCI, selvfølgelig) ved hjælp af skabe det på 8 CentOS Vi stødte på nogle mindre vanskeligheder, som vi dog med succes overkom. Jeg deler gerne installations- og konfigurationsinstruktioner med dig, som i alt vil tage omkring 10 minutter.
Sådan implementeres Kubernetes på CentOS 8 ved hjælp af CRI-O-rammeværket
Forudsætninger: tilstedeværelse af mindst én vært (2 kerner, 4 GB RAM, mindst 15 GB lagerplads) med installeret 8 CentOS (“Server” installationsprofilen anbefales), samt indtastninger til den i den lokale DNS (som en sidste udvej kan du klare dig med en indtastning i /etc/hosts). Og glem det ikke deaktiver swap.
Vi udfører alle operationer på værten som root-bruger, vær forsigtig.
I det første trin vil vi konfigurere OS, installere og konfigurere foreløbige afhængigheder for CRI-O.
Lad os opdatere OS:
dnf -y update
Dernæst skal du konfigurere firewallen og SELinux. Her afhænger alt af det miljø, som vores vært eller værter vil arbejde i. Du kan enten opsætte en firewall i henhold til anbefalingerne fra dokumentation, eller, hvis du er på et betroet netværk eller bruger en tredjeparts firewall, skal du ændre standardzonen til betroet eller slukke for firewallen:
indstille den ønskede version skabe det (større version skabe det, som allerede nævnt, match den påkrævede version Kubernetes), siden den seneste stabile version Kubernetes lige nu 1.18:
Vær opmærksom på den første nuance, vi støder på under installationsprocessen: du skal redigere konfigurationen skabe det før du starter tjenesten, da den påkrævede conmon-komponent har en anden placering end den angivne:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Den anden vigtige nuance: da vi ikke bruger en dæmon Docker, men vi bruger dæmonen skabe det, før lancering og initialisering Kubernetes du skal foretage de relevante indstillinger i konfigurationsfilen /var/lib/kubelet/config.yaml, efter først at have oprettet den ønskede mappe:
Det tredje vigtige punkt, som vi støder på under installationen: på trods af, at vi har angivet den anvendte driver cgruppe, og dens konfiguration gennem de begivne argumenter kubelet er forældet (som det udtrykkeligt er angivet i dokumentationen), skal vi tilføje argumenter til filen, ellers bliver vores klynge ikke initialiseret:
At tilpasse kontrol-plan eller arbejdstager noder på få minutter, kan du bruge med dette script.
Det er tid til at initialisere vores klynge.
For at initialisere klyngen skal du køre kommandoen:
kubeadm init --pod-network-cidr=10.244.0.0/16
Sørg for at skrive kommandoen ned for at slutte sig til klyngen "kubeadm join ...", som du bliver bedt om at bruge i slutningen af outputtet, eller i det mindste de angivne tokens.
Lad os installere plugin'et (CNI) til Pod-netværket. Jeg anbefaler at bruge Calico. Muligvis mere populær flannel har kompatibilitetsproblemer med nftables, og Calico - den eneste CNI-implementering anbefalet og fuldt testet af projektet Kubernetes:
For at forbinde en arbejderknude til vores klynge skal du konfigurere den i henhold til instruktioner 1 og 2, eller bruge manuskript, kør derefter kommandoen fra "kubeadm init..." outputtet, som vi skrev ned i det forrige trin:
Lad os kontrollere, at vores klynge er initialiseret og begyndt at fungere:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Parat! Du kan allerede hoste nyttelast på din K8s-klynge.
Hvad venter os forude
Jeg håber, at instruktionerne ovenfor hjalp dig med at spare tid og nerver.
Resultatet af processer, der forekommer i industrien, afhænger ofte af, hvordan de accepteres af hovedparten af slutbrugere og udviklere af anden software i den tilsvarende niche. Det er endnu ikke helt klart, hvad OCI-initiativerne vil føre til om nogle år, men vi vil se med glæde. Du kan dele din mening lige nu i kommentarerne.
Bliv hængende!
Denne artikel dukkede op takket være følgende kilder: