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 — useful for security hygiene. 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 — replacing 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 — assignment is caller-driven (e.g. runner pool, custom controller).