kubernetes/kops · error
error determining OS architecture
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.
Solutions
- 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.
- Upgrade to a kOps version that supports the machine's architecture if it is a newly supported variant.
- 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.
- 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
- Use supported instance types/images (amd64 or arm64) in instance groups
- Test nodeup on new hardware/VM classes before rolling them into production
- Keep kOps up to date so newly supported architectures are detected correctly
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
- error determining OS distribution
- building nodeConfig for instanceGroup
- challenge.id not set
- challenge not set
- ConfigBase or ConfigServer is required
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/1569a71422cd6d8f.
Report an issue: GitHub.
Appendix: 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.CloudView on GitHub (pinned to 4c8573c808)