0Pricing
DevOps Bootcamp · Lektion

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 DevOps Bootcamp-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 DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-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.0

Wie 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-app

Preemption 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: Never

Der 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  2000000000

Best 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 DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-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 DevOps Bootcamp 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 DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp 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 DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-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

  1. Ressourcenanforderungen und -limits
  2. Node-Selektoren und Affinität
  3. Taints und Tolerations
  4. Pod-Priorität und Preemption
← Zurück zu DevOps Bootcamp