Learn to control Pod placement with requests, limits, taints, affinity and priority, then fix Pending Pods with CKA-style labs and timed drills.
The sale starts at noon. At 11:58 you scale the checkout Deployment from 3 replicas to 12, and nine of the new Pods sit in Pending.
Every container can declare how much CPU and memory it needs (the request) and the most it may use (the limit).
Node labels describe a node (disk type, zone, hardware, team), and nodeSelector and node affinity let a Pod demand or prefer nodes with certain...
A taint is a key=value:effect marker on a node that makes the scheduler reject Pods that do not tolerate it.
Pod affinity and anti-affinity place a Pod relative to other Pods, not relative to node labels.
PriorityClass decides which Pods win when the cluster is full, and nodeName lets you assign a Pod to a node without involving the scheduler.
The sale starts at noon. At 11:58 you scale the checkout Deployment from 3 replicas to 12, and nine of the new Pods sit...
Every container can declare how much CPU and memory it needs (the request) and the most it may use (the limit).
Node labels describe a node (disk type, zone, hardware, team), and nodeSelector and node affinity let a Pod demand or...
A taint is a key=value:effect marker on a node that makes the scheduler reject Pods that do not tolerate it.
Pod affinity and anti-affinity place a Pod relative to other Pods, not relative to node labels.
PriorityClass decides which Pods win when the cluster is full, and nodeName lets you assign a Pod to a node without...
Kubernetes assigns each Pod a Quality of Service class based on its requests and limits, and gives namespace...
This lab covers each control from the previous topics on a local cluster with one control plane node and two workers.
These drills use the sched-lab cluster and the node labels from the lab.
Scheduling failures follow a fixed pattern: read the event, match the message to a cause, then change either the Pod or...
Keep these commands and decisions at your fingertips for the timed drills and for the exam.
Roles that use the skills in this module.
DevOps Engineer
Site Reliability Engineer
Platform Engineer
Not a software engineer sheet. Every problem comes from real DevOps, SRE, Platform and Cloud interviews, from your first script to a system you build yourself.
Open the Coding SheetA Pod with no node assigned is usually Pending because the scheduler could not find a node that passes every check. The reason is written as a FailedScheduling event, which you can read with kubectl describe pod. Common causes are insufficient CPU or memory, an untolerated taint, a nodeSelector or affinity rule that matches no node, and anti-affinity rules that leave no free node.
A request is the amount of CPU or memory the scheduler reserves for a container when it picks a node. A limit is the maximum the container may use at runtime. A container that exceeds its CPU limit is throttled, while one that exceeds its memory limit can be OOM killed. Check the container's last termination reason with kubectl describe pod instead of assuming every memory-related failure is OOMKilled.
No. A toleration only allows the Pod to be scheduled onto a node with a matching taint, it does not attract the Pod to that node. To make a Pod run only on tainted nodes, combine the toleration with a nodeSelector or node affinity rule that targets the same nodes.
nodeSelector is a simple exact match on node labels. Node affinity expresses the same idea with more operators such as In, NotIn and Exists, and it supports soft preferences with weights as well as hard requirements. Use nodeSelector for a single exact label and node affinity when you need alternatives or a preference.
The API server rejects the request with a Forbidden error, so the Pod is never created and cannot be Pending. When a Deployment hits the quota, the ReplicaSet records a FailedCreate event and the Deployment shows fewer ready replicas than desired. Check the ReplicaSet events and kubectl describe quota to see what is used.