Skip to content

Warm Pool

ImpWarmPool maintains a pool of pre-booted VMs ready for instant assignment. Pool members boot from an elected snapshot, so startup latency is near-zero.

Prerequisites

  • An ImpVMSnapshot with a baseSnapshot elected (see Snapshot)
  • An ImpVMTemplate for pool member configuration

Setup

yaml
apiVersion: imp.dev/v1alpha1
kind: ImpWarmPool
metadata:
  name: fast-pool
  namespace: default
spec:
  snapshotRef: my-snap
  templateName: standard-runner
  size: 3
  expireAfter: 1h

expireAfter recycles pool members after the given duration. Use it to limit the lifetime of pooled VMs. Minimum value: 60s.

Lifecycle

  1. Pool controller reads spec.snapshotRef, waits for a baseSnapshot to be elected.
  2. Once elected, controller creates size ImpVM objects booting from that snapshot.
  3. Pool maintains size ready members and replaces any that exit or expire.

Monitor

bash
kubectl get impwarmpool fast-pool -n default
kubectl get impvm -n default -l imp.dev/pool=fast-pool

Output shows Ready count vs target Size.

Notes

  • Pool stays idle until a base snapshot is elected.
  • Changing spec.snapshotRef triggers a pool drain and reboot from the new snapshot.
  • Pool members are not assigned to workloads automatically. The caller assigns them, for example through a runner pool or custom controller.