kubernetes/kops · error

unable to find runc config

Error message

unable to find runc config

What it means

Fires when the cluster spec's containerd block exists but containerd.Runc is nil, so FindRuncAsset cannot determine which runc binary to resolve into file assets during node model building. It is a configuration guard: the cluster manifest omits the containerd.runc section entirely rather than specifying a version or package URLs.

Source

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

	"k8s.io/kops/pkg/apis/kops/model"
	"k8s.io/kops/pkg/assets"
	"k8s.io/kops/upup/pkg/fi"
	"k8s.io/kops/util/pkg/architectures"
)

const (
	runcVersionUrlAmd64 = "https://github.com/opencontainers/runc/releases/download/v%s/runc.amd64"
	runcVersionUrlArm64 = "https://github.com/opencontainers/runc/releases/download/v%s/runc.arm64"
)

func FindRuncAsset(ig model.InstanceGroup, assetBuilder *assets.AssetBuilder, arch architectures.Architecture) (*assets.FileAsset, error) {
	containerd := ig.RawClusterSpec().Containerd
	if containerd == nil {
		return nil, fmt.Errorf("unable to find containerd config")
	}

	if containerd.Runc == nil {
		return nil, fmt.Errorf("unable to find runc config")
	}
	runc := containerd.Runc

	canonicalURL := ""
	knownHash := ""

	if runc.Packages != nil {
		if arch == architectures.ArchitectureAmd64 && runc.Packages.UrlAmd64 != nil && runc.Packages.HashAmd64 != nil {
			canonicalURL = fi.ValueOf(runc.Packages.UrlAmd64)
			knownHash = fi.ValueOf(runc.Packages.HashAmd64)
		}
		if arch == architectures.ArchitectureArm64 && runc.Packages.UrlArm64 != nil && runc.Packages.HashArm64 != nil {
			canonicalURL = fi.ValueOf(runc.Packages.UrlArm64)
			knownHash = fi.ValueOf(runc.Packages.HashArm64)
		}
	}

	if canonicalURL == "" {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Add a containerd.runc section to the cluster spec (e.g. containerd.runc.version) so the runc asset can be resolved
  2. Set containerd.runc.packages.urlAmd64/urlArm64 and matching hashes for pinned downloads
  3. Upgrade or regenerate the cluster manifest from a kOps version/template that includes the runc config
Defensive patterns

Strategy: validation

When it happens

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

Common situations: See trigger scenarios.


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