Hvordan bruke Taint på Kubernetes

Hvordan bruke Taint på Kubernetes
Kubernetes er det beste beholdermiljøet som bruker klynger, noder og pods for å kjøre applikasjoner. Pods, noder og klynger er sammenkoblet, og de jobber hånd i hånd. En klynge har en eller flere noder som en eller flere belg er planlagt, og disse belgene brukes til å kjøre applikasjoner. I Kubernetes -administrasjonen er POD -planlegging et veldig viktig aspekt, da det spiller en essensiell rolle i kostnadsreduksjon, forbedring av ytelsen og hjelper klyngen i skaleringsstyring. Taints hjelper planleggingen med å balansere arbeidsmengden på nodene og bestemme hvilken pod som skal planlegges på noden. Denne artikkelen vil demonstrere hva en smekk er og hvordan den er definert for en node mens den diskuterer hvordan den kan brukes på Kubernetes.

Hva er smake?

Kombinasjonen av belg, noder og klynger fungerer sammen. Pods er tiltrukket av nodene av node -affinitetsegenskapen mens taints begrenser belgene som skal planlegges på nodene. Toleranse og taints jobber sammen for å sikre at ingen pod blir planlagt på feil node. Disse egenskapene sikrer at belgene er planlagt på riktig node og også administrere arbeidsmengden til en node ved å distribuere en lik arbeidsmengde på alle nodene i klyngen. Taints er definert for noden ved hjelp av nodespesifikasjonen mens pods bruker toleransen fra POD -spesifikasjonen.

Taints er begrensningene som gjør det mulig for en node å avvise belgene som planlegges på noden. På den annen side fungerer toleranse mot taints og lar belgene planlegges på noden selv om de har definert taints. Det kan være mer enn én taint definert for belgene for å sikre at belgene ikke blir planlagt med mindre de tåler den definerte smaken. Her demonstrerer vi hvordan du bruker taints på Kubernetes Pods ved hjelp av et enkelt, kort og enkelt eksempel.

Forutsetninger

Forsikre deg om at du har følgende verktøy installert på systemet ditt før du fortsetter med denne guiden. Med disse grunnleggende verktøyene vil du ikke kunne bruke taints på Kubernetes -noder.

  • Ubuntu 20.02 eller noen annen siste versjon
  • Kubectl kommandolinjeverktøy
  • Kubernetes Cluster
  • Minikube Cluster

Forsikre deg om at disse verktøyene er riktig installert og konfigurert i systemet ditt, slik at du ikke har noe problem med å bruke taints på Kubernetes -noder. Forutsatt at du har systemet ditt klart med alle disse verktøyene installert, flytter vi til neste avsnitt.

Hvordan bruke taints på Kubernetes -noder?

Her vil vi presentere et enkelt scenario for å hjelpe deg med å lære å bruke en smekk på en Kubernetes -node. La oss starte!

Trinn 1: Start Minikube -klyngen

Først må du starte Minikube -klyngen slik at du kan bruke KUBECTL -kommandoene og kjøre søknaden din. Minikube -klyngen lar deg distribuere nodene, belgene og til og med klyngen i Kubernetes -miljøet. Derfor er det viktig å holde Minikube i aktiv modus ved å bruke følgende kommando:

Kalsoom@Kalsoom-VirtualBox> Minikube Start

Dette vil aktivere Minikube -klyngen og gjøre Kubernetes -miljøet klart til å bruke smaken på noden.

Trinn 2: Få listen over noder

Som vi diskutert ovenfor, er Kubernetes -miljøet basert på noder, belter og klynger. Pods er planlagt på nodene, og vi må definere smaken for den noden for å forhindre at belgene blir planlagt på den noden. Så her viser vi listen over noder for å sjekke hvilken node som allerede har en taint definert for den av Kubernetes standardinstallasjon. I tillegg vil vi bruke følgende kommando:

kalsoom@kalsoom-virtualBox> Kubectl Get Nodes -O = Custom-Columns = NodeName:.metadata.Navn, Taintkey:.spesifikasjon.Taints [*].Nøkkel, taintvalue:.spesifikasjon.Taints [*].Verdi, taindeffect:.spesifikasjon.Taints [*].effekt

Fra utdataene over kan vi merke at ingen pod er besatt av standard Kubernetes -installasjon, slik at vi kan besøke denne noden.

Trinn 3: Taint the Node

Noden kan skylles ved å bruke følgende kommando:

Kalsoom@Kalsoom-VirtualBox> Kubectl Taint Nodes Minikube App = Frontend: Noschedule

Som du kan se i utdataene, har noden 'Minikube' blitt besatt med 'Noschedule' -effekten med nøkkelnavnet '-appen' med en 'frontend' verdi. Dette har begrenset belgene som skal planlegges på noden. Så nå kan ingen pod plasseres på denne noden til en toleranse er definert mot smaken.

Trinn 4: Planlegg belgene på noden

I dette trinnet vil vi prøve å planlegge poden på noden som vi har besatt i forrige trinn. Vi distribuerer belgene på klyngen som ikke har noen toleranse definert i APP -distribusjonsspesifikasjonen. Se prosessen gitt nedenfor:

Trinn 4A: Lag et navneområde

Bruk først den gitte kommandoen her for å opprette et navneområde:

Kalsoom@Kalsoom-VirtualBox> Kubectl Create NS Frontend

Trinn 4B: Kjør Nginx -fil på navneområdet

Kjør nå Nginx -filen på navneområdet som vi nettopp har opprettet ved å bruke følgende kommando:

Kalsoom@Kalsoom -VirtualBox> Kubectl Run Nginx -Image = Nginx -Namespace Frontend

Trinn 4C: Sjekk PODS -status

Nå, sjekk statusen til belgene for å se om de er planlagt på nodene eller ikke. Siden det ikke er noen toleranse definert for klyngen, skal ikke poden planlegges på noen node i klyngen. La oss sjekke statusen til podene med kommandoen gitt nedenfor:

Kalsoom@Kalsoom -VirtualBox> Kubectl Get Pods -N Frontend

Statusen til poden er 'i påvente', noe som betyr at den ikke er planlagt på noen node. Vi kan bekrefte om det er planlagt på noen node i klyngen eller ikke ved å sjekke hendelsene med følgende kommando:

Kalsoom@Kalsoom -VirtualBox> Kubectl Get Events -N Frontend

Fra utgangen kan du se at ingen node er tilgjengelig for at belgene skal planlegges fordi det ikke er noen toleranse definert for nodene.

Konklusjon

Vi lærte å bruke taints på Kubernetes -nodene. Vi utforsker hva en taint er og hvilken funksjon den utfører i et Kubernetes -miljø. Vi lærte av denne artikkelen at toleranse og taints går hånd i hånd. Taints er definert for nodene i nodespesifikasjonen mens toleranse er definert for podene i POD -spesifikasjonen. Taints begrenser belgene som skal planlegges på noden mens toleransen fungerer mot smaken og lar podene bli planlagt på noder.