kubernetes/kops · error

error reading droplet private IP from DigitalOcean metadata:

Error message

error reading droplet private IP from DigitalOcean metadata: %v

What it means

Error "error reading droplet private IP from DigitalOcean metadata: %v" thrown in kubernetes/kops.

Source

Thrown at upup/pkg/fi/nodeup/command.go:535

		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")
		}

		return hostname, nil
	case api.CloudProviderLinode:
		label, err := linodemetadata.GetMetadataValue(context.TODO(), "label")
		if err != nil {
			return "", fmt.Errorf("error reading hostname from Linode metadata: %v", err)
		}

		// Akamai (Linode) cloud-init does not set the OS hostname.
		// Set it here so the OS hostname matches the kubelet hostname override.
		if err := os.WriteFile("/etc/hostname", []byte(label+"\n"), 0o644); err != nil { //nolint:gosec // /etc/hostname is conventionally world-readable system configuration.
			klog.Warningf("Failed to write /etc/hostname: %v", err)

View on GitHub (pinned to 4c8573c808)

When it happens

Trigger: Thrown at upup/pkg/fi/nodeup/command.go:535 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/d0e532f3325cf382. Report an issue: GitHub.