kubernetes/kops · error

error determining OS architecture: %v

Error message

error determining OS architecture: %v

What it means

After parsing the config, nodeup detects the host's CPU architecture (e.g. amd64/arm64) via architectures.FindArchitecture(), which inspects the running OS (uname/machine info). This error means that detection failed, so nodeup cannot select the right set of assets (binaries, images) for the node. Run aborts before any models are built.

Source

Thrown at upup/pkg/fi/nodeup/command.go:174

		nodeupConfigHash = sha256.Sum256(b)
	default:
		return fmt.Errorf("no instance group defined in nodeup config")
	}

	if bootConfig.NodeupConfigHash != "" {
		if want, got := bootConfig.NodeupConfigHash, base64.StdEncoding.EncodeToString(nodeupConfigHash[:]); got != want {
			return fmt.Errorf("nodeup config hash mismatch (was %q, expected %q)", got, want)
		}
	}

	err = evaluateSpec(&nodeupConfig, bootConfig.CloudProvider, region)
	if err != nil {
		return err
	}

	architecture, err := architectures.FindArchitecture()
	if err != nil {
		return fmt.Errorf("error determining OS architecture: %v", err)
	}

	distribution, err := distributions.FindDistribution("/")
	if err != nil {
		return fmt.Errorf("error determining OS distribution: %v", err)
	}

	configAssets := nodeupConfig.Assets[architecture]
	assetStore := fi.NewAssetStore(c.CacheDir)
	for _, asset := range configAssets {
		err := assetStore.Add(ctx, asset)
		if err != nil {
			return fmt.Errorf("error adding asset %q: %v", asset, err)
		}
	}

	// cloud holds the AWS clients, on AWS only.
	var cloud *awsup.Cloud

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Run nodeup on a supported architecture (amd64 or arm64) — check the machine with 'uname -m' and, if wrong, fix the instance type / image of the instance group.
  2. Upgrade to a kOps version that supports the machine's architecture if it is a newly supported variant.
  3. If running in a container or VM emulation layer, verify uname reports the emulated architecture correctly (e.g. qemu/binfmt misconfiguration) and fix the emulation setup.
  4. Inspect architectures.FindArchitecture() in the kOps source for the exact probe that failed on this OS and address that environment issue (e.g. missing /proc/sys/kernel files).

Example fix

// before: instance group uses an unsupported CPU architecture
machineType: m6g.xlarge // arm64 host with amd64-only assumptions
// after: match machine type to a supported arch and kOps version
machineType: m5.xlarge
Defensive patterns

Strategy: validation

Validate before calling

// Check the machine architecture is one nodeup supports before invoking
out, err := exec.Command("uname", "-m").Output()
if err != nil || (strings.TrimSpace(string(out)) != "x86_64" && strings.TrimSpace(string(out)) != "aarch64") {
    return fmt.Errorf("unsupported machine architecture: %s", out)
}

Try / catch

err := cmd.Run(out)
if err != nil && strings.Contains(err.Error(), "error determining OS architecture") {
    // fail fast and surface the unsupported-arch condition
}

Prevention

When it happens

Trigger: Calling NodeUpCommand.Run() on a machine where architectures.FindArchitecture() cannot determine the machine architecture — unexpected/unrecognized architecture output, unusual kernel (e.g. exotic ARM variant or constrained container), or a failing runtime query on an unsupported platform.

Common situations: Booting nodeup on an OS/architecture not supported by this kOps version (e.g. riscv64, s390x); running inside minimal containers where /proc or uname behaves unexpectedly; new hardware before kOps added support.

Related errors


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