Kubernetes Cheatsheet

Kubernetes CheatsheetKapitel 06 von 11

Kubernetes Scheduling

Stand Kubernetes 1.37 · Edition 2026.11 · Release-Daten geprüft am 30. Oktober 2026

Requests / Limits / QoS

Guaranteed: requests = limits (CPU + Memory, jeder Container), nie wegen fremder Pods evicted, oom_score_adj −997. Eviction-Reihenfolge: Nutzung > requests, dann Priority. QoS ist nur Näherung.

Burstable: mindestens ein request/limit, aber nicht Guaranteed. BestEffort: weder requests noch limits, erste Opfer bei Eviction.

CPU-Limits drosseln (CFS-throttle, Latenz-Spitzen). Memory-Limit-Hit ⇒ OOMKill. Faustregel: Memory-Limit ja, CPU-Limit nur wenn Multi-Tenant-Schutz nötig.

Affinity / Anti-Affinity

podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution mit topologyKey: kubernetes.io/hostname verteilt Replicas auf Nodes. preferred… ist Hint, kein harter Constraint. topologyKey: topology.kubernetes.io/zone = Zone-Spread.

Taints / Tolerations

Taint am Node: kubectl taint node n1 gpu=true:NoSchedule.

Toleration im Pod erlaubt Scheduling auf getainted Node, erzwingt es aber nicht (dafür nodeSelector/Affinity).

Topology Spread Constraints

maxSkew + topologyKey + whenUnsatisfiable: DoNotSchedule | ScheduleAnyway. Modernerer Ersatz für viele Anti-Affinity-Regeln: Pod-(Anti-)Affinity bremst laut Doku den Scheduler in Clustern ab einigen hundert Nodes. matchLabelKeys: [pod-template-hash] (Beta, Default an seit 1.27) rechnet den Skew je Revision, sonst verzerren alte Pods den Rollout.

PriorityClass & Preemption

preemptionPolicy: PreemptLowerPriority | Never und value je PriorityClass. system-*-critical ist reserviert.

DRA (GA seit 1.34)

GPUs/NICs über ResourceClaim + DeviceClass (resource.k8s.io/v1) statt Device Plugin. Seit 1.37 GA: Extended-Resource-Mapping (bestehende nvidia.com/gpu-Requests laufen unverändert über DRA, wenn eine DeviceClass extendedResourceName setzt) und Device Taints.