kubernetes/kops · error

DeleteGroup not implemented on azureCloud

Error message

DeleteGroup not implemented on azureCloud

What it means

CloudInstanceGroup deletion (rolling-update scale-down / instance group replacement) is not implemented for Azure; DeleteGroup returns this error so no auto-scaling group/vmss backing group is ever deleted through this generic path.

Source

Thrown at upup/pkg/fi/cloudup/azure/azure_cloud.go:252

		}
	}
	return nil, nil
}

func (c *azureCloudImplementation) DeleteInstance(i *cloudinstances.CloudInstance) error {
	vmssName := i.CloudInstanceGroup.HumanName
	instanceID := strings.TrimPrefix(i.ID, vmssName+"_")
	return c.vmscaleSetVMsClient.Delete(context.TODO(), c.resourceGroupName, vmssName, instanceID)
}

// DeregisterInstance drains a cloud instance and loadbalancers.
func (c *azureCloudImplementation) DeregisterInstance(i *cloudinstances.CloudInstance) error {
	klog.V(8).Info("Azure DeregisterInstance not implemented")
	return nil
}

func (c *azureCloudImplementation) DeleteGroup(g *cloudinstances.CloudInstanceGroup) error {
	return errors.New("DeleteGroup not implemented on azureCloud")
}

func (c *azureCloudImplementation) DetachInstance(i *cloudinstances.CloudInstance) error {
	return errors.New("DetachInstance not implemented on azureCloud")
}

// AddClusterTags adds cluster tags to the resource.
func (c *azureCloudImplementation) AddClusterTags(tags map[string]*string) {
	for k, v := range c.tags {
		tags[k] = &v
	}
}

func (c *azureCloudImplementation) GetApiIngressStatus(cluster *kops.Cluster) ([]fi.ApiIngressStatus, error) {
	var ingresses []fi.ApiIngressStatus
	rg := cluster.AzureResourceGroupName()

	lbSpec := cluster.Spec.API.LoadBalancer

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Manage VMSS / availability set scaling and deletion directly in Azure (portal, az CLI, ARM templates) instead of via this path
  2. Upgrade kops — newer releases implement Azure DeleteGroup via VMSS scaling
  3. Patch azureCloudImplementation.DeleteGroup to resize/delete the backing VMSS
Defensive patterns

Strategy: try-catch

Validate before calling

if c.ProviderID() == kops.CloudProviderAzure {
	return fmt.Errorf("DeleteGroup unsupported on Azure; scale the VMSS directly")
}

Try / catch

if err := cloud.DeleteGroup(g); err != nil {
	if strings.Contains(err.Error(), "DeleteGroup not implemented on azureCloud") {
		// fall back to Azure-native VMSS scaling
	} else { return err }
}

Prevention

When it happens

Trigger: Invoking kops rolling-update cluster or instance-group deletion against an Azure cluster when the rolling-update code asks the cloud to delete a CloudInstanceGroup; any code path calling cloud.DeleteGroup(g) for Azure.

Common situations: Rolling a master or node instance group on Azure expecting kops to remove old VMSS/availability-set members; deleting an instance group via kops delete instancegroup on Azure; automated scale-down flows.

Related errors


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