If stress.yaml runs on the control-plane but stays Pending on the worker, first check whether the worker is actually Ready and whether the manifest’s placement rules match its labels and taints. A worker can reach the Kubernetes API server and still be unhealthy or unschedulable. Use the pod’s Events and the node’s conditions to identify the blocker before changing selectors or tolerations.
Why does stress.yaml stay Pending on the worker?
Kubernetes schedules a pod only onto a node that is healthy, schedulable, and compatible with the pod’s constraints. A node selector that names the wrong hostname can rule out the worker; a NotReady node or a taint can also prevent placement. The Linux Foundation LFD259 lab incident had exactly this pattern: the worker was NotReady, with node.kubernetes.io/unreachable:NoSchedule, node.kubernetes.io/unreachable:NoExecute, and node.cilium.io/agent-not-ready:NoSchedule taints. The pod could therefore remain Pending even though the worker could reach the API server. The lab discussion documents the incident and its resolution.
As an Amazon Associate I earn from qualifying purchases.
API connectivity is not proof that a node has completed bootstrap or remains healthy. As Linux Foundation forum responder Chris Pokorni put it, “A cluster node in "not-ready" state as you noted, implies a cluster that has not been fully bootstrapped and/or configured, or certain readiness conditions that are no longer met as a result of unfavorable cluster events.” The discussion describes the specific lab environment; your node’s own conditions and Events are the evidence to follow.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Check the file, namespace, and Kubernetes context
Before changing the cluster, verify that you are applying the intended manifest to the intended cluster and namespace. A wrong file, context, or namespace can make an otherwise correct troubleshooting attempt misleading.
#1 Best Overall
- 12th Intel Alder Lake N95 Processor – The GMKtec G3 S Mini PC is powered by the 12th Gen Intel N95 processor with 4 cores, 4 threads, 6MB cache and a burst frequency up to 3.4GHz. Compared with N100/N5105/N5100/N5095, the N95 delivers up to 36% overall performance improvement. Perfect for routine tasks, office work, and home entertainment, this compact mini desktop is more convenient than traditional bulky PCs.
- 8GB RAM & 256GB SSD Storage – Pre-installed with 8GB DDR4 memory and a fast 256GB M.2 2242 SSD, the G3 S mini desktop offers quicker startup, smoother multitasking, and faster file transfers. Enjoy seamless performance whether you’re working on multiple applications, browsing, or streaming content.
- Rich Interfaces & Connectivity – The G3 S mini computer comes equipped with USB 3.2 (up to 10Gbps), dual HDMI 2.0 (4K@60Hz), and a 3.5mm audio jack. With support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet (RJ45 1000MbE), it connects easily with monitors, projectors, printers, office equipment, and other peripherals, making it versatile for both home and business use.
- Dual 4K Display Support – Featuring upgraded Intel UHD Graphics (up to 1000MHz), the G3 S supports 4K video playback and AV1 decoding for a smooth viewing experience. With dual HDMI outputs, you can connect two 4K@60Hz displays simultaneously, enabling efficient multitasking for work and entertainment.
- GMKTEC WARRANTY - GMKtec offers a 3-year limited warranty (1 year replacement + 2 years parts replacement) for each mini PC, starting from the date of the purchase effective on all sales starting Oct. 2026. All defects due to design and workmanship are covered. With a professional after sales team always ready to attend to your needs, you can simply relax and enjoy your mini PC
- Confirm the active context and its configuration:
kubectl config current-contextandkubectl config view --minify. - Inspect
stress.yamlfor its resourcekind,metadata.name, namespace, and placement fields such asnodeSelectoror affinity. - Check the target namespace:
kubectl get pods -n <namespace>. If the manifest omits a namespace, Kubernetes uses the active default namespace.
Validate the manifest before applying it. The client-side check catches issues detectable locally; the server-side check asks the API server to validate the object against the cluster’s supported API and schema.
kubectl apply --dry-run=client -f stress.yaml
kubectl apply --dry-run=server -f stress.yaml
If validation succeeds, apply the file and verify the exact resource and pod placement:
kubectl apply -f stress.yaml
kubectl get -f stress.yaml
kubectl get pods -n <namespace> -o wide
The -o wide output shows the node assigned to a scheduled pod. If the pod is still Pending, continue with its Events rather than repeatedly reapplying the same manifest. The Kubernetes pod debugging guide also recommends examining pod status, Events, and logs.
Verify the worker’s health, labels, and taints
Get the worker’s current condition and scheduling details, then compare them with the manifest. Hostname labels are environment-specific and case-sensitive; do not assume the worker’s value from another machine or lab installation.
Rank #2
- High-Performance NAS with Powerful Procesor: Intel Core 5 320 is ideal for small offices, & More. You can enjoy smooth performance and seamless collaboration, while making use of advanced features like Docker and virtual machines. It works semalessly across every device inluding Windows, macOS, Linux, iOS, Android or Google services and so on.
- Better Way to Store Than External Drives: NAS offers centralized storage, automatic backups, remote access, and a wide range of RAID options for easy data recovery even if a drive fails. Massive Storage Capacity: Never worry about storage limits again. With up 144TB capacity, you can store 50 million 1MB photos or 98K 1.5GB movies,5 million 30MB songs! *Hard Drives not included.
- Secure Private Cloud: Retain 100% data ownership with advanced encryption to protect your files. Flexible permission management makes it easy to protect your privacy when collaborating with others.
- AI-Powered Photo Album: Automatically organizes your photos by recognizing faces, scenes, objects, and locations. It can also instantly remove duplicates, freeing up storage space and saving you time.
- User-Friendly App: Simple setup and easy file-sharing on Windows, macOS, Android, iOS, web browsers, and smart TVs, giving you secure access from any device.
kubectl get nodes -o wide
kubectl get nodes --show-labels
kubectl describe node <worker>
In the node description, check its Ready condition, taints, capacity, and recent Events. If the YAML has a selector such as kubernetes.io/hostname: worker, verify that the worker actually has that exact label value. A selector that matches no node prevents scheduling.
A toleration and a selector solve different problems: a selector or affinity rule chooses eligible nodes, while a toleration permits a pod to be considered for a node with a matching taint. Add a toleration only if the pod is intended to run on that tainted node and the taint is appropriate. Tolerating an unreachable or agent-not-ready taint does not repair the node and is not a substitute for restoring node health. Kubernetes explains these placement rules in its taints and tolerations documentation.
Use pod Events to identify the immediate blocker
Describe the Pending pod in its namespace:
kubectl describe pod <pod> -n <namespace>
Read the Events near the bottom of the output. Messages such as 0/<n> nodes are available often specify why candidates were rejected. Look for scheduling or taint conflicts, node-affinity mismatches, FailedMount, image-pull errors, and container restarts. These point to different fixes; for example, a mount error is not solved by changing the hostname selector.
If the pod starts but fails, check its dependencies and logs
When the pod is no longer Pending but the container exits or repeatedly restarts, inspect the current and previous container logs:
Rank #3
- Built for Local AI Development: AMD Ryzen AI Halo is designed for local AI development and inference, featuring 128GB unified memory and support for up to 200B parameter models to build and run intensive AI workloads locally.
- 128GB Unified Memory: Features 128GB LPDDR5x unified memory at 8000 MT/s with 256 GB/s memory bandwidth, providing a shared memory pool across the CPU, GPU, and NPU to support larger AI models.
- AMD Ryzen AI Max+ 395 Processor: Features 16 cores, 32 threads, and Zen 5 architecture, paired with AMD Radeon 8060S integrated graphics featuring 40 RDNA 3.5 compute units and an AMD XDNA 2 NPU with up to 50 TOPS.
- Linux AI Developer Platform: Purpose-built for Linux-based AI development with full AMD ROCm software support and preloaded tools, models, and workflows optimized for local AI development.
- Compact, Connected Design: Includes a 2TB M.2 SSD, 10GbE LAN, Wi-Fi 7, Bluetooth 5.4, USB-C connectivity, and HDMI 2.1b.
kubectl logs <pod> -n <namespace>
kubectl logs <pod> -n <namespace> --previous
Then check that referenced ConfigMaps and Secrets exist in the pod’s namespace and contain the expected keys; that the ServiceAccount has the required RBAC permissions; and that the image tag and registry credentials are valid. Review readiness and liveness probes as well: a failed readiness probe keeps a running container out of service, while repeated liveness failures can cause restarts. If the workload is managed by a Deployment, inspect its rollout with kubectl rollout status deployment/<name> -n <namespace>.
Investigate worker storage and VM health when the node is NotReady
If node conditions or Events point to kubelet or disk pressure, investigate the worker itself rather than weakening the pod’s placement rules. In the LFD259 discussion, kubelet reported FreeDiskSpaceFailed, ImageGCFailed, and InvalidDiskCapacity. The worker exposed roughly 10 GB to kubelet despite a larger virtual-disk allocation. The responder explained that kubelet sees space available inside the guest operating system; allocating a larger virtual disk does not necessarily expand the guest’s filesystem. In that lab incident, rebuilding the worker VM with the disk set up correctly resolved the problem. The discussion includes the reported symptoms and outcome.
Check the disk and filesystem capacity visible inside the worker guest, along with kubelet and node Events. If a virtual disk was expanded, confirm that the guest’s partition and filesystem were also extended using the procedure appropriate to that VM and filesystem. Do not assume the lab’s reported capacity or repair steps apply unchanged to a different environment.
Recommended Free Tools
Choose the fix that addresses the actual cause
| Evidence | Likely area to fix | What to do |
|---|---|---|
| Dry run reports invalid fields, API version, or missing values | Manifest schema | Correct the YAML using the API server’s validation error, then validate again. |
| Selector or affinity matches no worker label | Placement rules | Use the worker’s actual label value, or revise the placement rule if the workload is meant to run elsewhere. |
| Worker is NotReady or has unreachable/agent-not-ready taints | Node health | Investigate the node condition and kubelet or networking Events; restore worker health before relying on it for placement. |
| Events show FailedMount, image-pull errors, or container restarts | Workload dependency or runtime | Check referenced storage/configuration, image availability and credentials, and container logs. |
| Kubelet reports disk-capacity or image-GC failures | Worker storage | Check guest-visible filesystem capacity and repair the VM or worker storage configuration. |
Prefer correcting a manifest when the node is healthy and the YAML is wrong. When the worker is unhealthy, repair the node rather than adding a toleration that merely bypasses a scheduling safeguard. For the lab incident described above, worker disk setup—not a YAML syntax change—was ultimately the cause.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




