0Pricing
Kubernetes Basics · Lezione

Priorità e preemption dei Pod

Impari come le PriorityClass stabiliscano l'ordine di priorità dei Pod e come lo scheduler possa espropriare i Pod a priorità inferiore per fare spazio ai carichi di lavoro critici.

Priorità e preemption dei Pod è una lezione Kubernetes Basics gratuita su CoddyKit. Questa è la lezione 4 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 Kubernetes Basics, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kubernetes Basics include 4 lezioni in totale.

Non tutti i Pod sono uguali

Quando il cluster è al completo, alcuni workload sono più importanti di altri. La priorità dei Pod permette di indicare a Kubernetes quali Pod devono avere la precedenza nella contesa per le risorse.

Che cos'è una PriorityClass?

Una PriorityClass è un oggetto a livello di cluster che associa un nome a un valore intero. I numeri più alti indicano una priorità maggiore.

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'

Assegnare una priorità a un Pod

Un Pod usa una classe tramite priorityClassName. Lo scheduler legge il valore numerico dalla classe indicata.

apiVersion: v1
kind: Pod
metadata:
  name: critical-app
spec:
  priorityClassName: high-priority
  containers:
  - name: app
    image: myapp:1.0

Come la priorità influisce sulla pianificazione

Quando diversi Pod sono in attesa, lo scheduler cerca di pianificare prima quelli con priorità più alta. La priorità influisce sull'ordine in cui i Pod vengono pianificati.

Che cos'è la preemption?

Se un Pod con priorità elevata non può essere pianificato perché il cluster è al completo, lo scheduler può effettuare la preemption, cioè espellere i Pod con priorità inferiore per liberare spazio.

I Pod espulsi tornano nello stato Pending e possono essere ripianificati altrove.

La preemption in azione

Immagini che un nodo sia pieno di Pod con priorità 100 e che arrivi un Pod con priorità 1000000. Lo scheduler può rimuovere un numero sufficiente di Pod a bassa priorità per fare spazio a quello critico.

kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-app

Disabilitare la preemption

Una PriorityClass può disabilitare la preemption degli altri con preemptionPolicy: Never. Tali Pod vengono comunque pianificati in ordine di priorità, ma non espellono alcun Pod.

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-no-preempt
value: 1000000
preemptionPolicy: Never

Il valore predefinito globale

L'impostazione di globalDefault: true su una PriorityClass applica il relativo valore a qualsiasi Pod che non ne specifichi uno. Solo una classe può essere il valore predefinito globale.

Classi di sistema integrate

Kubernetes include classi riservate come system-cluster-critical e system-node-critical per i componenti essenziali. Non le riutilizzi per le sue app.

kubectl get priorityclass
# system-node-critical     2000001000
# system-cluster-critical  2000000000

Procedure consigliate

  • Definire un numero ridotto di livelli chiari, ad esempio critico, normale e batch
  • Riservare la preemption ai workload realmente importanti
  • Combinare la priorità con le richieste di risorse, così che le decisioni di pianificazione siano accurate
  • Evitare di assegnare una priorità elevata a tutto, perché vanificherebbe lo scopo della priorità

Priorità e QoS

La priorità controlla la pianificazione e la preemption. Le classi Quality-of-Service (derivate da requests/limits) controllano l'espulsione sotto pressione del nodo. Sono meccanismi correlati, ma distinti.

Verifica rapida

Verifichi la sua comprensione della preemption.

Riepilogo

Ha imparato che una PriorityClass ordina i Pod in base a un valore intero, influenzando l'ordine di pianificazione. La preemption permette ai Pod critici di espellere quelli con priorità inferiore quando il cluster è al completo. Utilizzi pochi livelli chiari e combini la priorità con richieste di risorse accurate.

Domande Frequenti

La lezione «Priorità e preemption dei Pod» è gratuita?

Sì — il testo completo di «Priorità e preemption dei Pod» è 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 Kubernetes Basics, passa a CoddyKit PRO. Il corso Kubernetes Basics include 4 lezioni in totale.

Cosa imparerò in «Priorità e preemption dei Pod»?

Impari come le PriorityClass stabiliscano l'ordine di priorità dei Pod e come lo scheduler possa espropriare i Pod a priorità inferiore per fare spazio ai carichi di lavoro critici. Eserciti Kubernetes Basics 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 Kubernetes Basics?

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

Quanto tempo richiede la lezione «Priorità e preemption dei Pod»?

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 Kubernetes Basics?

Sì. Ogni lezione Kubernetes Basics 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 Kubernetes Basics