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
- Check the wrapped root cause in the log output
- Validate the cluster spec's metal networking/IPAM configuration
- Ensure --cloud=metal is intended for this deployment
- 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
- Validate the metal networking/IPAM section of the cluster spec before rollout
- Only enable IPAM on metal if using dynamic IP allocation
- Test config changes with `kops replace` validation first
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
- error building metal node identifier: %w
- creating aws IPAM controller: %w
- creating gce IPAM controller: %w
- registering IPAM controller: %w
- kOps IPAM controller is not supported on cloud %q
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/5066cd5d73a65f8f.
Report an issue: GitHub.