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
ImpVMSnapshotwith abaseSnapshotelected (see Snapshot) - An
ImpVMTemplatefor 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: 1hexpireAfter recycles pool members after the given duration — useful for security hygiene. Minimum value: 60s.
Lifecycle
- Pool controller reads
spec.snapshotRef, waits for abaseSnapshotto be elected. - Once elected, controller creates
sizeImpVMobjects booting from that snapshot. - Pool maintains
sizeready 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-poolOutput shows Ready count vs target Size.
Notes
- Pool stays idle until a base snapshot is elected.
- Changing
spec.snapshotReftriggers 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).
