kubernetes/kops · error

delete server %s: detaching volume %s

Error message

delete server %s: detaching volume %s

What it means

In DeleteServer, DetachVolume failed for a volume carrying an etcd-cluster tag (prefix TagNameEtcdClusterPrefix). Detaching etcd volumes before termination is required so they survive server deletion; failure aborts the delete, leaving the server alive. Like the sibling message, this does not wrap the underlying error, so the SDK cause is lost.

Source

Thrown at upup/pkg/fi/cloudup/scaleway/cloud.go:620

	}

	// We detach the etcd volumes
	for _, volume := range srv.Server.Volumes {
		volumeResponse, err := s.instanceAPI.GetVolume(&instance.GetVolumeRequest{
			Zone:     s.zone,
			VolumeID: volume.ID,
		})
		if err != nil {
			return fmt.Errorf("delete server %s: getting infos for volume %s", server.ID, volume.ID)
		}
		for _, tag := range volumeResponse.Volume.Tags {
			if strings.HasPrefix(tag, TagNameEtcdClusterPrefix) {
				_, err = s.instanceAPI.DetachVolume(&instance.DetachVolumeRequest{
					Zone:     s.zone,
					VolumeID: volume.ID,
				})
				if err != nil {
					return fmt.Errorf("delete server %s: detaching volume %s", server.ID, volume.ID)
				}
			}
		}
	}

	// We terminate the server. This stops and deletes the machine immediately
	_, err = s.instanceAPI.ServerAction(&instance.ServerActionRequest{
		Zone:     s.zone,
		ServerID: server.ID,
		Action:   instance.ServerActionTerminate,
	})
	if err != nil && !is404Error(err) {
		return fmt.Errorf("delete server %s: terminating instance: %w", server.ID, err)
	}

	_, err = s.instanceAPI.WaitForServer(&instance.WaitForServerRequest{
		ServerID: server.ID,
		Zone:     s.zone,

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the volume's state in the Scaleway console (it may be locked or already detaching)
  2. Detach the volume manually, then re-run deletion
  3. Verify IAM permissions for volume actions
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/scaleway/cloud.go:620 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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