Taints och tolerationer
Förhindra att Pods schemaläggs på specifika noder med taints och tillåt vissa Pods att tolerera dem.
Taints och tolerationer är en gratis lektion i Grunderna i Kubernetes på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Kubernetes, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Kubernetes innehåller totalt 4 lektioner.
Vad är Taints?
Föreställ dig att du har särskilda noder i ditt Kubernetes-kluster, kanske med särskild maskinvara som GPU:er eller reserverade för vissa arbetsbelastningar. Du vill väl inte att vilken Pod som helst ska placeras där?
Det är här Taints kommer in! En Taint är en egenskap som tillämpas på en nod och som hindrar Pods från att schemaläggas där, såvida Pods inte uttryckligen ”tolererar” denna taint.
Anledningar att använda Taints
Taints är mycket användbara för att styra var Pods körs:
- Dedikerade noder: Reservera noder för specifika team eller applikationer.
- Särskild maskinvara: Isolera noder med GPU:er eller SSD-enheter med hög prestanda för Pods som behöver dem.
- Underhåll: Markera en nod för underhåll så att nya Pods tillfälligt hindras från att schemaläggas där.
Så fungerar Taints
Se en Taint som en ”obehörigt tillträde förbjudet”-skylt på en nod. En Pod kan bara bortse från skylten om den har ett matchande ”tillstånd” som kallas Toleration.
En Taint består av en nyckel, ett värde och en effekt. Exempel: key=value:effect.
Förstå Taint-effekter
Delen ”effect” i en Taint anger vad Kubernetes ska göra med Pods som inte tolererar den. Det finns tre huvudsakliga effekter:
NoSchedulePreferNoScheduleNoExecute
Vi tittar på var och en.
Taint-effekt: NoSchedule
Effekten NoSchedule är den striktaste. Om en nod har en Taint med NoSchedule schemaläggs ingen Pod på noden om den inte har en matchande toleration.
Befintliga Pods som redan körs på noden påverkas INTE av en ny Taint med NoSchedule.
Taint-effekt: PreferNoSchedule
PreferNoSchedule är en ”mjuk” variant av NoSchedule. Kubernetes försöker så långt det går att undvika att schemalägga Pods på en nod med Taint, men det är inget hårt krav.
Om det inte finns några andra lämpliga noder kan en Pod ändå schemaläggas på en nod med Tainten PreferNoSchedule, även utan en toleration.
Taint-effekt: NoExecute
Effekten NoExecute är unik eftersom den påverkar Pods som *redan körs*. Om en nod har en Taint med NoExecute gäller följande:
- Pods utan en matchande toleration *avlägsnas omedelbart*.
- Nya Pods utan en matchande toleration kan inte schemaläggas.
Detta används ofta när noder töms eller vid nodfel.
Introduktion till Tolerations
Medan Taints tillämpas på noder tillämpas Tolerations på Pods. En Pods toleration gör att den kan schemaläggas på en nod som har en matchande Taint.
Utan en matchande toleration kan en Pod inte schemaläggas på en nod med Taint (eller föredrar att inte schemaläggas där).
Tolerations i Pod-manifest
Du definierar tolerations i en Pods YAML-manifest, under avsnittet spec. Så här tolererar en Pod en Taint med key=value:NoSchedule:
apiVersion: v1
kind: Pod
metadata:
name: my-tolerated-pod
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "special-purpose"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"Så matchas Taints och Tolerations
För att en Pod ska kunna schemaläggas på en nod med Taint måste dess toleration matcha nodens Taint. Matchningen omfattar:
- Nyckel: Måste vara samma.
- Värde: Måste vara samma om
operator: Equalanvänds. - Effekt: Måste vara samma.
- Operator: Kan vara
EqualellerExists(vilket betyder att nyckeln kan ha vilket värde som helst).
En särskild toleration, key: "" operator: Exists, tolererar *alla* Taints.
Snabbtest: Taints
En nod har Tainten env=production:NoSchedule. Vilken Pod-konfiguration gör att den kan schemaläggas på noden?
Sammanfattning: Taints och Tolerations
Du har lärt dig om Taints och Tolerations!
- Taints tillämpas på noder för att hålla Pods borta.
- Tolerations tillämpas på Pods för att tillåta att de schemaläggs på noder med Taints.
- De viktigaste Taint-effekterna är
NoSchedule,PreferNoScheduleochNoExecute. - Tolerations måste matcha Taintens nyckel, värde och effekt för att en Pod ska kunna schemaläggas.
Dessa verktyg ger dig detaljerad kontroll över var Pods placeras!
Lär dig Grunderna i Kubernetes med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Taints och tolerationer” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Kubernetes, inklusive ”Taints och tolerationer”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Kubernetes innehåller totalt 4 lektioner.
Vad lär jag mig i ”Taints och tolerationer”?
Förhindra att Pods schemaläggs på specifika noder med taints och tillåt vissa Pods att tolerera dem. Ni övar på Grunderna i Kubernetes med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Kubernetes?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Kubernetes på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Taints och tolerationer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Kubernetes-lektionen?
Ja. Varje Grunderna i Kubernetes-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Resursbegäranden och gränser
- Nodväljare och affinitet
- Taints och tolerationer
- Pod-prioritet och preemption