kubernetes/kops · error
error building linode node identifier: %w
Error message
error building linode node identifier: %w
What it means
In addNodeController's cloud switch, the "linode" case calls nodeidentitylinode.New(opt.CacheNodeidentityInfo); on failure the error is wrapped with the cloud-specific message "error building linode node identifier: %w". Startup aborts since the node reconciler requires a Linode identifier.
Source
Thrown at cmd/kops-controller/main.go:373
return fmt.Errorf("error building node identifier: %w", err)
}
case "scaleway":
identifier, err = nodeidentityscw.New(opt.CacheNodeidentityInfo)
if err != nil {
return fmt.Errorf("error building node identifier: %w", err)
}
case "metal":
identifier, err = nodeidentitymetal.New()
if err != nil {
return fmt.Errorf("error building metal node identifier: %w", err)
}
case "linode":
identifier, err = nodeidentitylinode.New(opt.CacheNodeidentityInfo)
if err != nil {
return fmt.Errorf("error building linode node identifier: %w", err)
}
case "":
return fmt.Errorf("must specify cloud")
default:
return fmt.Errorf("identifier for cloud %q not implemented", opt.Cloud)
}
nodeController, err := controllers.NewNodeReconciler(mgr, identifier)
if err != nil {
return err
}
if err := nodeController.SetupWithManager(mgr); err != nil {
return err
}
return nilView on GitHub (pinned to 4c8573c808)
Solutions
- Check controller logs for the underlying wrapped error
- Verify Linode API token/credentials are available to the kops-controller pod
- If --cache-nodeidentity-info is set, ensure the cache directory exists and is writable
- Correct configuration and restart the controller
Defensive patterns
Strategy: validation
Validate before calling
// before launching kops-controller with --cloud=linode
if os.Getenv("LINODE_TOKEN") == "" {
return fmt.Errorf("linode token missing from environment")
} Try / catch
if err := addNodeController(context, opt); err != nil {
log.Error(err, "failed to add node controller")
os.Exit(1)
} Prevention
- Provide LINODE_TOKEN (or equivalent credentials) to the controller pod
- Validate Linode API access with linode-cli in the same environment
- Ensure cache directory writability when --cache-nodeidentity-info is set
When it happens
Trigger: Running kops-controller with --cloud=linode when nodeidentitylinode.New fails — typically Linode credentials/config unavailable or the nodeidentity info cache cannot be initialized when CacheNodeidentityInfo is enabled.
Common situations: Missing LINODE_* environment variables/token in the controller pod, wrong region/config, or an unwritable cache directory with --cache-nodeidentity-info.
Related errors
- error building metal node identifier: %w
- must specify cloud
- identifier for cloud %q not implemented
- reading %q certificate: %v
- error fetching GCE instance group template %q: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/245cbc037536aceb.
Report an issue: GitHub.