Hva er nodaffinitet i Kubernetes?
Node Affinity er en planlegger som tildeler nodene til spesifikke belg. Kubernetes pods bruker nodaffinitet. En pods evne til å erklære en tilhørighet for en bestemt gruppe noder som den kan plasseres på, er kjent som node affinitet. I nodeaffinitet utfører vi to typer planlegging - myk og hard planlegging. Gjennom nodeaffinitet vil vi sikre at de forskjellige belgene vi bruker er vert på spesifikke noder i Kubernetes -klyngen. I poden er hver node merket med en unik verdi.
Forutsetninger:
I vårt system må Linux- eller Ubuntu -operativsystemet installeres. Hvis Windows allerede er installert, kan du installere en virtuell maskin og kjøre den nyeste versjonen av Ubuntu i systemet ditt. Kubernetes må installeres i systemet etter installasjon. Du må være kjent med Kubernetes-kommandoer og KUBECTL-kommandolinjeverktøyet.
Les forutsetningene nøye. Etter å ha oppfylt disse kravene, kjør kommandoene i KUBECTL -kommandolinjen som er nevnt i følgende eksempler. La oss dele opp opplæringsprogrammene i trinn, hver med en kort forklaring.
Trinn 1: Kjør Kubernetes
I det første trinnet kjører vi Kubernetes i terminalen. Kommandoen er som følger:
> Minikube Start
Her gir Minikube oss et lokalt miljø der vi utfører de forskjellige operasjonene på klynger.
Så etter å ha kjørt kommandoen, starter Minikube og nodeplassen er reservert.
Trinn 2: Hent den eksisterende noden i Kubernetes
I dette trinnet vises de merkede nodene som for tiden eksisterer i systemet. For å få de merkede nodene, bruker vi en spesifikk kommando.
Kjør følgende kommando i systemet og vis resultatene:
> Kubectl Få noder -veiledning
I forrige skjermbilde så vi at denne kommandoen returnerer forskjellige parametere som navn, status, roller, alder, versjon og etiketter. Navneparametrene skal vise beholderens navn, statusparameteren er å returnere beholderens tilstand, rollerparameteren er å returnere hvem som kontrollerer beholderen, aldersparameteren skal returnere hvor lenge denne pod opprettes, versjonsparameteren skal returnere En versjon av denne poden, og etikettenes parameter er å returnere den spesifikke nodeverdien for denne pod.
Trinn 3: Definer Kubernetes Node Affinity
I dette trinnet definerer vi nodeaffiniteten for Minikube -beholderen. Node affinitet er avhengig av etiketten. Her tildeler vi etikettene ved hjelp av kommandoen. Kommandoen for å definere nodeaffiniteten er som følger:
> Kubectl etikettnoder Minikube Disktype == SSD
Vi fester en etikett til Minikube -noden hvis skivetype er SSD. Vi får listen over merkede noder etter merking av noder. Dette betyr at vi får listen over nodeaffiniteten. Her kjører vi den samme kommandoen igjen som vi brukte tidligere for å vise listen over de merkede nodene.
> KUBECTL Få noder -vaske -merkelapper
Trinn 4: Definer Node Affinity POD -konfigurasjonsfilen eller nodeaffiniteten i YAML -filen
I dette trinnet definerer vi nodaffiniteten i en YAML -fil. I en Minikube -beholder kjører vi følgende kommandoer for å opprette YAML -filen:
> Nano aff. Yaml
I Linux brukes Nano til filoppretting.
Etter utførelsen av kommandoen vises følgende vedlagte skjermbilde. Dette er en konfigurasjonsfil som inneholder informasjon om containere og klynger. Som det fremgår av følgende skjermbilde, er affinitet spesifisert. I node -tilhørighet gir det oss en "neurnuringschedulingignoredinging execution" -verdi. Det betyr at hard planlegging utføres på denne poden og poden krever denne planleggingen til enhver pris. I hard node affinitet heter det en pod som opprettes Nginx. Vi definerer denne pod -disktypen som planlagt på den nodedisktypen hvis vedlagte etikett er SSD. Husk alltid at når det vises “nødvendigechedulingignoreduringException”, utføres den harde planleggingen av nodeaffinitet.
På denne måten definerer vi poden med forskjellige typer nodeaffinitet.
Trinn 5: Kontroller om poden er planlagt i etikettnoden
I dette trinnet bestemmer vi om en pod er planlagt i en merket node eller ikke. For dette formålet kjører vi følgende kommando:
> KUBECTL Søk -f AFF.Yaml
Poden er opprettet med hell.
Trinn 6: Venv alle belg i Kubernetes
Etter det sjekker vi listen over løpende eller ventende pods i våre Kubernetes. Vi kjører følgende kommando som vises på skjermbildet:
.> Kubectl Get Pods -Output = Wide
I det tidligere festede skjermbildet merker vi at alle belgene er i løpestatus. Sammen med dette får vi alle Pods detaljer gjennom denne kommandoen.
Trinn 7: Lag poden for å definere nodaffiniteten i Kubernetes
I dette trinnet kjører vi kommandoen igjen for definisjon av node affinitet. Vi oppretter en YAML -fil med “PF.yaml ”navn. Kommandoen er som følger:
> Nano pf.Yaml
Trinn 8: Kontroller node -affinitetstypen
I dette trinnet vil vi se hvilken type nodeaffinitet som er definert i denne YAML -filen. Navnet på pod er nginx. Spesifikasjonen er affinitet, som vist i følgende skjermbilde. I node -tilhørighet brukes "PreferredDuringSchedulingignoreduringException". Når det foretrukne ordet brukes, betyr det at node affinitetstypen er myk. Myk nodeaffinitet betyr at hvis planen foretrekker noden og etikettene samsvarer med det gitte kamputtrykket, er det greit. Ellers kan du ignorere og planlegge pod.
Trinn 9: Sjekk om podet er planlagt å merke noden
I dette trinnet sjekker vi om alle belgene vi opprettet er planlagt med etikettnoder. Av denne grunn kjører vi følgende kommando for å opprette POD som en YAML -fil:
> Kubectl gjelder -f pf.Yaml
Poden er opprettet med hell.
Trinn 10: Veng alle belg i Kubernetes
Her kjører vi kommandoen for å se om alle belg er planlagt med merkede noder. Vi kjører følgende kommando i terminalen:
> Kubectl Get Pods -Output = Wide
Den samme prosessen gjentas for myk node -affinitet som vi diskuterte tidligere for hard node -affinitet. Alle nodene er i løpestatus, noe som betyr at alle belg er planlagt med etikettnoder.
Konklusjon
Node Affinity er en planlegger for belg på etikettnoder. Node affinitet inkluderer et sett med regler i både hard og myk form. Dette er hva vi lærte i detalj. Vi antar at du lærte mye av denne opplæringen. Du kan øve på det for forbedring.