kubernetes/kops · error

failed to find network for server group %q

Error message

failed to find network for server group %q

What it means

When creating servers for a Hetzner server group, kOps requires the group to be attached to the cluster's private network. RenderHetzner throws this when the e.Network pointer is nil — the network task reference was never resolved, so server creation cannot proceed with a valid network attachment.

Source

Thrown at upup/pkg/fi/cloudup/hetznertasks/servergroup.go:205

			}
		}
	}

	actualCount := 0
	if a != nil {
		actualCount = a.Count
	}
	expectedCount := e.Count

	if actualCount >= expectedCount {
		return nil
	}

	if len(e.SSHKeys) == 0 {
		return fmt.Errorf("failed to find ssh keys for server group %q", fi.ValueOf(e.Name))
	}
	if e.Network == nil {
		return fmt.Errorf("failed to find network for server group %q", fi.ValueOf(e.Name))
	}

	userData, err := fi.ResourceAsString(e.UserData)
	if err != nil {
		return err
	}
	userDataBytes, err := fi.ResourceAsBytes(e.UserData)
	if err != nil {
		return err
	}
	userDataHash := SafeBytesHash(userDataBytes)

	networkID, err := strconv.ParseInt(fi.ValueOf(e.Network.ID), 10, 64)
	if err != nil {
		return fmt.Errorf("failed to convert network ID %q to int: %w", fi.ValueOf(e.Network.ID), err)
	}

	for i := 1; i <= expectedCount-actualCount; i++ {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Ensure the cluster spec defines a Hetzner network so the Network task is created and linked to the server group.
  2. Check earlier logs for a failed Network task (e.g. errors 2846/2847) and fix that root cause first.
  3. Re-run `kops update cluster` after network configuration is corrected.
  4. Verify the network task completes before the server group task in the task graph ordering.

Example fix

// before (cluster spec, Hetzner section)
network: null
// after
network:
  id: "1234567"
Defensive patterns

Strategy: validation

Validate before calling

if cluster.Spec.Network == nil || cluster.Spec.Network.ID == "" {
	return fmt.Errorf("hetzner cluster spec must define a network for server groups")
}

Prevention

When it happens

Trigger: RenderHetzner in upup/pkg/fi/cloudup/hetznertasks/servergroup.go:205 finds e.Network == nil after SSH key validation passes and the group needs scaling up (actualCount < expectedCount), meaning the Network task link is unresolved in the rendered task graph.

Common situations: The cluster's network configuration is missing or the Network task failed earlier leaving the reference nil; spec omits the Hetzner network section; task dependency ordering broken so the server group renders before the network resolves.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/b4df8b2376519169. Report an issue: GitHub.