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.LoadBalancerView on GitHub (pinned to 4c8573c808)
Solutions
- Manage VMSS / availability set scaling and deletion directly in Azure (portal, az CLI, ARM templates) instead of via this path
- Upgrade kops — newer releases implement Azure DeleteGroup via VMSS scaling
- 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
- Check kops Azure feature parity before automating group lifecycle ops
- Perform instance group deletion on Azure via the Azure API/CLI
- Gate rolling-update automation on provider capability checks
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
- DetachInstance not implemented on azureCloud
- error deleting group %q: %w
- DNS not implemented on azureCloud
- FindVPCInfo not implemented on azureCloud, use FindVNetInfo
- updating Role Assignment is not yet implemented
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/d0131c571e7cf648.
Report an issue: GitHub.