kubernetes/kops · error
error parsing etcd cluster label %q on volume %q: %v
Error message
error parsing etcd cluster label %q on volume %q: %v
What it means
Wraps etcd.ParseEtcdClusterSpec failure in findEtcdStatus: the decoded etcd cluster label value (which encodes cluster spec info) could not be parsed back into an EtcdClusterSpec. Indicates label content drift from what kOps originally wrote.
Source
Thrown at upup/pkg/fi/cloudup/gce/status.go:110
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]
if status == nil {
status = &kops.EtcdClusterStatus{
Name: etcdClusterName,
}View on GitHub (pinned to 4c8573c808)
Solutions
- Inspect the etcd volume's label value against kOps expectations
- Restore or remove the modified label
- Rebuild the etcd member if its state is inconsistent
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/gce/status.go:110 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/0c8bb1b71a4674ae.
Report an issue: GitHub.