Pod-prioritet och preemption
Lär dig hur PriorityClasses rangordnar Pods och hur schemaläggaren kan undantränga Pods med lägre prioritet för att ge plats åt kritiska arbetslaster.
Pod-prioritet och preemption är en gratis lektion i Grunderna i Kubernetes på CoddyKit. Detta är lektion 4 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.
Alla Pods är inte likvärdiga
När klustret är fullt är vissa arbetsbelastningar viktigare än andra. Pod-prioritet låter Er tala om för Kubernetes vilka Pods som ska vinna konkurrensen om resurserna.
Vad är en PriorityClass?
En PriorityClass är ett klusteromfattande objekt som kopplar ett namn till ett heltalsvärde. Högre tal innebär högre prioritet.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'Tilldela en Pod prioritet
En Pod väljer en klass med priorityClassName. Schemaläggaren läser det numeriska värdet från den refererade klassen.
apiVersion: v1
kind: Pod
metadata:
name: critical-app
spec:
priorityClassName: high-priority
containers:
- name: app
image: myapp:1.0Så påverkar prioritet schemaläggningen
När flera Pods väntar på att schemaläggas försöker schemaläggaren placera Pods med högre prioritet först. Prioriteten påverkar den ordning i vilken Pods schemaläggs.
Vad är preemption?
Om en Pod med hög prioritet inte kan schemaläggas eftersom klustret är fullt kan schemaläggaren preempta (evicta) Pods med lägre prioritet för att frigöra utrymme.
De evictade Podsen återgår till Pending och kan schemaläggas på nytt någon annanstans.
Preemption i praktiken
Föreställ Er att en nod är full av Pods med prioriteten 100 och att en Pod med prioriteten 1000000 anländer. Schemaläggaren kan ta bort tillräckligt många Pods med låg prioritet för att få plats med den kritiska Podden.
kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-appInaktivera preemption
En PriorityClass kan avstå från att preempta andra med preemptionPolicy: Never. Sådana Pods schemaläggs fortfarande enligt prioritetsordningen, men evictar ingen.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-no-preempt
value: 1000000
preemptionPolicy: NeverDen globala standardklassen
Om Ni anger globalDefault: true för en PriorityClass tillämpas dess värde på alla Pods som inte anger någon klass. Endast en klass kan vara den globala standardklassen.
Inbyggda systemklasser
Kubernetes levereras med reserverade klasser som system-cluster-critical och system-node-critical för viktiga komponenter. Återanvänd inte dessa för Era appar.
kubectl get priorityclass
# system-node-critical 2000001000
# system-cluster-critical 2000000000Bästa praxis
- Definiera ett litet antal tydliga nivåer (t.ex. kritisk, normal, batch)
- Reservera preemption för arbetsbelastningar som verkligen är viktiga
- Kombinera med resursförfrågningar så att schemaläggningsbesluten blir korrekta
- Undvik att ge allt hög prioritet, eftersom det motverkar syftet
Prioritet jämfört med QoS
Prioritet styr schemaläggning och preemption. Quality-of-Service-klasser (från requests/limits) styr eviction vid resursbrist på noder. De är relaterade men separata mekanismer.
Snabbkontroll
Testa Era kunskaper om preemption.
Sammanfattning
Ni har lärt Er att en PriorityClass rangordnar Pods efter ett heltalsvärde, vilket påverkar schemaläggningsordningen. Preemption låter kritiska Pods evicta Pods med lägre prioritet när klustret är fullt. Använd ett fåtal tydliga nivåer och kombinera prioritet med korrekta resursförfrågningar.
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 ”Pod-prioritet och preemption” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Kubernetes, inklusive ”Pod-prioritet och preemption”, 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 ”Pod-prioritet och preemption”?
Lär dig hur PriorityClasses rangordnar Pods och hur schemaläggaren kan undantränga Pods med lägre prioritet för att ge plats åt kritiska arbetslaster. 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 4 av 4.
Hur lång tid tar lektionen ”Pod-prioritet och preemption”?
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