{"record":{"id":"a7f7b57c9536afe3","repo":"derailed/k9s","slug":"no-node-assigned","errorCode":null,"errorMessage":"no node assigned","messagePattern":"no node assigned","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"internal/view/pod.go","lineNumber":175,"sourceCode":"\nfunc (p *Pod) coContext(ctx context.Context) context.Context {\n\treturn context.WithValue(ctx, internal.KeyPath, p.GetTable().GetSelectedItem())\n}\n\n// Handlers...\n\nfunc (p *Pod) showNode(evt *tcell.EventKey) *tcell.EventKey {\n\tpath := p.GetTable().GetSelectedItem()\n\tif path == \"\" {\n\t\treturn evt\n\t}\n\tpod, err := fetchPod(p.App().factory, path)\n\tif err != nil {\n\t\tp.App().Flash().Err(err)\n\t\treturn nil\n\t}\n\tif pod.Spec.NodeName == \"\" {\n\t\tp.App().Flash().Err(errors.New(\"no node assigned\"))\n\t\treturn nil\n\t}\n\tno := NewNode(client.NodeGVR)\n\tno.SetInstance(pod.Spec.NodeName)\n\tif err := p.App().inject(no, false); err != nil {\n\t\tp.App().Flash().Err(err)\n\t}\n\n\treturn nil\n}\n\nfunc (p *Pod) killCmd(evt *tcell.EventKey) *tcell.EventKey {\n\tselections := p.GetTable().GetSelectedItems()\n\tif len(selections) == 0 {\n\t\treturn evt\n\t}\n\n\tres, err := dao.AccessorFor(p.App().factory, p.GVR())","sourceCodeStart":157,"sourceCodeEnd":193,"githubUrl":"https://github.com/derailed/k9s/blob/2d3ccc6ba2ce98c3781bfc441bb3e884f072774f/internal/view/pod.go#L157-L193","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Wait a moment and retry — normal scheduling takes seconds","Run `kubectl describe pod <name>` and read the Events section for FailedScheduling reasons","Fix the root cause: add capacity, fix nodeSelector/affinity, add tolerations, or bound the PVC","Check the kube-scheduler is healthy if nothing is being scheduled"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Check scheduling state before offering 'show node':\nif pod.Spec.NodeName == \"\" {\n    flash.Warnf(\"Pod %s is Pending (not scheduled yet)\")\n}","typeGuard":"func isScheduled(p *v1.Pod) bool {\n    return p != nil && p.Spec.NodeName != \"\"\n}","tryCatchPattern":null,"preventionTips":["Wait for scheduling before node navigation","Read FailedScheduling events for stuck pods","Check capacity/tolerations when pods stay Pending"],"tags":["kubernetes","scheduling","pod","ui","k9s"],"backgroundTag":null,"analyzedSha":"2d3ccc6ba2ce98c3781bfc441bb3e884f072774f","analyzedAt":"2026-08-15T16:09:14.432Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}