Pod-Priorität und Preemption
Lernen Sie, wie PriorityClasses Pods priorisieren und wie der Scheduler Pods mit niedrigerer Priorität verdrängen kann, um Platz für kritische Workloads zu schaffen.
Pod-Priorität und Preemption ist eine kostenlose Kubernetes Basics-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kubernetes Basics-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.
Nicht alle Pods sind gleich
Wenn der Cluster ausgelastet ist, sind manche Workloads wichtiger als andere. Mit der Pod-Priorität legen Sie fest, welche Pods bei der Ressourcenverteilung in Kubernetes Vorrang haben.
Was ist eine PriorityClass?
Eine PriorityClass ist ein clusterweites Objekt, das einem Namen einen ganzzahligen Wert zuordnet. Höhere Zahlen bedeuten eine höhere Priorität.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'Einem Pod eine Priorität zuweisen
Ein Pod verwendet eine Klasse über priorityClassName. Der Scheduler liest den numerischen Wert aus der referenzierten Klasse.
apiVersion: v1
kind: Pod
metadata:
name: critical-app
spec:
priorityClassName: high-priority
containers:
- name: app
image: myapp:1.0Wie sich die Priorität auf die Planung auswirkt
Wenn mehrere Pods ausstehen, versucht der Scheduler, Pods mit höherer Priorität zuerst zu platzieren. Die Priorität beeinflusst die Reihenfolge, in der Pods geplant werden.
Was ist Preemption?
Wenn ein Pod mit hoher Priorität nicht geplant werden kann, weil der Cluster ausgelastet ist, kann der Scheduler Pods mit niedrigerer Priorität preempten (verdrängen), um Platz zu schaffen.
Die verdrängten Pods kehren in den Status Pending zurück und können an anderer Stelle erneut geplant werden.
Preemption in Aktion
Stellen Sie sich vor, ein Node ist vollständig mit Pods der Priorität 100 belegt, und ein Pod mit der Priorität 1000000 kommt hinzu. Der Scheduler kann genügend Pods mit niedriger Priorität entfernen, damit der kritische Pod Platz findet.
kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-appPreemption deaktivieren
Eine PriorityClass kann mit preemptionPolicy: Never darauf verzichten, andere Pods zu verdrängen. Solche Pods werden weiterhin nach Priorität geplant, verdrängen aber keine anderen Pods.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-no-preempt
value: 1000000
preemptionPolicy: NeverDer globale Standard
Wenn Sie für eine PriorityClass globalDefault: true festlegen, wird ihr Wert auf jeden Pod angewendet, der keine Priorität angibt. Nur eine Klasse kann der globale Standard sein.
Integrierte Systemklassen
Kubernetes wird mit reservierten Klassen wie system-cluster-critical und system-node-critical für essenzielle Komponenten ausgeliefert. Verwenden Sie diese nicht für Ihre Apps.
kubectl get priorityclass
# system-node-critical 2000001000
# system-cluster-critical 2000000000Best Practices
- Definieren Sie wenige, klar voneinander abgegrenzte Stufen, etwa kritisch, normal und Batch
- Verwenden Sie Preemption nur für wirklich wichtige Workloads
- Kombinieren Sie Prioritäten mit Ressourcenanforderungen, damit die Planungsentscheidungen korrekt sind
- Vermeiden Sie es, alles mit hoher Priorität zu versehen, da dies den Zweck zunichtemacht
Priorität und QoS
Die Priorität steuert Planung und Preemption. Quality-of-Service-Klassen (aus Anforderungen und Limits) steuern die Verdrängung bei Ressourcenknappheit auf einem Node. Es handelt sich um verwandte, aber voneinander unabhängige Mechanismen.
Kurztest
Testen Sie Ihr Verständnis von Preemption.
Zusammenfassung
Sie haben gelernt, dass eine PriorityClass Pods anhand eines ganzzahligen Werts einordnet und dadurch die Reihenfolge der Planung beeinflusst. Mit Preemption können kritische Pods Pods mit niedrigerer Priorität verdrängen, wenn der Cluster ausgelastet ist. Verwenden Sie wenige, klar definierte Stufen und kombinieren Sie Prioritäten mit präzisen Ressourcenanforderungen.
Häufig gestellte Fragen
Ist die Lektion „Pod-Priorität und Preemption“ kostenlos?
Ja — der vollständige Text von „Pod-Priorität und Preemption“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kubernetes Basics-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Pod-Priorität und Preemption“?
Lernen Sie, wie PriorityClasses Pods priorisieren und wie der Scheduler Pods mit niedrigerer Priorität verdrängen kann, um Platz für kritische Workloads zu schaffen. Du übst Kubernetes Basics mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kubernetes Basics zu starten?
Keine Vorkenntnisse erforderlich. Kubernetes Basics auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Pod-Priorität und Preemption“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kubernetes Basics-Lektion Code schreiben und ausführen?
Ja. Jede Kubernetes Basics-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ressourcenanforderungen und -limits
- Node-Selektoren und Affinität
- Taints und Tolerations
- Pod-Priorität und Preemption