kubernetes/kops · error

reading metadata token response: %w

Error message

reading metadata token response: %w

What it means

getLinodeMetadataValue wraps io.ReadAll failure on the metadata token response body. It fires when the connection is truncated or reset mid-response after a 200 status, so the token bytes cannot be read even though the server accepted the request.

Source

Thrown at upup/pkg/fi/cloudup/linode/linodemetadata/authenticator.go:94

	tokenReq, err := http.NewRequestWithContext(ctx, http.MethodPut, metadataBaseURL+"/v1/token", nil)
	if err != nil {
		return "", fmt.Errorf("building metadata token request: %w", err)
	}
	tokenReq.Header.Set("Metadata-Token-Expiry-Seconds", linodeMetadataTokenTTL)

	tokenResp, err := client.Do(tokenReq)
	if err != nil {
		return "", fmt.Errorf("fetching metadata token: %w", err)
	}
	defer tokenResp.Body.Close()

	if tokenResp.StatusCode != http.StatusOK {
		return "", fmt.Errorf("fetching metadata token: unexpected status code %d", tokenResp.StatusCode)
	}

	tokenBytes, err := io.ReadAll(tokenResp.Body)
	if err != nil {
		return "", fmt.Errorf("reading metadata token response: %w", err)
	}

	token := strings.TrimSpace(string(tokenBytes))
	if token == "" {
		return "", fmt.Errorf("metadata token was empty")
	}

	instanceReq, err := http.NewRequestWithContext(ctx, http.MethodGet, metadataBaseURL+"/v1/instance", nil)
	if err != nil {
		return "", fmt.Errorf("building instance metadata request: %w", err)
	}
	instanceReq.Header.Set("Metadata-Token", token)

	instanceResp, err := client.Do(instanceReq)
	if err != nil {
		return "", fmt.Errorf("fetching instance metadata: %w", err)
	}
	defer instanceResp.Body.Close()

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Retry the token request; this is typically a transient network truncation
  2. Check for flaky networking or middleboxes resetting connections to the metadata endpoint
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/linode/linodemetadata/authenticator.go:94 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/bae00a6e1de004d9. Report an issue: GitHub.