kubernetes/kops · critical
error registering corev1: %v
Error message
error registering corev1: %v
What it means
buildScheme registers the Kubernetes corev1 API types into a fresh runtime.Scheme for kops-controller's manager; this wraps corev1.AddToScheme failing, which is effectively impossible in a correct build and signals an internal scheme-registration programming error.
Source
Thrown at cmd/kops-controller/main.go:292
os.Exit(1)
}
if err := clusterapi.RegisterControllers(mgr, clientset); err != nil {
setupLog.Error(err, "registering Cluster API controllers")
os.Exit(1)
}
}
setupLog.Info("starting manager")
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
}
}
func buildScheme(opt *config.Options) (*runtime.Scheme, error) {
scheme := runtime.NewScheme()
if err := corev1.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering corev1: %v", err)
}
if err := v1alpha2.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering kops/v1alpha2 API: %v", err)
}
// Needed so that the leader-election system can post events
if err := coordinationv1.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering coordinationv1: %v", err)
}
if opt.CAPI.IsEnabled() {
if err := bootstrapapi.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering kops bootstrap cluster API: %v", err)
}
if err := controlplaneapi.AddToScheme(scheme); err != nil {
return nil, fmt.Errorf("error registering kops control-plane cluster API: %v", err)
}
}
return scheme, nilView on GitHub (pinned to 4c8573c808)
Solutions
- Run `go mod tidy` / `make gomod` to align k8s.io/* module versions
- Check go.mod for duplicate k8s.io/api versions
- Rebuild after clearing the module cache if a corrupt download is suspected
Example fix
// before (go.mod) k8s.io/api v0.26.0 k8s.io/apimachinery v0.28.0 // after k8s.io/api v0.28.0 k8s.io/apimachinery v0.28.0
Defensive patterns
Strategy: validation
Validate before calling
scheme := runtime.NewScheme()
if err := corev1.AddToScheme(scheme); err != nil {
return nil, err
}
_ = scheme
Prevention
- Pin all k8s.io/* modules to the same minor version
- Run `make gomod` after dependency changes
- Add a startup smoke test building the scheme
When it happens
Trigger: corev1.AddToScheme(scheme) returns an error — practically only on duplicate type registration panics/errors or a corrupted/incompatible apimachinery/corev1 library version.
Common situations: Dependency version skew between k8s.io/api, k8s.io/apimachinery and controller-runtime in the module graph (multiple major versions vendored).
Related errors
- error registering kops/v1alpha2 API: %v
- error registering coordinationv1: %v
- error registering kops bootstrap cluster API: %v
- error registering kops control-plane cluster API: %v
- error creating KopsConfig controller: %w
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/bd391fef562ebfaa.
Report an issue: GitHub.