kubernetes/kops · error
getting instance %s/%s/%s: %w
Error message
getting instance %s/%s/%s: %w
What it means
The GCE IPAM reconciler's call to the GCE compute API to fetch the instance (identified from the node's providerID) failed. Inputs were validated; this wraps a GCE API error such as the instance being deleted, permissions, or transient API failure.
Source
Thrown at cmd/kops-controller/controllers/gceipam.go:118
// 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)
ipv6Addresses = append(ipv6Addresses, ipv6Address)
}
}
}
if len(ipv6Addresses) == 0 {
return ctrl.Result{}, fmt.Errorf("no ipv6 address found on interface %q", instance.NetworkInterfaces[0].Name)
}
if len(ipv6Addresses) != 1 {
return ctrl.Result{}, fmt.Errorf("multiple ipv6 addresses found on interface %q: %v", instance.NetworkInterfaces[0].Name, ipv6Addresses)
}View on GitHub (pinned to 4c8573c808)
Solutions
- Inspect the wrapped GCE API error for the exact cause
- Verify the instance still exists in the project/zone
- Check the service account's compute.instance.get permissions
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at cmd/kops-controller/controllers/gceipam.go:118 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/e4bc99af73ea0224.
Report an issue: GitHub.