0Pricing
DevOps Bootcamp · Lezione

Taint e toleration

Impedisca la pianificazione dei Pod su nodi specifici utilizzando i taint e consenta a determinati Pod di tollerarli.

Taint e toleration è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Che cosa sono le Taint?

Immaginate di avere nodi speciali nel vostro cluster Kubernetes, magari dotati di hardware specifico come GPU o riservati a determinati workload. Non vorreste che un Pod qualsiasi venisse eseguito su questi nodi, giusto?

È qui che entrano in gioco le Taint. Una Taint è una proprietà applicata a un nodo che impedisce di pianificarvi i Pod, a meno che questi non "tollerino" esplicitamente la taint.

Perché usare le Taint

Le Taint sono molto utili per gestire dove vengono eseguiti i Pod:

  • Nodi dedicati: riservare nodi a team o applicazioni specifici.
  • Hardware speciale: isolare nodi con GPU o SSD ad alte prestazioni per i Pod che ne hanno bisogno.
  • Manutenzione: contrassegnare un nodo per la manutenzione, impedendo temporaneamente la pianificazione di nuovi Pod su di esso.

Come funzionano le Taint

Considerate una Taint come un cartello "vietato l'accesso" su un nodo. Un Pod può ignorare questo cartello solo se dispone di un "permesso" corrispondente chiamato Toleration.

Una Taint è composta da una chiave, un valore e un effetto. Ad esempio: key=value:effect.

Capire gli effetti delle Taint

La parte "effetto" di una Taint indica a Kubernetes che cosa fare con i Pod che non la tollerano. Esistono tre effetti principali:

  • NoSchedule
  • PreferNoSchedule
  • NoExecute

Esaminiamoli uno alla volta.

Effetto della Taint: NoSchedule

L'effetto NoSchedule è il più rigido. Se un nodo ha una taint con effetto NoSchedule, nessun Pod verrà pianificato su quel nodo, a meno che non disponga di una toleration corrispondente.

I Pod già in esecuzione sul nodo NON vengono interessati dall'aggiunta di una nuova taint NoSchedule.

Effetto della Taint: PreferNoSchedule

PreferNoSchedule è la versione "soft" di NoSchedule. Kubernetes farà del suo meglio per evitare di pianificare i Pod su un nodo soggetto a taint, ma non si tratta di un requisito rigido.

Se non sono disponibili altri nodi adatti, un Pod potrebbe comunque essere pianificato su un nodo con taint PreferNoSchedule, anche senza una toleration.

Effetto della Taint: NoExecute

L'effetto NoExecute è particolare perché interessa i Pod *già in esecuzione*. Se un nodo ha una taint NoExecute:

  • I Pod privi di una toleration corrispondente vengono *espulsi immediatamente*.
  • I nuovi Pod privi di una toleration corrispondente non possono essere pianificati.

Viene spesso utilizzato per svuotare i nodi o gestire i guasti dei nodi.

Introduzione alle Toleration

Le Taint vengono applicate ai nodi, mentre le Toleration vengono applicate ai Pod. La toleration di un Pod gli consente di essere pianificato su un nodo che presenta una taint corrispondente.

In assenza di una toleration corrispondente, un Pod non può essere pianificato su un nodo soggetto a taint (oppure preferisce non esserlo).

Le Toleration nei manifest dei Pod

Le toleration vengono definite nel manifest YAML di un Pod, nella sezione spec. Ecco come configurare un Pod affinché tolleri una taint con 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"

Come corrispondono Taint e Toleration

Per poter essere pianificato su un nodo soggetto a taint, un Pod deve avere una toleration corrispondente alla taint del nodo. La corrispondenza comprende:

  • Chiave: deve essere uguale.
  • Valore: deve essere uguale se operator: Equal.
  • Effetto: deve essere uguale.
  • Operatore: può essere Equal o Exists (ovvero qualsiasi valore per la chiave).

Una toleration speciale, key: "" operator: Exists, tollera *qualsiasi* taint.

Verifica rapida: Taint

Un nodo ha la taint env=production:NoSchedule. Quale configurazione del Pod ne consentirebbe la pianificazione su questo nodo?

Riepilogo: Taint e Toleration

Avete imparato a usare Taint e Toleration.

  • Le Taint vengono applicate ai nodi per allontanare i Pod.
  • Le Toleration vengono applicate ai Pod per consentire loro di essere pianificati su nodi soggetti a taint.
  • Gli effetti principali delle taint sono NoSchedule, PreferNoSchedule e NoExecute.
  • Le toleration devono corrispondere alla chiave, al valore e all'effetto della taint affinché un Pod possa essere pianificato.

Questi strumenti vi offrono un controllo dettagliato sul posizionamento dei Pod.

Domande Frequenti

La lezione «Taint e toleration» è gratuita?

Sì — il testo completo di «Taint e toleration» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Taint e toleration»?

Impedisca la pianificazione dei Pod su nodi specifici utilizzando i taint e consenta a determinati Pod di tollerarli. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Taint e toleration»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Richieste e limiti delle risorse
  2. Selettori e affinità dei nodi
  3. Taint e toleration
  4. Priorità e preemption dei Pod
← Torna a DevOps Bootcamp