abiosoft/colima · error
update not supported for the %s runtime
Error message
update not supported for the %s runtime
What it means
kubernetesRuntime.Update is intentionally not implemented: it unconditionally returns (false, fmt.Errorf("update not supported for the %s runtime", Name)) where Name is the k3s-based runtime. Colima's update flow only supports updating the container runtimes (docker/containerd); the embedded Kubernetes cluster must be recreated rather than upgraded in place.
Source
Thrown at environment/container/kubernetes/kubernetes.go:277
// cleanup is manual
a.Add(c.deleteAllContainers)
c.teardownKubeconfig(a)
return a.Exec()
}
func (c kubernetesRuntime) Dependencies() []string {
return []string{"kubectl"}
}
func (c kubernetesRuntime) Version(context.Context) string {
version, _ := c.host.RunOutput("kubectl", "--context", config.CurrentProfile().ID, "version", "--short")
return version
}
func (c *kubernetesRuntime) Update(ctx context.Context) (bool, error) {
return false, fmt.Errorf("update not supported for the %s runtime", Name)
}
View on GitHub (pinned to c3a5f9184d)
Solutions
- Update the VM and container runtime only ('colima update') and recreate the cluster to change Kubernetes version: 'colima delete profile --data kubernetes' (or delete the profile with --data) then 'colima start --kubernetes --kubernetes-version <new>'.
- Pin the version explicitly on start: 'colima start --kubernetes --kubernetes-version v1.31.2+k3s1' after recreating.
- If you hit this programmatically, check runtime identity first and skip Update for the kubernetes runtime (see defense strategy).
- Track upstream colima: in-place k3s upgrades are a known gap; watch release notes for 'colima update' kubernetes support.
Example fix
// before
updated, err := runtime.Update(ctx) // errors for kubernetes runtime
// after
if runtime.Name() == kubernetes.Name {
log.Println("kubernetes runtime must be recreated to update; skipping")
} else {
updated, err := runtime.Update(ctx)
} Defensive patterns
Strategy: type-guard
Validate before calling
// skip the call for runtimes that do not support update
if runtime.Name() == kubernetes.Name { // "kubernetes"
return errors.New("kubernetes runtime cannot be updated in place; recreate the cluster")
} Type guard
func isUpdatableRuntime(name string) bool {
switch name {
case docker.Name, containerd.Name:
return true
default: // kubernetes and none
return false
}
} Try / catch
updated, err := runtime.Update(ctx)
if err != nil && strings.Contains(err.Error(), "update not supported") {
updated, err = false, nil // expected for the kubernetes runtime
} Prevention
- Treat 'colima update' as runtime-only; script kubernetes upgrades as delete+recreate.
- Pin --kubernetes-version explicitly in start scripts for reproducibility.
- Check runtime identity before calling Update in automation code.
When it happens
Trigger: Any code path or CLI flow that calls Update() on the kubernetes runtime — most visibly 'colima update' on a profile that has Kubernetes enabled, or an external consumer of the environment package calling runtime.Update(ctx).
Common situations: Users run 'colima update' expecting both docker and k3s to be upgraded; scripts automating 'colima update' after a brew upgrade; CI pipelines trying to keep the cluster current.
Related errors
- error loading oci images: %w
- no IP address assigned to network interface
- error fetching kubeconfig on guest: %w
- error persisting kubernetes settings: %w
- runtime cannot be updated, %s is not running
AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15).
Data as JSON: /api/errors/9554297237cf00cf.
Report an issue: GitHub.