kubernetes/kops · error
%s is required
Error message
%s is required
What it means
Startup guard in the Akamai (Linode) node-identity identifier: the LINODE_TOKEN environment variable, which is the only source of API credentials, is empty. No Linode API calls are possible without it.
Source
Thrown at pkg/nodeidentity/linode/identify.go:57
providerIDPrefix = "linode://"
)
type linodeClient interface {
GetInstance(ctx context.Context, linodeID int) (*linodego.Instance, error)
}
// nodeIdentifier identifies a node from Akamai (Linode).
type nodeIdentifier struct {
client linodeClient
cache expirationcache.Store
cacheEnabled bool
}
// New creates and returns a nodeidentity.Identifier for Nodes running on Akamai (Linode).
func New(cacheNodeidentityInfo bool) (nodeidentity.Identifier, error) {
accessToken := os.Getenv("LINODE_TOKEN")
if accessToken == "" {
return nil, fmt.Errorf("%s is required", "LINODE_TOKEN")
}
client, err := linodego.NewClient(nil)
if err != nil {
return nil, fmt.Errorf("failed to create Linode client: %w", err)
}
client.SetUserAgent("kops/nodeidentity")
client.SetToken(accessToken)
return &nodeIdentifier{
client: &client,
cache: expirationcache.NewTTLStore(stringKeyFunc, cacheTTL),
cacheEnabled: cacheNodeidentityInfo,
}, nil
}
// IdentifyNode queries Akamai (Linode) for the node identity information.
func (i *nodeIdentifier) IdentifyNode(ctx context.Context, node *corev1.Node) (*nodeidentity.Info, error) {View on GitHub (pinned to 4c8573c808)
Solutions
- Set LINODE_TOKEN to a valid Linode API token for the node's environment
- Verify the token is injected into nodeup/kubelet's environment on Linode instances
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/nodeidentity/linode/identify.go:57 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/51668f99adc00c08.
Report an issue: GitHub.