kubernetes/kops · error

error building kube-scheduler pod: %v

Error message

error building kube-scheduler pod: %v

What it means

KubeSchedulerBuilder.Build assembles the kube-scheduler static pod via b.buildPod; any failure there (flag building, path resolution) is wrapped as "error building kube-scheduler pod: %v". The nodeup model run aborts and the kube-scheduler manifest is never written, so node bootstrapping for control-plane nodes fails.

Source

Thrown at nodeup/pkg/model/kube_scheduler.go:78

var _ fi.NodeupModelBuilder = &KubeSchedulerBuilder{}

// Build is responsible for building the manifest for the kube-scheduler
func (b *KubeSchedulerBuilder) Build(c *fi.NodeupModelBuilderContext) error {
	if !b.IsMaster {
		return nil
	}

	kubeScheduler := b.NodeupConfig.ControlPlaneConfig.KubeScheduler

	if err := b.writeServerCertificate(c, &kubeScheduler); err != nil {
		return err
	}

	{
		pod, err := b.buildPod(&kubeScheduler)
		if err != nil {
			return fmt.Errorf("error building kube-scheduler pod: %v", err)
		}

		manifest, err := k8scodecs.ToVersionedYaml(pod)
		if err != nil {
			return fmt.Errorf("error marshaling pod to yaml: %v", err)
		}

		c.AddTask(&nodetasks.File{
			Path:     "/etc/kubernetes/manifests/kube-scheduler.manifest",
			Contents: fi.NewBytesResource(manifest),
			Type:     nodetasks.FileType_File,
		})
	}

	{
		kubeconfig := b.BuildIssuedKubeconfig("kube-scheduler", nodetasks.PKIXName{CommonName: rbac.KubeScheduler}, c)

		c.AddTask(&nodetasks.File{

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Read the wrapped cause to find the failing part of buildPod (most often the flags step, see error 678)
  2. Fix the KubeSchedulerConfig in the cluster spec and re-run kops update cluster
  3. Ensure the nodeup binary version matches the kops version that created the cluster spec
  4. Run kops replace/rolling-update after fixing so the corrected manifest is applied
Defensive patterns

Strategy: try-catch

Try / catch

err := nodeupBuild(bootstrapConfig)
if err != nil {
	if strings.Contains(err.Error(), "error building kube-scheduler pod") {
		log.Errorf("kube-scheduler pod build failed; inspect wrapped cause: %v", err)
		return fmt.Errorf("control-plane bootstrap failed: %w", err)
	}
	return err
}

Prevention

When it happens

Trigger: Invoking nodeup on a master/control-plane instance with a KubeSchedulerConfig that buildPod cannot process — typically KubeSchedulerBuilder.Build -> buildPod -> flagbuilder.BuildFlagsList erroring on a config field.

Common situations: Cluster specs with custom scheduler config (e.g. invalid schedulerConfig fields), kops version mismatches between the state store spec and the nodeup binary, templated manifests rendered in CI with incomplete config.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/a006f47e9dce9313. Report an issue: GitHub.