kubernetes/kops · error

failed to delete ssh key %s: %w

Error message

failed to delete ssh key %s: %w

What it means

DeleteSSHKey's IAM DeleteSSHKey call failed with a non-404 error (404 is tolerated and logged at V(8) as already-deleted). Fires on permission problems, invalid key ID, or API failures; the SSH key ID identifies the key.

Source

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

		Zone:     s.zone,
	})
	if err != nil && !is404Error(err) {
		return fmt.Errorf("delete server %s: waiting for instance after termination: %w", server.ID, err)
	}

	return nil
}

func (s *scwCloudImplementation) DeleteSSHKey(sshkey *iam.SSHKey) error {
	err := s.iamAPI.DeleteSSHKey(&iam.DeleteSSHKeyRequest{
		SSHKeyID: sshkey.ID,
	})
	if err != nil {
		if is404Error(err) {
			klog.V(8).Infof("SSH key %q (%s) was already deleted", sshkey.Name, sshkey.ID)
			return nil
		}
		return fmt.Errorf("failed to delete ssh key %s: %w", sshkey.ID, err)
	}
	return nil
}

func (s *scwCloudImplementation) DeleteVolume(volume *instance.Volume) error {
	err := s.instanceAPI.DeleteVolume(&instance.DeleteVolumeRequest{
		VolumeID: volume.ID,
		Zone:     s.zone,
	})
	if err != nil {
		if is404Error(err) {
			klog.V(8).Infof("Volume %q (%s) was already deleted", volume.Name, volume.ID)
			return nil
		}
		return fmt.Errorf("failed to delete volume %s: %w", volume.ID, err)
	}

	_, err = s.instanceAPI.WaitForVolume(&instance.WaitForVolumeRequest{

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Verify the SSH key ID still exists in IAM
  2. Check IAM permissions for SSH key deletion
  3. Retry — transient API errors are common
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/scaleway/cloud.go:656 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/cb70376fb00c5ae1. Report an issue: GitHub.