kubernetes/kops · error

unsupported architecture for instance type %q: %v

Error message

unsupported architecture for instance type %q: %v

What it means

MachineArchitecture iterates the EC2 SupportedArchitectures list and only maps x86_64 and arm64; if none of the returned architectures are supported it collects them and returns this error listing the unsupported values.

Source

Thrown at upup/pkg/fi/cloudup/new_cluster.go:1767

		if err != nil {
			return "", fmt.Errorf("error finding instance info for instance type %q: %w", machineType, err)
		}
		if info.ProcessorInfo == nil || len(info.ProcessorInfo.SupportedArchitectures) == 0 {
			return "", fmt.Errorf("unable to determine architecture info for instance type %q", machineType)
		}
		var unsupported []ec2types.ArchitectureType
		for _, arch := range info.ProcessorInfo.SupportedArchitectures {
			// Return the first found supported architecture, in order of popularity
			switch arch {
			case ec2types.ArchitectureTypeX8664:
				return architectures.ArchitectureAmd64, nil
			case ec2types.ArchitectureTypeArm64:
				return architectures.ArchitectureArm64, nil
			default:
				unsupported = append(unsupported, arch)
			}
		}
		return "", fmt.Errorf("unsupported architecture for instance type %q: %v", machineType, unsupported)
	default:
		// No other clouds are known to support any other architectures at this time
		return architectures.ArchitectureAmd64, nil
	}
}

// discoveryUniverseID returns the universe ID for the cluster's discovery service,
// creating a new discovery CA if necessary.
func discoveryUniverseID(ctx context.Context, keystore fi.Keystore) (string, error) {
	keyset, err := keystore.FindKeyset(ctx, fi.DiscoveryCAID)
	if err != nil {
		return "", fmt.Errorf("error finding discovery CA: %w", err)
	}

	if keyset == nil || keyset.Primary == nil || keyset.Primary.Certificate == nil {
		subject := pkix.Name{
			CommonName: fi.DiscoveryCAID,
		}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Pick an x86_64 or arm64 instance type (t3/m5 for amd64, m6g/c7g for arm64)
  2. Upgrade kops so newly introduced EC2 architectures are recognized

Example fix

// before
--instance-type=<i386-only-type>
// after
--instance-type=m6g.large
Defensive patterns

Strategy: validation

Validate before calling

for _, arch := range processorInfo.SupportedArchitectures {
    if arch != ec2types.ArchitectureTypeX8664 && arch != ec2types.ArchitectureTypeArm64 {
        return fmt.Errorf("instance type arch %s unsupported by kops", arch)
    }
}

Prevention

When it happens

Trigger: Selecting an instance type whose ProcessorInfo.SupportedArchitectures contains only architectures other than x8664/arm64, e.g. i386 or future arch types returned by the EC2 API.

Common situations: Legacy/obscure instance types; AWS introducing a new architecture not yet handled by the installed kops version.

Related errors


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