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 nil

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check controller logs for the underlying wrapped error
  2. Verify Linode API token/credentials are available to the kops-controller pod
  3. If --cache-nodeidentity-info is set, ensure the cache directory exists and is writable
  4. 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

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


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