abiosoft/colima · error

update not supported for the

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.

Solutions

  1. 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>'.
  2. Pin the version explicitly on start: 'colima start --kubernetes --kubernetes-version v1.31.2+k3s1' after recreating.
  3. If you hit this programmatically, check runtime identity first and skip Update for the kubernetes runtime (see defense strategy).
  4. 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

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


AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15). Data as JSON: /api/errors/9554297237cf00cf. Report an issue: GitHub.

Appendix: 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)