kubernetes/kops · error

unable to parse version string: %q

Error message

unable to parse version string: %q

What it means

Fires in findRuncVersionUrl when semver.ParseTolerant fails on the containerd.runc.version string from the cluster spec, meaning the configured version is not a parseable semantic version (e.g. a branch name or malformed tag) and no release download URL can be built.

Source

Thrown at pkg/nodemodel/wellknownassets/runc.go:78

	if canonicalURL == "" {
		version := fi.ValueOf(runc.Version)
		if version == "" {
			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)
	}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Set containerd.runc.version to a valid semver string such as 1.1.4
  2. Strip non-semver suffixes like v-dirty or branch names from the version
  3. Alternatively pin the download directly via containerd.runc.packages URLs to bypass version parsing
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/nodemodel/wellknownassets/runc.go:78 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


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