kubernetes/kops · error

unexpected etcd label on volume %q: %s=%s

Error message

unexpected etcd label on volume %q: %s=%s

What it means

Decoding guard in findEtcdStatus: a disk label with the etcd-cluster prefix was found, but its value fails GCE label decoding (GCE label values have charset/length restrictions, so kOps encodes them). Indicates a hand-edited or corrupted label on an etcd volume.

Source

Thrown at upup/pkg/fi/cloudup/gce/status.go:106

					match = false
				}
			}
			if match {
				disks = append(disks, d)
			}
		}
	}

	for _, disk := range disks {
		etcdClusterName := ""
		var etcdClusterSpec *etcd.EtcdClusterSpec
		master := false
		for k, v := range disk.Labels {
			if strings.HasPrefix(k, GceLabelNameEtcdClusterPrefix) {
				etcdClusterName = strings.TrimPrefix(k, GceLabelNameEtcdClusterPrefix)
				value, err := DecodeGCELabel(v)
				if err != nil {
					return nil, fmt.Errorf("unexpected etcd label on volume %q: %s=%s", disk.Name, k, v)
				}
				spec, err := etcd.ParseEtcdClusterSpec(etcdClusterName, value)
				if err != nil {
					return nil, fmt.Errorf("error parsing etcd cluster label %q on volume %q: %v", value, disk.Name, err)
				}
				etcdClusterSpec = spec
			} else if strings.HasPrefix(k, GceLabelNameRolePrefix) {
				roleName := strings.TrimPrefix(k, GceLabelNameRolePrefix)
				if roleName == "master" || roleName == "control-plane" {
					master = true
				}
			}
		}
		if etcdClusterName == "" || etcdClusterSpec == nil || !master {
			continue
		}

		status := statusMap[etcdClusterName]

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Inspect the disk's labels in the GCP console
  2. Restore the original kOps-managed label value
  3. Or delete the stale etcd disk if the cluster is being rebuilt
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/gce/status.go:106 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/a42675a7906a1e3c. Report an issue: GitHub.