Releases: alexei-led/pumba
Release 1.0.4
What's Changed
- fix: support --inject-cgroup and sidecar stress modes on containerd by @alexei-led in #304
Full Changelog: 1.0.3...1.0.4
Release 1.0.3
Full Changelog: 1.0.2...1.0.3
Release 1.0.2
What's Changed
Advanced Go Integration Test Suite
Added a comprehensive Go-based integration test suite (tests/integration/) covering scenarios that are difficult or impossible to test with shell scripts.
Test coverage includes:
- Crash recovery (SIGKILL, SIGTERM, target death during netem/pause/iptables/stress)
- Network verification (netem delay/loss/corrupt/duplicate/rate, iptables packet loss)
- Concurrent operations (multiple containers, mixed netem + iptables)
- Sidecar lifecycle (creation, cleanup, skip-label, leak detection)
- Container lifecycle (kill/stop/rm/restart/pause with labels and regex)
- Interval mode, stress-ng, and containerd runtime scenarios
Fix: Real cgroups v2 OOM Kill Test
The OOM integration test (TestCrashRecovery_TargetOOMDuringNetem) previously faked OOM by sending SIGKILL — making it identical to the target-death test. This release replaces it with a deterministic cgroups v2 OOM kill:
- Sets
memory.oom.group=1on the container's cgroup so the kernel kills all processes (including PID 1) atomically - Triggers real memory pressure via
dd if=/dev/zero of=/dev/shm/fill(backed by tmpfs, counts against cgroup memory limit) - Asserts
State.OOMKilled=trueto prove genuine OOM — not simulated SIGKILL - Skips gracefully on environments without cgroups v2
This is the only reliable approach — alternatives (exec dd, tail /dev/zero, shell variable growth) are nondeterministic due to kernel ENOMEM-vs-OOM-kill behavior.
Full Changelog: 1.0.1...1.0.2
Release 1.0.1
What's Changed
- fix(ci): run integration tests natively on runner VM by @alexei-led in #300
Full Changelog: 1.0.0...1.0.1
Release 1.0.0
What's Changed
- refactor: multi-runtime abstraction (Phase 2) by @alexei-led in #295
- refactor: Phase 2 cleanup — filter extraction, panic fixes, tests by @alexei-led in #296
- feat: narrow chaos command interfaces to minimal required methods by @alexei-led in #297
- ci: replace QEMU with native ARM64 runners by @alexei-led in #299
- feat: containerd runtime support (Runtime Abstraction) by @alexei-led in #298
Full Changelog: 0.12.3...1.0.0
v0.12.3
Bug Fixes
- fix: support comma-separated labels in
--labelflag (#294, closes #171)- Both
--label k1=v1 --label k2=v2and--label k1=v1,k2=v2now work (AND logic)
- Both
- fix: use
TrimPrefixinstead ofTrimfor re2 pattern extraction (#293)
Full Changelog: 0.12.2...0.12.3
Release 0.12.2
What's Changed
- fix: pumba rm now finds stopped containers by @alexei-led in #289
- fix: require container arguments for kill, stop, and rm by @alexei-led in #290
Full Changelog: 0.12.1...0.12.2
0.12.1: Native Cgroups V2 Support
Pumba v0.12.1 Release Notes
This release brings native cgroups v2 support for the stress command, eliminating the need for legacy dockhack scripts and privileged execution modes. Pumba now works seamlessly on modern Linux distros and Kubernetes clusters with cgroups v2 enabled.
Highlights
- Native Cgroups V2 Support: The
stresscommand now works out-of-the-box on cgroups v2 systems. - Dual-Mode Injection:
- Default Mode: Uses Docker's
--cgroup-parentto nest the stress sidecar under the target container (child cgroup). Safe and isolated. - Inject-Cgroup Mode: New
--inject-cgroupflag placesstress-ngprocesses directly into the target container's cgroup (same cgroup). Provides realistic resource contention and shared OOM scope.
- Default Mode: Uses Docker's
- Kubernetes-Aware: Automatically resolves the correct cgroup path on Kubernetes nodes (e.g.,
/kubepods/burstable/pod<uid>/<containerID>) usingContainerInspect. - Security Improvements:
- Removed requirement for
--privilegedmode. - Removed requirement for
SYS_ADMINcapability. - Removed requirement for AppArmor
unconfined.
- Removed requirement for
- New
cg-injectBinary: A minimal, pure-Go binary handles cgroup placement, replacing the old bash/dockhack scripts. - Bug Fixes:
- Fixed a potential goroutine leak in stress container error handling.
- Improved error reporting during container startup.
Updating
# Docker
docker pull ghcr.io/alexei-led/pumba:0.12.1
# Kubernetes
kubectl set image daemonset/pumba pumba=ghcr.io/alexei-led/pumba:0.12.1Full Changelog
- feat: cgroups v2 support for stress command with dual-mode injection (@ralphex-bot)
- fix: goroutine leak in stress container error path (@ralphex-bot)
- docs: comprehensive documentation updates for stress testing (@ralphex-bot)
Release 0.11.10
What's Changed
- ci: migrate to native multi-arch builds and GHCR by @alexei-led in #287
Full Changelog: 0.11.9...0.11.10
Release 0.11.9
Automated release for 0.11.9
What's Changed
- docs: clarify --stressors flag usage syntax by @alexei-led in #285
- fix: graceful handling when container removed during netem/iptables by @alexei-led in #286
Full Changelog: 0.11.8...0.11.9