derailed/k9s · warning

no node assigned

Error message

no node assigned

What it means

Flashed by `Pod.showNode` (internal/view/pod.go:~175) when the selected pod's `spec.nodeName` is empty. Kubernetes only sets nodeName when the scheduler binds the pod; empty means the pod is Pending and unscheduled. k9s cannot navigate to a node view without a node name, so it stops and flashes this error.

Source

Thrown at internal/view/pod.go:175

func (p *Pod) coContext(ctx context.Context) context.Context {
	return context.WithValue(ctx, internal.KeyPath, p.GetTable().GetSelectedItem())
}

// Handlers...

func (p *Pod) showNode(evt *tcell.EventKey) *tcell.EventKey {
	path := p.GetTable().GetSelectedItem()
	if path == "" {
		return evt
	}
	pod, err := fetchPod(p.App().factory, path)
	if err != nil {
		p.App().Flash().Err(err)
		return nil
	}
	if pod.Spec.NodeName == "" {
		p.App().Flash().Err(errors.New("no node assigned"))
		return nil
	}
	no := NewNode(client.NodeGVR)
	no.SetInstance(pod.Spec.NodeName)
	if err := p.App().inject(no, false); err != nil {
		p.App().Flash().Err(err)
	}

	return nil
}

func (p *Pod) killCmd(evt *tcell.EventKey) *tcell.EventKey {
	selections := p.GetTable().GetSelectedItems()
	if len(selections) == 0 {
		return evt
	}

	res, err := dao.AccessorFor(p.App().factory, p.GVR())

View on GitHub (pinned to 2d3ccc6ba2)

Solutions

  1. Wait a moment and retry — normal scheduling takes seconds
  2. Run `kubectl describe pod <name>` and read the Events section for FailedScheduling reasons
  3. Fix the root cause: add capacity, fix nodeSelector/affinity, add tolerations, or bound the PVC
  4. Check the kube-scheduler is healthy if nothing is being scheduled
Defensive patterns

Strategy: validation

Validate before calling

// Check scheduling state before offering 'show node':
if pod.Spec.NodeName == "" {
    flash.Warnf("Pod %s is Pending (not scheduled yet)")
}

Type guard

func isScheduled(p *v1.Pod) bool {
    return p != nil && p.Spec.NodeName != ""
}

Prevention

When it happens

Trigger: Pressing the Show Node key (`o`) on a pod whose `spec.nodeName` is "" — pod just created and not yet bound, or unschedulable because no node fits (taints, resources, affinity, PVC pending).

Common situations: Pod stuck Pending: insufficient cluster capacity, unsatisfied nodeSelector/affinity, blocking taints, or a Pending PVC; keypress right after pod creation before the scheduler binds it; kube-scheduler down or overwhelmed.

Related errors


AI-assisted analysis of derailed/k9s@2d3ccc6ba2 (2026-08-15). Data as JSON: /api/errors/a7f7b57c9536afe3. Report an issue: GitHub.