kubernetes/kops · error
unknown arch for crictl binaries asset: %s
Error message
unknown arch for crictl binaries asset: %s
What it means
FindCrictlAsset has no download URL for the requested CPU architecture: only amd64 and arm64 are enumerated, so the switch falls through to this guard. The input at fault is the architecture derived from the instance group/node image.
Source
Thrown at pkg/nodemodel/wellknownassets/crictl.go:41
"k8s.io/kops/pkg/apis/kops/model"
"k8s.io/kops/pkg/assets"
"k8s.io/kops/util/pkg/architectures"
)
const (
crictlAssetUrlAmd64 = "https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.29.0/crictl-v1.29.0-linux-amd64.tar.gz"
crictlAssetUrlArm64 = "https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.29.0/crictl-v1.29.0-linux-arm64.tar.gz"
)
func FindCrictlAsset(ig model.InstanceGroup, assetBuilder *assets.AssetBuilder, arch architectures.Architecture) (*assets.FileAsset, error) {
var assetURL string
switch arch {
case architectures.ArchitectureAmd64:
assetURL = crictlAssetUrlAmd64
case architectures.ArchitectureArm64:
assetURL = crictlAssetUrlArm64
default:
return nil, fmt.Errorf("unknown arch for crictl binaries asset: %s", arch)
}
u, err := url.Parse(assetURL)
if err != nil {
return nil, fmt.Errorf("unable to parse crictl binaries asset URL %q: %v", assetURL, err)
}
asset, err := assetBuilder.RemapFile(u, nil)
if err != nil {
return nil, fmt.Errorf("unable to remap crictl binaries asset: %v", err)
}
return asset, err
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Use an instance group with amd64 or arm64 architecture
- Add a crictl asset URL for the new architecture in wellknownassets
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at pkg/nodemodel/wellknownassets/crictl.go:41 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/8e130d63cf11399c.
Report an issue: GitHub.