
कंटेनरों के लिए अव्यवस्था परीक्षण, नेटवर्क अनुकरण और स्ट्रेस टेस्टिंग उपकरण
Docker, containerd और Podman के लिए कैओस परीक्षण उपकरण
त्वरित आरंभ · उपयोगकर्ता गाइड · नेटवर्क कैओस · परिनियोजन · योगदान
Pumba, Docker, containerd और Podman कंटेनरों के लिए एक कैओस परीक्षण और नेटवर्क इम्यूलेशन उपकरण है। Netflix Chaos Monkey से प्रेरित होकर, Pumba कैओस इंजीनियरिंग को कंटेनर स्तर पर लाता है — कंटेनरों को kill, stop, pause और remove करना, नेटवर्क विलंब और पैकेट हानि इंजेक्ट करना, या कंटेनर संसाधनों का स्ट्रेस-टेस्ट करना।
graph LR
A[Pumba CLI] -->|Docker API / containerd API / Podman compat API| B[Container Runtime]
B -->|List & Filter| C[Target Containers]
A -->|kill / stop / pause / rm| C
A -->|netem / iptables| D[Helper Container / Direct Exec]
D -->|Shares network namespace| C
D -->|Runs tc / iptables| E[Network Chaos]
| रनटाइम | सॉकेट (डिफ़ॉल्ट) | netem / iptables / stress | नोट्स |
|---|---|---|---|
| Docker | /var/run/docker.sock | रूट के रूप में या सॉकेट एक्सेस के साथ काम करता है | डिफ़ॉल्ट रनटाइम। |
| containerd | /run/containerd/containerd.sock | रूट की आवश्यकता होती है (साइडकार के लिए overlayfs माउंट) | नेमस्पेस: k8s.io (Kubernetes), moby (Docker-प्रबंधित), default (शुद्ध containerd)। |
| Podman | /run/podman/podman.sock (rootful) | rootful Podman की आवश्यकता होती है (अन्यथा तुरंत विफल) | Podman के Docker-compat API का उपयोग करता है; macOS पर pumba podman machine के अंदर चलता है (नीचे देखें)। |
Pumba Linux कंटेनरों को लक्षित करता है — हर कैओस क्रिया Linux प्रिमिटिव (netns, cgroups v2, iptables, tc qdiscs, कंटेनर रनटाइम सॉकेट) पर निर्भर करती है। जारी किए गए बाइनरी:
| ओएस | amd64 | arm64 | नोट्स |
|---|---|---|---|
| Linux | ✅ | ✅ | प्राथमिक लक्ष्य। Pumba को लक्षित कंटेनरों के समान कर्नेल पर चलाएँ। |
| macOS | ✅ | ✅ | केवल डेवलपर एर्गोनॉमिक्स। इसका उपयोग दूरस्थ Docker/Podman/containerd VM (जैसे Colima, podman machine) चलाने के लिए करें। |
| Windows | ❌ | ❌ | समर्थित नहीं है और न ही योजना है। नीचे देखें। |
Windows जानबूझकर बनाया नहीं गया है। कैओस प्रिमिटिव — Linux netns/cgroup लेखन, tc/iptables साइडकार इंजेक्शन, POSIX सिग्नल फ़ॉरवर्डिंग (SIGCONT/SIGSTOP/SIGUSR1/SIGUSR2 जो containerd रनटाइम द्वारा उपयोग किए जाते हैं) — का कोई Windows समकक्ष नहीं है। Docker Desktop के WSL2 बैकएंड के साथ भी Windows के लिए कोई सार्थक उपयोग-मामला नहीं है, इसलिए कोई Windows बाइनरी प्रकाशित नहीं की गई है। Windows समर्थन जोड़ने वाले PR स्वीकार नहीं किए जाएँगे; कृपया pumba को Linux (नेटिव, कंटेनर, या VM) पर चलाएँ।
| श्रेणी | कमांड्स | विवरण |
|---|---|---|
| कंटेनर कैओस | kill, stop, pause, rm, restart | कंटेनर जीवनचक्र को बाधित करें |
| निष्पादन | exec | कंटेनरों के अंदर कमांड चलाएँ |
| नेटवर्क विलंब | netem delay | ईग्रेस ट्रैफ़िक में विलंब जोड़ें |
| पैकेट हानि | netem loss, iptables loss | पैकेट ड्रॉप करें (ईग्रेस और इनग्रेस) |
| नेटवर्क प्रभाव | netem duplicate, corrupt, rate | पैकेटों की नकल करें, दूषित करें, या रेट-लिमिट करें |
| स्ट्रेस टेस्टिंग | stress | stress-ng के माध्यम से CPU, मेमोरी, I/O स्ट्रेस (चाइल्ड cgroup या समान-cgroup इंजेक्शन) |
| लक्ष्यीकरण | नाम, regex (re2:), लेबल, --random | लचीला कंटेनर चयन |
| शेड्यूलिंग | --interval | निश्चित अंतराल पर आवर्ती कैओस |
अपने प्लेटफ़ॉर्म के लिए नवीनतम रिलीज़ डाउनलोड करें, या Docker का उपयोग करें:
# Binary
curl -sL https://github.com/alexei-led/pumba/releases/latest/download/pumba_linux_amd64 -o pumba
chmod +x pumba
# Docker (recommended)
docker pull ghcr.io/alexei-led/pumba:latest
# Kill a random container matching "test" every 30 seconds
pumba --interval=30s --random kill "re2:^test"
# Add 3 seconds network delay to mydb for 5 minutes
pumba netem --duration 5m delay --time 3000 mydb
# Drop 10% of incoming packets to myapp for 2 minutes
pumba iptables --duration 2m loss --probability 0.1 myapp
# Stress CPU of mycontainer for 60 seconds
pumba stress --duration 60s --stressors="--cpu 4 --timeout 60s" mycontainer
# Kill a container by ID via containerd
pumba --runtime containerd --containerd-namespace k8s.io kill <container-id>
# Add network delay via containerd (requires tc in the container image)
pumba --runtime containerd --containerd-namespace moby \
netem --duration 5m delay --time 3000 <container-id>
Pumba, Podman के Docker-compat सॉकेट के माध्यम से संवाद करता है। --podman-socket वैकल्पिक है — यदि खाली है, तो pumba क्रम में $CONTAINER_HOST, $PODMAN_SOCK, podman machine inspect, /run/podman/podman.sock, और $XDG_RUNTIME_DIR/podman/podman.sock की जाँच करता है।