kubernetes/kops · error
unsupported runc version: %q
Error message
unsupported runc version: %q
What it means
findRuncVersionUrl validates the requested runc version against the minimum supported version. runc download URLs on GitHub changed layout at 1.1.0, so versions older than 1.1.0 cannot be resolved to a known asset URL. The error is thrown when the parsed semver is strictly less than 1.1.0.
Source
Thrown at pkg/nodemodel/wellknownassets/runc.go:81
return nil, fmt.Errorf("unable to find runc version")
}
u, err := findRuncVersionUrl(arch, version)
if err != nil {
return nil, err
}
canonicalURL = u
}
return buildFileAsset(assetBuilder, canonicalURL, knownHash)
}
func findRuncVersionUrl(arch architectures.Architecture, version string) (string, error) {
sv, err := semver.ParseTolerant(version)
if err != nil {
return "", fmt.Errorf("unable to parse version string: %q", version)
}
if sv.LT(semver.MustParse("1.1.0")) {
return "", fmt.Errorf("unsupported runc version: %q", version)
}
var u string
switch arch {
case architectures.ArchitectureAmd64:
u = fmt.Sprintf(runcVersionUrlAmd64, version)
case architectures.ArchitectureArm64:
u = fmt.Sprintf(runcVersionUrlArm64, version)
default:
return "", fmt.Errorf("unknown arch: %q", arch)
}
if u == "" {
return "", fmt.Errorf("unknown url for runc version: %s - %s", arch, version)
}
return u, nil
}View on GitHub (pinned to 4c8573c808)
Solutions
- Bump the runc version in the cluster spec to >= 1.1.0 (e.g. 1.1.12 or newer).
- Remove any explicit runc version override so the kOps default for your kOps version is used.
- If the old version is truly required, use a kOps release that still supports pre-1.1.0 runc.
Example fix
// before (ClusterSpec) runc: version: 1.0.2 // after runc: version: 1.1.12
Defensive patterns
Strategy: validation
Validate before calling
sv, err := semver.ParseTolerant(runcVersion)
if err != nil || sv.LT(semver.MustParse("1.1.0")) {
return fmt.Errorf("runc version %q must be >= 1.1.0", runcVersion)
} Try / catch
if err := findRuncVersionUrl(arch, version); err != nil {
if strings.Contains(err.Error(), "unsupported runc version") {
// fall back to a known-good default version
}
} Prevention
- Never pin runc below 1.1.0 in ClusterSpec
- Rely on kOps defaults rather than explicit runc overrides
- Track kOps release notes for supported runc versions when upgrading
When it happens
Trigger: Calling FindRuncAsset (directly or via nodeup/WellKnownAssets) with a runc version string that parses as semver but is < 1.1.0, e.g. "1.0.2" or "1.0.0-rc95".
Common situations: Pinning an old runc version in cluster spec (runc.version) for a legacy cluster; upgrading kOps while keeping an old containerd/runc pin; copying a version from an outdated cluster template.
Related errors
- error finding runc asset
- error trying to locate asset %q: %v
- unknown arch: %q
- unknown url for runc version: %s - %s
- building nodeConfig for instanceGroup: %w
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/11d1adecf368f83a.
Report an issue: GitHub.