kubernetes/kops · error
error reading hostname from GCE metadata: %v
Error message
error reading hostname from GCE metadata: %v
What it means
Error "error reading hostname from GCE metadata: %v" thrown in kubernetes/kops.
Source
Thrown at upup/pkg/fi/nodeup/command.go:524
return "", fmt.Errorf("instance %s was launched with a resource-based hostname; useIPBasedNodeNames requires subnets that assign IP-based hostnames", instanceID)
}
localIPv4Bytes, err := vfs.Context.ReadFile("metadata://aws/meta-data/local-ipv4")
if err != nil {
return "", fmt.Errorf("error reading local-ipv4 from AWS metadata: %v", err)
}
localIPv4 := string(localIPv4Bytes)
if net.ParseIP(localIPv4).To4() == nil {
return "", fmt.Errorf("local-ipv4 from AWS metadata is not a valid IPv4 address: %q", localIPv4)
}
return awsbootstrap.PrivateDNSName(localIPv4, region), nil
case api.CloudProviderGCE:
// This lets us tolerate broken hostnames (i.e. systemd)
b, err := vfs.Context.ReadFile("metadata://gce/instance/hostname")
if err != nil {
return "", fmt.Errorf("error reading hostname from GCE metadata: %v", err)
}
// We only want to use the first portion of the fully-qualified name
// e.g. foo.c.project.internal => foo
fullyQualified := string(b)
bareHostname := strings.Split(fullyQualified, ".")[0]
return bareHostname, nil
case api.CloudProviderDO:
vBytes, err := vfs.Context.ReadFile("metadata://digitalocean/interfaces/private/0/ipv4/address")
if err != nil {
return "", fmt.Errorf("error reading droplet private IP from DigitalOcean metadata: %v", err)
}
hostname := string(vBytes)
if hostname == "" {
return "", errors.New("private IP for digitalocean droplet was empty")
}
View on GitHub (pinned to 4c8573c808)
When it happens
Trigger: Thrown at upup/pkg/fi/nodeup/command.go:524 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/309847662ca78d99.
Report an issue: GitHub.