kubernetes/kops · error

unsupported cloud provider: %s

Error message

unsupported cloud provider: %s

What it means

Prefix.Find validates that the node's boot config targets AWS before attempting to reconcile an IPv6 prefix delegation task; any other cloud provider returns this error. Prefix delegation via EC2 AssignIpv6Addresses only exists on AWS, so the task is AWS-only.

Source

Thrown at upup/pkg/fi/nodeup/nodetasks/prefix.go:55

type Prefix struct {
	Name string
}

var _ fi.HasName = (*Prefix)(nil)

func (f *Prefix) GetName() *string {
	return &f.Name
}

// String returns a string representation, implementing the Stringer interface
func (p *Prefix) String() string {
	return fmt.Sprintf("Prefix: %s", p.Name)
}

func (e *Prefix) Find(c *fi.NodeupContext) (*Prefix, error) {
	if c.T.BootConfig.CloudProvider != kops.CloudProviderAWS {
		return nil, fmt.Errorf("unsupported cloud provider: %s", c.T.BootConfig.CloudProvider)
	}

	mac, err := getInstanceMetadataFirstValue(c.Context(), "mac")
	if err != nil {
		return nil, err
	}

	prefixes, err := getInstanceMetadataList(c.Context(), path.Join("network/interfaces/macs/", mac, "/ipv6-prefix"))
	if err != nil {
		return nil, err
	}
	if len(prefixes) == 0 {
		return nil, nil
	}

	klog.V(2).Infof("found prefix for primary network interface: %q", prefixes[0])
	actual := &Prefix{
		Name: e.Name,

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Remove or disable IPv6 prefix delegation settings in the cluster spec when the cloud is not AWS.
  2. Set cloudProvider correctly and regenerate the nodeup config with `kops update cluster`.
  3. Only define the Prefix task on AWS instance groups.

Example fix

// before
spec:
  cloudProvider: openstack
  nonMasqueradeCIDR: fd00::/8  # ipv6 prefix config left over
// after
spec:
  cloudProvider: openstack
  # prefix/ipv6-delegation config removed
Defensive patterns

Strategy: validation

Validate before calling

if bootConfig.CloudProvider != kops.CloudProviderAWS {
    // do not define Prefix tasks on non-AWS clouds
    return nil
}

Prevention

When it happens

Trigger: A Prefix task (IPv6 prefix delegation) is present in nodeup's task map while BootConfig.CloudProvider is GCE, OpenStack, Azure, Hetzner, DO, etc.

Common situations: Copying an AWS cluster spec as a template for another cloud and leaving the IPv6/prefix settings enabled; switching a cluster's cloudProvider without removing prefix-related configuration.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/ceee10cdd3126d6a. Report an issue: GitHub.