Taints og tolerations
Forhindr Pods i at blive planlagt på bestemte noder ved hjælp af taints, og lad bestemte Pods tolerere dem.
Taints og tolerations er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad er taints?
Forestil dig, at du har særlige noder i din Kubernetes-klynge, måske med bestemt hardware som GPU'er eller reserveret til bestemte arbejdsbelastninger. Du vil vel ikke have, at en hvilken som helst Pod placeres der?
Det er her, taints kommer ind i billedet! En taint er en egenskab, der anvendes på en node, og som forhindrer Pods i at blive planlagt på den, medmindre de pågældende Pods udtrykkeligt "tåler" denne taint.
Grunde til at bruge taints
Taints er meget nyttige til at styre, hvor Pods kører:
- Dedikerede noder: Reserver noder til bestemte teams eller applikationer.
- Særlig hardware: Isolér noder med GPU'er eller højtydende SSD'er til Pods, der har brug for dem.
- Vedligeholdelse: Markér en node til vedligeholdelse, så nye Pods midlertidigt ikke kan planlægges der.
Sådan fungerer taints
Betragt en taint som et "ingen adgang"-skilt på en node. En Pod kan kun ignorere skiltet, hvis den har en matchende "tilladelse", der kaldes en toleration.
En taint består af en nøgle, en værdi og en effekt. For eksempel: key=value:effect.
Forstå taint-effekter
En taints del med "effekt" fortæller Kubernetes, hvad der skal ske med Pods, som ikke tolererer den. Der er tre hovedeffekter:
NoSchedulePreferNoScheduleNoExecute
Lad os se på hver af dem.
Taint-effekt: NoSchedule
Effekten NoSchedule er den strengeste. Hvis en node har en taint med NoSchedule, planlægges ingen Pod på den node, medmindre den har en matchende toleration.
Eksisterende Pods, der allerede kører på noden, påvirkes IKKE af en ny taint med NoSchedule.
Taint-effekt: PreferNoSchedule
PreferNoSchedule er en "blød" version af NoSchedule. Kubernetes vil gøre sit bedste for at undgå at planlægge Pods på en node med taint, men det er ikke et hårdt krav.
Hvis der ikke findes andre egnede noder, kan en Pod stadig blive planlagt på en node med tainten PreferNoSchedule, selv uden en toleration.
Taint-effekt: NoExecute
Effekten NoExecute er særlig, fordi den påvirker Pods, der *allerede kører*. Hvis en node har en taint med NoExecute:
- bliver Pods uden en matchende toleration *straks fjernet*.
- kan nye Pods uden en matchende toleration ikke planlægges.
Dette bruges ofte til at tømme noder eller håndtere nodefejl.
Introduktion til tolerations
Mens taints anvendes på noder, anvendes tolerations på Pods. En Pods toleration gør det muligt at planlægge den på en node, der har en matchende taint.
Uden en matchende toleration kan en Pod ikke planlægges på en node med taint, eller den foretrækker ikke at blive det.
Tolerations i Pod-manifestfiler
Du definerer tolerations i en Pods YAML-manifestfil under sektionen spec. Sådan tolererer 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ådan matcher taints og tolerations
For at en Pod kan planlægges på en node med taint, skal dens toleration matche nodens taint. Matchet omfatter:
- Nøgle: Skal være den samme.
- Værdi: Skal være den samme, hvis
operator: Equalbruges. - Effekt: Skal være den samme.
- Operator: Kan være
EqualellerExists(hvilket betyder en vilkårlig værdi for nøglen).
En særlig toleration, key: "" operator: Exists, tolererer *enhver* taint.
Hurtigt tjek: Taints
En node har tainten env=production:NoSchedule. Hvilken Pod-konfiguration gør det muligt at planlægge den på denne node?
Opsummering: Taints og tolerations
Du har lært om taints og tolerations!
- Taints anvendes på noder for at holde Pods væk.
- Tolerations anvendes på Pods for at gøre det muligt at planlægge dem på noder med taints.
- De vigtigste taint-effekter er
NoSchedule,PreferNoScheduleogNoExecute. - Tolerations skal matche taintens nøgle, værdi og effekt, for at en Pod kan planlægges.
Disse værktøjer giver dig detaljeret kontrol over placeringen af Pods!
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Taints og tolerations” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Taints og tolerations”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Taints og tolerations”?
Forhindr Pods i at blive planlagt på bestemte noder ved hjælp af taints, og lad bestemte Pods tolerere dem. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Taints og tolerations”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Ressourceanmodninger og -grænser
- Node-selektorer og affinity
- Taints og tolerations
- Pod-prioritet og preemption