{"record":{"id":"886d8d14403f1a35","repo":"kubernetes/kops","slug":"error-building-kube-controller-manager-pod-v","errorCode":null,"errorMessage":"error building kube-controller-manager pod: %v","messagePattern":"error building kube-controller-manager pod: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nodeup/pkg/model/kube_controller_manager.go","lineNumber":76,"sourceCode":"\t// Include the CA Key\n\t// @TODO: use a per-machine key?  use KMS?\n\tif err := b.BuildCertificatePairTask(c, fi.CertificateIDCA, pathSrvKCM, \"ca\", nil, nil); err != nil {\n\t\treturn err\n\t}\n\n\tif err := b.BuildPrivateKeyTask(c, \"service-account\", pathSrvKCM, \"service-account\", nil, nil); err != nil {\n\t\treturn err\n\t}\n\tkcm.ServiceAccountPrivateKeyFile = filepath.Join(pathSrvKCM, \"service-account.key\")\n\n\tif err := b.writeServerCertificate(c, &kcm); err != nil {\n\t\treturn err\n\t}\n\n\t{\n\t\tpod, err := b.buildPod(&kcm)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error building kube-controller-manager pod: %v\", err)\n\t\t}\n\n\t\tmanifest, err := k8scodecs.ToVersionedYaml(pod)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error marshaling pod to yaml: %v\", err)\n\t\t}\n\n\t\tc.AddTask(&nodetasks.File{\n\t\t\tPath:     \"/etc/kubernetes/manifests/kube-controller-manager.manifest\",\n\t\t\tContents: fi.NewBytesResource(manifest),\n\t\t\tType:     nodetasks.FileType_File,\n\t\t})\n\t}\n\n\t{\n\t\tc.AddTask(&nodetasks.File{\n\t\t\tPath:        \"/var/log/kube-controller-manager.log\",\n\t\t\tContents:    fi.NewStringResource(\"\"),","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/nodeup/pkg/model/kube_controller_manager.go#L58-L94","documentation":"The kube-controller-manager builder wraps buildPod failure here. buildPod assembles the static pod spec (volumes, mounts, health checks, certificates); it fires when that assembly errors — e.g. a missing required file asset or invalid configuration — so no KCM manifest can be written for the node.","triggerScenarios":"Thrown at nodeup/pkg/model/kube_controller_manager.go:76 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check kubeControllerManager settings in the spec","Inspect nodeup logs for the underlying error","Re-run nodeup"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}