kubernetes/kops · error
unexpected format for providerID %q
Error message
unexpected format for providerID %q
What it means
The GCE IPAM reconciler parsed the node's providerID but its path did not contain exactly two segments (<zone>/<instance>). The providerID parsed as a URL yet does not match the expected gce://project/zone/instance shape, so the components cannot be used.
Source
Thrown at cmd/kops-controller/controllers/gceipam.go:107
}
return ctrl.Result{}, err
}
if len(node.Spec.PodCIDRs) == 0 {
// CCM Node Controller has not done its thing yet
if node.Spec.ProviderID == "" {
klog.Infof("node %q has empty provider ID", node.Name)
return ctrl.Result{}, nil
}
// e.g. providerID: gce://example-project-id/us-west2-a/instance-id
providerURL, err := url.Parse(node.Spec.ProviderID)
if err != nil {
return ctrl.Result{}, fmt.Errorf("parsing providerID %q: %w", node.Spec.ProviderID, err)
}
tokens := strings.Split(strings.Trim(providerURL.Path, "/"), "/")
if len(tokens) != 2 {
return ctrl.Result{}, fmt.Errorf("unexpected format for providerID %q", node.Spec.ProviderID)
}
project := providerURL.Host
zone := tokens[0]
instanceID := tokens[1]
if project == "" || zone == "" || instanceID == "" {
return ctrl.Result{}, fmt.Errorf("unexpected format for providerID %q", node.Spec.ProviderID)
}
instance, err := r.gceClient.Instances.Get(project, zone, instanceID).Context(ctx).Do()
if err != nil {
return ctrl.Result{}, fmt.Errorf("getting instance %s/%s/%s: %w", project, zone, instanceID, err)
}
var ipv6Addresses []string
for _, nic := range instance.NetworkInterfaces {
for _, ipv6AccessConfig := range nic.Ipv6AccessConfigs {
if ipv6AccessConfig.ExternalIpv6 != "" {
ipv6Address := fmt.Sprintf("%s/%d", ipv6AccessConfig.ExternalIpv6, ipv6AccessConfig.ExternalIpv6PrefixLength)View on GitHub (pinned to 4c8573c808)
Solutions
- Check the node's spec.providerID matches gce://PROJECT/ZONE/INSTANCE
- Regenerate the providerID by restarting the GCE cloud-controller-manager on that node
- Investigate what wrote the non-conforming providerID
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cmd/kops-controller/controllers/gceipam.go:107 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/40a1690a5e26b8f7.
Report an issue: GitHub.