kubernetes/kops · error
error building loader: %v
Error message
error building loader: %v
What it means
Run() assembles a Loader with dozens of model builders (kubelet, containerd, networking, etc.) and calls loader.Build() to produce the task map. If any builder errors while generating its tasks (e.g. it fails to render templates, read config, or resolve assets), nodeup wraps it as "error building loader". This is a model/task-generation failure, not a runtime task-execution failure.
Source
Thrown at upup/pkg/fi/nodeup/command.go:341
loader.Builders = append(loader.Builders, &model.WarmPoolBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &model.PrefixBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &model.NerdctlBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &model.CrictlBuilder{NodeupModelContext: modelContext})
// Cloud-specific configuration
loader.Builders = append(loader.Builders, &model.AzureBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &model.LinodeBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &networking.CommonBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &networking.CalicoBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &networking.CiliumBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &networking.KindnetBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &networking.AmazonVPCRoutedENIBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &networking.KuberouterBuilder{NodeupModelContext: modelContext})
loader.Builders = append(loader.Builders, &model.BootstrapClientBuilder{NodeupModelContext: modelContext})
taskMap, err := loader.Build()
if err != nil {
return fmt.Errorf("error building loader: %v", err)
}
for _, image := range nodeupConfig.Images[architecture] {
if len(image.Sources) == 0 {
return fmt.Errorf("image has no sources: %v", image)
}
u, err := url.Parse(image.Sources[0])
if err != nil {
return fmt.Errorf("invalid image source URL %q: %w", image.Sources[0], err)
}
key := "SideloadImage/" + path.Base(u.Path)
if _, ok := taskMap[key]; ok {
return fmt.Errorf("duplicate image task %q", key)
}
taskMap[key] = &nodetasks.LoadImageTask{
Sources: image.Sources,
Hash: image.Hash,
}View on GitHub (pinned to 4c8573c808)
Solutions
- Read the wrapped inner error (the %v suffix) — it names the specific builder or task that failed
- Re-run `kops get cluster --full` / `kops replace` to regenerate a consistent nodeup config
- Verify the keystore/secretstore VFS paths are readable from the node
- Confirm the nodeup binary version matches the kops control-plane version that produced nodeupconfig
Defensive patterns
Strategy: try-catch
Try / catch
if err := nodeupCmd.Run(ctx); err != nil {
if strings.Contains(err.Error(), "error building loader") {
log.Fatalf("nodeup model build failed: %v — inspect inner error and regenerate config", err)
}
return err
} Prevention
- Always regenerate nodeup config via `kops update cluster` instead of hand-editing
- Keep nodeup binary version in lockstep with kops control-plane version
- Validate cluster spec changes (networking choice, assets) in dryrun before applying
- Ensure keystore/secretstore VFS paths are readable from nodes
When it happens
Trigger: loader.Build() returns an error after registering all builders — any Builder.Build() inside returns non-nil (bad NodeupModelContext state, unreadable keystore/secretstore data, invalid networking config, template render failure).
Common situations: Corrupt or missing keystore/secretstore VFS data; a networking option (Cilium/Calico/AmazonVPC) configured inconsistently in the cluster spec; nodeup config referencing assets that cannot be resolved; mismatch between cluster spec and nodeup config after an upgrade.
Related errors
- duplicate image task %q
- building nodeConfig for instanceGroup: %w
- marshalling nodeupConfig: %w
- unsupported cloud provider for authenticator %q
- parsing path for kops-channels manifest %s: %w
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/ca2809c73a17be83.
Report an issue: GitHub.