kubernetes/kops · error

delete on clusters on %q not (yet) supported

Error message

delete on clusters on %q not (yet) supported

What it means

ListResources discovers all cloud resources belonging to a cluster for deletion. When the cluster's cloud provider does not have a case in the provider switch (and no resource collector is implemented), the default branch returns this error. It signals that kOps cannot enumerate resources on that provider, so `kops delete cluster` cannot proceed safely.

Source

Thrown at pkg/resources/ops/collector.go:74

		return gce.ListResourcesGCE(cloud.(cloudgce.GCECloud), clusterInfo)
	case kops.CloudProviderHetzner:
		return hetzner.ListResources(cloud.(cloudhetzner.HetznerCloud), clusterInfo)
	case kops.CloudProviderOpenstack:
		return openstack.ListResources(cloud.(cloudopenstack.OpenstackCloud), clusterInfo)
	case kops.CloudProviderAzure:
		clusterInfo.AzureStorageAccountID = cluster.Spec.CloudProvider.Azure.StorageAccountID
		clusterInfo.AzureSubscriptionID = cluster.Spec.CloudProvider.Azure.SubscriptionID
		clusterInfo.AzureResourceGroupName = cluster.AzureResourceGroupName()
		clusterInfo.AzureResourceGroupShared = cluster.IsSharedAzureResourceGroup()
		clusterInfo.AzureNetworkShared = cluster.SharedVPC()
		clusterInfo.AzureRouteTableShared = cluster.IsSharedAzureRouteTable()
		return azure.ListResourcesAzure(cloud.(cloudazure.AzureCloud), clusterInfo)
	case kops.CloudProviderScaleway:
		return scaleway.ListResources(cloud.(cloudscaleway.ScwCloud), clusterInfo)
	case kops.CloudProviderLinode:
		return resourcelinode.ListResources(cloud.(cloudlinode.LinodeCloud), clusterInfo)
	default:
		return nil, fmt.Errorf("delete on clusters on %q not (yet) supported", cloud.ProviderID())
	}
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the provider switch in pkg/resources/ops/collector.go and confirm your provider is supported for deletion
  2. Upgrade kOps to a version that implements ListResources for your cloud provider
  3. Delete the resources manually in the cloud console/CLI after verifying no other cluster shares them
  4. Implement a ListResources collector for the provider and add a switch case (contribute upstream)
  5. Re-run with --yes only after manually confirming all resources are removed; remove stale state with `kops delete cluster` alternatives

Example fix

// before (unsupported provider)
kops delete cluster --name mycluster
// error: delete on clusters on "openstack-nebula" not (yet) supported
// after
kops delete cluster --name mycluster --cloud aws # use a supported provider
// or manually remove resources then delete cluster state
Defensive patterns

Strategy: validation

Validate before calling

// Before calling delete, verify provider support
supported := map[kops.CloudProviderID]bool{
    kops.CloudProviderAWS: true, kops.CloudProviderGCE: true,
    kops.CloudProviderAzure: true, kops.CloudProviderScaleway: true,
    kops.CloudProviderLinode: true,
}
if !supported[cloud.ProviderID()] {
    return fmt.Errorf("provider %q has no delete support; clean up manually", cloud.ProviderID())
}

Try / catch

if err := ops.DeleteResources(cloud, res, 10, interval, wait); err != nil {
    if strings.Contains(err.Error(), "not (yet) supported") {
        klog.Warningf("provider %s unsupported for delete; handle cleanup externally", cloud.ProviderID())
        return errSkipCloudCleanup
    }
    return err
}

Prevention

When it happens

Trigger: Running `kops delete cluster --count ...` (or any flow calling ListResources in pkg/resources/ops/collector.go:74) against a cluster whose CloudProviderID falls through the switch — e.g. an unsupported or newly added provider like a alpha/experimental provider not wired into the collector, or a corrupted providerID value.

Common situations: Users created a cluster on a provider with experimental/unsupported support (e.g. some providers beyond aws/gce/azure/scaleway/linode) and then attempt cluster deletion; or a kOps upgrade added a provider but the delete collector wasn't ported; or providerID is misreported due to a broken cluster spec.

Related errors


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