Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
chaoskube — تُنهي بشكل دوري Pods عشوائية في Kubernetes لاختبار كيفية تصرّف الأنظمة عند تعرّضها لفشل عشوائي في Pods، مع دعم مرشحات namespace وlabel وannotation والجدولة الزمنية لإجراء تجارب فوضى خاضعة للتحكم. | Kitploit
أدوات/GitHubGitHub/linki/chaoskube
هندسة الفوضىالأفضل في هندسة الفوضى #9
GitHublinki/chaoskube

chaoskube

تُنهي بشكل دوري Pods عشوائية في Kubernetes لاختبار كيفية تصرّف الأنظمة عند تعرّضها لفشل عشوائي في Pods، مع دعم مرشحات namespace وlabel وannotation والجدولة الزمنية لإجراء تجارب فوضى خاضعة للتحكم.

عرض المستودع
1.9k12768منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

chaoskube

GitHub release go-doc

chaoskube تقوم بشكل دوري بقتل pods عشوائية في عنقود Kubernetes الخاص بك.

chaoskube

لماذا

اختبر كيف يتصرف نظامك تحت حالات فشل pods عشوائية.

مثال

عند تشغيله، سيقتل pod في أي namespace كل 10 دقائق افتراضيًا.

$ chaoskube
INFO[0000] starting up              dryRun=true interval=10m0s version=v0.21.0
INFO[0000] connecting to cluster    master="https://kube.you.me" serverVersion=v1.10.5+coreos.0
INFO[0000] setting pod filter       annotations= labels= minimumAge=0s namespaces=
INFO[0000] setting quiet times      daysOfYear="[]" timesOfDay="[]" weekdays="[]"
INFO[0000] setting timezone         location=UTC name=UTC offset=0
INFO[0001] terminating pod          name=kube-dns-v20-6ikos namespace=kube-system
INFO[0601] terminating pod          name=nginx-701339712-u4fr3 namespace=chaoskube
INFO[1201] terminating pod          name=kube-proxy-gke-earthcoin-pool-3-5ee87f80-n72s namespace=kube-system
INFO[1802] terminating pod          name=nginx-701339712-bfh2y namespace=chaoskube
INFO[2402] terminating pod          name=heapster-v1.2.0-1107848163-bhtcw namespace=kube-system
INFO[3003] terminating pod          name=l7-default-backend-v1.0-o2hc9 namespace=kube-system
INFO[3603] terminating pod          name=heapster-v1.2.0-1107848163-jlfcd namespace=kube-system
INFO[4203] terminating pod          name=nginx-701339712-bfh2y namespace=chaoskube
INFO[4804] terminating pod          name=nginx-701339712-51nt8 namespace=chaoskube
...

chaoskube تسمح بتصفية pods المستهدفة حسب namespaces وlabels وannotations والعمر وكذلك استبعاد أيام معينة من الأسبوع، وأوقات معينة من اليوم، وأيام معينة من السنة من الفوضى (chaos).

كيفية الاستخدام

Helm

يمكنك تثبيت chaoskube باستخدام Helm. اتبع دليل Helm للبدء السريع ثم ثبّت مخطط (chart) chaoskube.

$ helm repo add chaoskube https://linki.github.io/chaoskube/
$ helm install chaoskube chaoskube/chaoskube --atomic --namespace=chaoskube --create-namespace

راجع chaoskube على kubeapps.com لتعلّم كيفية إعداده وللعثور على مخططات Helm مفيدة أخرى.

المانيفست الخام

راجع المانيفست المثال. تأكد من منح chaoskube الصلاحيات المناسبة باستخدام ClusterRole الموفّر.

الإعداد

افتراضيًا، يكون chaoskube ودودًا ولا يقتل أي شيء. عندما تتحقق من عنقودك المستهدف، يمكنك تعطيل وضع dry-run بتمرير العلامة --no-dry-run. يمكنك أيضًا تحديد فترة زمنية أكثر تكرارًا وعلامات أخرى مدعومة لنشرك.

إذا كنت تعمل داخل عنقود Kubernetes وتريد استهداف العنقود نفسه، فهذا كل ما تحتاج إليه.

إذا كنت تريد استهداف عنقود مختلف أو تشغيله محليًا، فحدد عنقودك عبر علامة --master أو وفّر kubeconfig صالحًا عبر علامة --kubeconfig. افتراضيًا، يستخدم مسار kubeconfig القياسي في مجلدك الرئيسي. وهذا يعني أنه سيتم استهداف أي سياق (context) حالي موجود فيه.

إذا أردت زيادة أو تقليل مقدار الفوضى، غيّر الفترة الزمنية بين عمليات القتل بعلامة --interval. بدلًا من ذلك، يمكنك زيادة عدد نسخ (replicas) نشر chaoskube.

تذكّر أن chaoskube يقتل افتراضيًا أي pod في جميع namespaces الخاصة بك، بما في ذلك pods النظام ونفسه.

chaoskube يوفّر نقطة نهاية HTTP بسيطة يمكن استخدامها للتحقق من أنه يعمل. يمكن استخدامها لـ فحوصات liveness و readiness الخاصة بـ Kubernetes. افتراضيًا، يستمع على المنفذ 8080. لتعطيل ذلك، مرّر --metrics-address="" إلى chaoskube.

تصفية الأهداف

ومع ذلك، يمكنك تقييد نطاق بحث chaoskube عبر توفير محددات label وannotation وnamespace، وأنماط تضمين/استبعاد لأسماء pods، بالإضافة إلى إعداد حد أدنى للعمر.

$ chaoskube --labels 'app=mate,chaos,stage!=production'
...
INFO[0000] setting pod filter       labels="app=mate,chaos,stage!=production"

يحدد هذا جميع pods التي تحتوي على label app بقيمة mate، وlabel chaos بأي قيمة، وlabel stage غير مضبوطة على production أو غير مضبوطة.

يمكنك أيضًا تصفية pods المستهدفة بمحدد namespace.

$ chaoskube --namespaces 'default,testing,staging'
...
INFO[0000] setting pod filter       namespaces="default,staging,testing"

سيؤدي هذا إلى تصفية pods في namespaces الثلاثة default وstaging وtesting.

يمكن تصفية namespaces أيضًا بمحدد label خاص بالـ namespaces.

$ chaoskube --namespace-labels='!integration'
...
INFO[0000] setting pod filter       namespaceLabels="!integration"

سيؤدي هذا إلى استبعاد جميع pods من namespaces التي تحمل label integration.

يمكنك تصفية pods المستهدفة بمحدد kind الخاص بـ OwnerReference.

$ chaoskube --kinds '!DaemonSet,!StatefulSet'
...
INFO[0000] setting pod filter       kinds="!DaemonSet,!StatefulSet"

سيؤدي هذا إلى استبعاد أي pods من نوع DaemonSet وStatefulSet.

$ chaoskube --kinds 'DaemonSet'
...
INFO[0000] setting pod filter       kinds="DaemonSet"

سيؤدي هذا إلى تضمين أي pods من نوع DaemonSet فقط.

يرجى ملاحظة: أي عامل تصفية include سيستبعد تلقائيًا جميع pods التي لا تحتوي على OwnerReference محدد.

يمكنك تصفية pods بالاسم:

$ chaoskube --included-pod-names 'foo|bar' --excluded-pod-names 'prod'
...
INFO[0000] setting pod filter       excludedPodNames=prod includedPodNames="foo|bar"

سيؤدي هذا إلى استهداف فقط pods التي يحتوي اسمها على 'foo' أو 'bar' ولا يحتوي لا على 'prod'.

يمكنك أيضًا استبعاد namespaces والجمع بين محددات label وannotation.

$ chaoskube \
    --labels 'app=mate,chaos,stage!=production' \
    --annotations '!scheduler.alpha.kubernetes.io/critical-pod' \
    --namespaces '!kube-system,!production'
...
INFO[0000] setting pod filter       annotations="!scheduler.alpha.kubernetes.io/critical-pod" labels="app=mate,chaos,stage!=production" namespaces="!kube-system,!production"

يحدّ هذا أيضًا من نطاق بحث محدد label أعلاه عبر استبعاد أي pods في namespaces kube-system وproduction وتجاهل جميع pods الموسومة بأنها حرجة (critical).

يمكن أيضًا استخدام محدد annotation لتشغيل chaoskube كإضافة (addon) للعنقود والسماح للـ pods بالاشتراك في أن يتم إنهاؤها كما تراه مناسبًا. على سبيل المثال، يمكنك تشغيل chaoskube هكذا:

$ chaoskube --annotations 'chaos.alpha.kubernetes.io/enabled=true' --debug
...
INFO[0000] setting pod filter       annotations="chaos.alpha.kubernetes.io/enabled=true"
DEBU[0000] found candidates         count=0
DEBU[0000] no victim found

ما لم تكن تستخدم هذا الـ annotation في مكان آخر، فسيتجاهل هذا جميع pods في البداية (يمكنك رؤية عدد المرشحين في وضع التصحيح). يمكنك بعد ذلك اختياريا إشراك نشرات (deployments) فردية في وضع الفوضى عبر إضافة تعليق توضيحي (annotation) إلى pods الخاصة بها بالقيمة chaos.alpha.kubernetes.io/enabled=true.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    metadata:
      annotations:
        chaos.alpha.kubernetes.io/enabled: "true"
    spec:
      ...

يمكنك استبعاد pods التي بدأت مؤخرًا باستخدام علامة --minimum-age.

$ chaoskube --minimum-age 6h
...
INFO[0000] setting pod filter       minimumAge=6h0m0s

الحد من الفوضى

يمكنك تحديد الوقت الذي تُدخَل فيه الفوضى حسب أيام الأسبوع، أو فترات زمنية من اليوم، أو أيام من السنة، أو كل ذلك معًا.

تنزيل الأداة