kubernetes/kops · error
droplet metadata returned non-200 status code: %d
Error message
droplet metadata returned non-200 status code: %d
What it means
Status-code validation on the DO metadata response: the HTTP request succeeded but returned a non-200 status, so the metadata payload cannot be trusted. Indicates the metadata service rejected or failed the request rather than a connectivity problem.
Source
Thrown at upup/pkg/fi/cloudup/do/dometadata/authenticator.go:66
const (
dropletIDMetadataURL = "http://169.254.169.254/metadata/v1/id"
)
// GetDropletID returns the droplet ID from the metadata service.
func GetDropletID() (string, error) {
return getMetadata(dropletIDMetadataURL)
}
func getMetadata(url string) (string, error) {
resp, err := http.Get(url)
if err != nil {
return "", fmt.Errorf("error querying droplet metadata: %w", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("droplet metadata returned non-200 status code: %d", resp.StatusCode)
}
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
return "", fmt.Errorf("error reading droplet metadata: %w", err)
}
return string(bodyBytes), nil
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Retry after a short delay (metadata service transient errors)
- Verify the requested metadata path is correct
- Check for metadata service rate limiting
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/do/dometadata/authenticator.go:66 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/4fb969f4cee0861e.
Report an issue: GitHub.