kubernetes/kops · error

creating metal IPAM controller: %w

Error message

creating metal IPAM controller: %w

What it means

kops-controller failed while constructing the Metal (bare-metal) IPAM reconciler, which allocates IPs on metal deployments. NewMetalIPAMReconciler returned an error, wrapped here with context via %w. The controller exits before registering any reconcilers.

Source

Thrown at cmd/kops-controller/main.go:418

	setupLog.Info("enabling IPAM controller")
	var controller Reconciler
	switch opt.Cloud {
	case "aws":
		ipamController, err := controllers.NewAWSIPAMReconciler(ctx, mgr)
		if err != nil {
			return fmt.Errorf("creating aws IPAM controller: %w", err)
		}
		controller = ipamController
	case "gce":
		ipamController, err := controllers.NewGCEIPAMReconciler(mgr)
		if err != nil {
			return fmt.Errorf("creating gce IPAM controller: %w", err)
		}
		controller = ipamController
	case "metal":
		ipamController, err := controllers.NewMetalIPAMReconciler(ctx, mgr)
		if err != nil {
			return fmt.Errorf("creating metal IPAM controller: %w", err)
		}
		controller = ipamController
	default:
		return fmt.Errorf("kOps IPAM controller is not supported on cloud %q", opt.Cloud)
	}

	if err := controller.SetupWithManager(mgr); err != nil {
		return fmt.Errorf("registering IPAM controller: %w", err)
	}

	return nil
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the wrapped root cause in the log output
  2. Validate the cluster spec's metal networking/IPAM configuration
  3. Ensure --cloud=metal is intended for this deployment
  4. Disable IPAM controller if using static IP allocation
Defensive patterns

Strategy: validation

Validate before calling

// validate metal IPAM prerequisites before start
if opt.Cloud == "metal" && cluster.Spec.Networking == nil {
	return fmt.Errorf("metal IPAM requires networking config in cluster spec")
}

Try / catch

if err := setupCloudIPAM(ctx, controllers, mgr, opt); err != nil {
	setupLog.Error(err, "IPAM controller setup failed")
	os.Exit(1)
}

Prevention

When it happens

Trigger: controllers.NewMetalIPAMReconciler(ctx, mgr) returns err; triggered when opt.Cloud == "metal" with the IPAM controller enabled.

Common situations: Invalid metal/IPAM configuration (e.g. missing CIDR config in cluster spec); failure constructing the metal cloud provider; running metal mode accidentally via wrong --cloud flag; version mismatch between nodeup/kops-controller.

Related errors


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