{"record":{"id":"11d1adecf368f83a","repo":"kubernetes/kops","slug":"unsupported-runc-version-q","errorCode":null,"errorMessage":"unsupported runc version: %q","messagePattern":"unsupported runc version: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/nodemodel/wellknownassets/runc.go","lineNumber":81,"sourceCode":"\t\t\treturn nil, fmt.Errorf(\"unable to find runc version\")\n\t\t}\n\t\tu, err := findRuncVersionUrl(arch, version)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcanonicalURL = u\n\t}\n\n\treturn buildFileAsset(assetBuilder, canonicalURL, knownHash)\n}\n\nfunc findRuncVersionUrl(arch architectures.Architecture, version string) (string, error) {\n\tsv, err := semver.ParseTolerant(version)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to parse version string: %q\", version)\n\t}\n\tif sv.LT(semver.MustParse(\"1.1.0\")) {\n\t\treturn \"\", fmt.Errorf(\"unsupported runc version: %q\", version)\n\t}\n\n\tvar u string\n\tswitch arch {\n\tcase architectures.ArchitectureAmd64:\n\t\tu = fmt.Sprintf(runcVersionUrlAmd64, version)\n\tcase architectures.ArchitectureArm64:\n\t\tu = fmt.Sprintf(runcVersionUrlArm64, version)\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unknown arch: %q\", arch)\n\t}\n\n\tif u == \"\" {\n\t\treturn \"\", fmt.Errorf(\"unknown url for runc version: %s - %s\", arch, version)\n\t}\n\n\treturn u, nil\n}","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/pkg/nodemodel/wellknownassets/runc.go#L63-L99","documentation":"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.","triggerScenarios":"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\".","commonSituations":"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.","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."],"exampleFix":"// before (ClusterSpec)\nrunc:\n  version: 1.0.2\n// after\nrunc:\n  version: 1.1.12","handlingStrategy":"validation","validationCode":"sv, err := semver.ParseTolerant(runcVersion)\nif err != nil || sv.LT(semver.MustParse(\"1.1.0\")) {\n    return fmt.Errorf(\"runc version %q must be >= 1.1.0\", runcVersion)\n}","typeGuard":null,"tryCatchPattern":"if err := findRuncVersionUrl(arch, version); err != nil {\n    if strings.Contains(err.Error(), \"unsupported runc version\") {\n        // fall back to a known-good default version\n    }\n}","preventionTips":["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"],"tags":["runc","version-support","nodeup","asset-download"],"backgroundTag":"unsupported-version","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}