kubernetes/kops · error

no ipv6 address found on interface %q

Error message

no ipv6 address found on interface %q

What it means

After fetching the GCE instance, the reconciler found no external IPv6 address on any of the instance's network interfaces (Ipv6AccessConfigs). This is a configuration mismatch: the node needs an IPv6 access config for IPAM to assign a pod CIDR.

Source

Thrown at cmd/kops-controller/controllers/gceipam.go:132

		}

		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)
		}

		ipv6Address := ipv6Addresses[0]
		podCIDRs := []string{ipv6Address}
		if err := patchNodePodCIDRs(r.coreV1Client, ctx, node, podCIDRs); err != nil {
			return ctrl.Result{}, err
		}
	}

	return ctrl.Result{}, nil
}

func (r *GCEIPAMReconciler) SetupWithManager(mgr ctrl.Manager) error {
	return ctrl.NewControllerManagedBy(mgr).
		Named("gce_ipam").

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Configure the GCE instance/instance-template with an IPv6 access config
  2. Verify the cluster spec enables IPv6 networking consistently
  3. Recreate the instance from a corrected template so it gets an IPv6 address
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/kops-controller/controllers/gceipam.go:132 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/9f54eb897707ca30. Report an issue: GitHub.