Amazon EKS — Node Issues
Node Issues
Nodes can go NotReady, run out of resources, or fail to join the cluster.
Node NotReady
# Check node status
$ kubectl get nodes
NAME STATUS ROLES AGE
ip-10-0-1-100 Ready <none> 5d
ip-10-0-2-200 NotReady <none> 5d ← Problem!
# Get details
$ kubectl describe node ip-10-0-2-200
# Look at Conditions section:
Conditions:
Type Status Reason
Ready False KubeletNotReady
MemoryPressure True ...
Common Node Issues
| Issue | Cause | Fix |
|---|---|---|
| NotReady | Kubelet crashed, node OOM | Check EC2 instance, restart kubelet |
| MemoryPressure | Node memory > 90% | Add nodes or reduce pod memory |
| DiskPressure | Node disk > 85% | Clean images, increase disk |
| PIDPressure | Too many processes | Check for fork bombs, increase max PIDs |
| NetworkUnavailable | CNI plugin issue | Restart aws-node DaemonSet |
Node Won’t Join Cluster
# Check if node is registered
$ kubectl get nodes
# On the node (if you can SSH):
$ journalctl -u kubelet -f
# Common causes:
# 1. Security group blocks kubelet → API server communication
# 2. aws-auth ConfigMap missing node role
# 3. Node AMI incompatible with cluster version
# Check aws-auth
$ kubectl get configmap aws-auth -n kube-system -o yaml
Node Resource Debugging
# Check allocated resources
$ kubectl describe node <name> | grep -A 5 "Allocated resources"
Resource Requests Limits
-------- -------- ------
cpu 1800m (90%) 3600m (180%)
memory 3Gi (85%) 6Gi (170%)
# Find the heaviest pods
$ kubectl top pods --all-namespaces --sort-by=cpu | head -10
Common Mistakes
| Mistake | Impact |
|---|---|
| Not monitoring node conditions | Surprise outages |
| Over-committing resources | OOM kills under load |
| Running on a single AZ | AZ failure takes down cluster |
What’s Next?
Network problems: Networking Issues.