Diagnosing and Fixing Talos Linux Node "NotReady" Status
When a Talos node shows "NotReady", the issue often lies in configuration or boot failures. This guide walks through a structured diagnostic flow, pinpointing network, disk, and endpoint misconfigurations, and provides step‑by‑step remediation.
09 Jul 2026, 08:06 UTC

Problem Overview
A Talos node that reports NotReady in Kubernetes is usually symptomatic of a bootstrap failure. The kubelet, Talos’s container runtime agent, cannot start because one or more prerequisites are missing or mis‑configured. Common culprits are network mis‑settings, disk partitioning errors, or an incorrect cluster endpoint in the machine config.
Common Causes
| Cause | Typical Symptom | Root Cause |
|---|---|---|
| Network configuration mismatch | Node cannot reach API server; kubelet logs show connection timeouts. | Incorrect CIDR, gateway, or DNS in the machine config. |
| Disk partitioning failure | Boot or /var/lib/kubelet directories missing; kubelet fails to start. | Wrong device path or insufficient space during apply-config. |
| Missing or wrong cluster endpoint | Authentication errors in kubelet logs; node remains NotReady. | Cluster endpoint or TLS settings absent or incorrect. |
| Boot‑loop / systemd failures | Repeated talosctl logs entries of failed services. | Corrupted system services or mis‑applied firmware updates. |
Diagnostic Flow
Follow the table below to decide which check to run based on the observed symptom.
| Observed Symptom | First Check | Next Step if Issue Persists |
|---|---|---|
| Kubelet logs show connection timeouts or DNS errors | Verify network config via talosctl logs kubelet | Check CIDR, gateway, and DNS entries. |
| Missing /var/lib/kubelet or /var/log directories | Inspect disk partitions with talosctl logs and talosctl health | Re‑apply config with correct device paths. |
| Authentication failures in kubelet logs | Confirm cluster endpoint in machine config. | Re‑apply config with updated endpoint. |
| Repeated systemd failures in logs | Run talosctl health for component status. | Consider talosctl reset if corruption suspected. |
Step‑by‑Step Checks
- Confirm node connectivity
# Run from any management machine talosctl health --node <node-ip>All components should return
OK. IfkubeletisFAILED, proceed to step 2. - Inspect kubelet logs
# View last 200 lines talosctl logs kubelet --node <node-ip> --tail 200Look for errors like
dial tcporauthentication failed. This indicates network or endpoint issues. - Validate network configuration
# Show current network settings talosctl logs network --node <node-ip>Check that
cidr,gateway, anddnsmatch the cluster’s overlay network. If mismatched, prepare a corrected machine config:{ "machine": { "network": { "interfaces": [ { "name": "eth0", "addresses": ["10.42.0.5/24"], "routes": [{"cidr": "0.0.0.0/0", "gateway": "10.42.0.1"}] } ], "dns": {"servers": ["10.42.0.1"]} } } }Apply with
talosctl apply-config.talosctl apply-config --node <node-ip> --config <config-path>After applying, re‑run
talosctl healthto verify the kubelet starts. - Check disk partitions
# List partitions and mount points talosctl logs systemd --node <node-ip> | grep -i "mount"If
/var/lib/kubeletis missing, the boot partition may have been mis‑created. Re‑apply config with correct device paths or runtalosctl resetto wipe and start fresh. - Verify cluster endpoint
# Inspect machine config for endpoint cat <config-path> | grep -i "endpoint"It should point to the API server’s IP/hostname and port. If absent, add:
{ "machine": { "clusterEndpoint": "https://api.cluster.local:6443" } }Re‑apply and check kubelet logs for authentication success.
Fixes Tied to Findings
- Network mismatch: Update
machine.networksection and re‑apply. - Disk partition error: Use
talosctl resetto clear corrupted state, then re‑apply with correctbootDeviceandrootDevicepaths. - Endpoint mis‑config: Add or correct
clusterEndpointin machine config and apply. - Boot‑loop: If
systemdshows repeated failures, consider a full reset or replacing the firmware image.
Escalation Criteria
If after the above steps the node remains NotReady and logs show persistent authentication or connectivity errors, consider:
- Verifying the control plane’s API server is reachable from the node’s network (e.g.,
talosctl exec <node-ip> -- ping -c 4 api.cluster.local). If unreachable, the issue is upstream. - Checking the node’s firewall or security group rules that may block port
6443. - Engaging the cluster administrator to confirm that the node’s IP is within the allowed CIDR set.
Verification After Fix
- Node health
talosctl health --node <node-ip> - Kubernetes status
kubectl get nodes -o wideThe node should now show
Readywith aReadycondition. - Log sanity check
talosctl logs kubelet --node <node-ip> --tail 50Ensure no
FailedorErrorentries remain.
Cautions
- Reset wipes data:
talosctl resetdeletes all local data, including persistent volumes on the node. Use only if the node is not part of a critical workload. - Disk path errors: Applying a config that points to a non‑existent device can render the node unbootable. Double‑check device identifiers before applying.
Practical Checklist
Use the following checklist before and after applying a new machine config to minimize downtime.
| Item | Done? |
|---|---|
| Backup current machine config | ✔ |
| Validate CIDR, gateway, DNS | ✔ |
| Confirm disk device paths | ✔ |
| Ensure clusterEndpoint is correct | ✔ |
Apply config and monitor talosctl health | ✔ |
Verify node appears Ready in kubectl get nodes | ✔ |
Conclusion
By following this structured diagnostic guide, most NotReady nodes can be restored with minimal disruption. The key is to isolate the failure point—network, disk, or endpoint—and apply the targeted fix before re‑checking health. Remember to back up configuration and be cautious with talosctl reset, as it will erase local data.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.