kubernetes/kops · error

instance detach is not yet implemented for Akamai (Linode)

Error message

instance detach is not yet implemented for Akamai (Linode)

What it means

Cloud.DetachInstance for the Akamai (Linode) provider is a stub returning 'instance detach is not yet implemented'. Detaching (removing an instance from its group without deleting) is unsupported for Linode.

Source

Thrown at upup/pkg/fi/cloudup/linode/cloud.go:147

		if linodego.IsNotFound(err) {
			return nil
		}
		return fmt.Errorf("error deleting Akamai (Linode) instance %q: %w", instance.ID, err)
	}

	return nil
}

func (c *Cloud) DeregisterInstance(instance *cloudinstances.CloudInstance) error {
	return nil
}

func (c *Cloud) DeleteGroup(group *cloudinstances.CloudInstanceGroup) error {
	return fmt.Errorf("instance group deletion is not yet implemented for Akamai (Linode)")
}

func (c *Cloud) DetachInstance(instance *cloudinstances.CloudInstance) error {
	return fmt.Errorf("instance detach is not yet implemented for Akamai (Linode)")
}

func (c *Cloud) GetCloudGroups(cluster *kops.Cluster, instancegroups []*kops.InstanceGroup, warnUnmatched bool, nodes []v1.Node) (map[string]*cloudinstances.CloudInstanceGroup, error) {
	return map[string]*cloudinstances.CloudInstanceGroup{}, nil
}

func (c *Cloud) Region() string {
	return c.region
}

func (c *Cloud) FindClusterStatus(cluster *kops.Cluster) (*kops.ClusterStatus, error) {
	return &kops.ClusterStatus{}, nil
}

func (c *Cloud) GetApiIngressStatus(cluster *kops.Cluster) ([]fi.ApiIngressStatus, error) {
	return nil, nil
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Use rolling-update settings that delete-and-recreate instances instead of detaching (avoid detach-dependent flags).
  2. Manually remove and recreate the Linode if a single instance must be replaced outside a rolling update.
  3. Wait for/upstream Linode DetachInstance support in kops before using detach workflows.
Defensive patterns

Strategy: fallback

Validate before calling

if provider == kops.CloudProviderLinode && needsDetach {
	return fmt.Errorf("detach is unsupported for Linode; use delete-and-recreate")
}

Try / catch

if err := cloud.DetachInstance(inst); err != nil && strings.Contains(err.Error(), "not yet implemented for Akamai") {
	// fall back to DeleteInstance + recreate workflow
}

Prevention

When it happens

Trigger: Rolling-update operations that use detach/reattach semantics (e.g. --instance-group with detach-based replacement), or any code path invoking Cloud.DetachInstance on a Linode cluster.

Common situations: Users attempting surge-style rolling updates that require detaching instances from groups on Linode clusters.

Related errors


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