Kubernetes يقدّم عدّة أنواع من الأحمال، واختيار الخطأ منها مصدر شائع للإرباك. هذه المقارنة توضّح متى تستخدم كلًّا منها. تبني على دروس Deployment وStatefulSet وDaemonSet.
السؤال الجوهري
يختلف الاختيار بحسب طبيعة تطبيقك: هل هو بلا حالة؟ هل يحتاج هويّة ثابتة؟ هل يجب أن يعمل على كل عقدة؟
جدول المقارنة
| Deployment | StatefulSet | DaemonSet | |
|---|---|---|---|
| الاستخدام | تطبيقات بلا حالة | تطبيقات ذات حالة | وكلاء على مستوى العقدة |
| هويّة الـ pods | مجهولة متطابقة | أسماء ترتيبية ثابتة | واحدة لكل عقدة |
| التخزين | عابر/مشترك | مستقرّ لكل نسخة | حسب الحاجة |
| عدد النسخ | تحدّده أنت | تحدّده أنت (بترتيب) | واحدة لكل عقدة تلقائيًا |
| أمثلة | خادم ويب، API | قاعدة بيانات، Kafka | جامع سجلّات، مراقبة |
كيف تختار؟
- Deployment: الخيار الافتراضي لمعظم التطبيقات. اختره ما لم يكن لديك سبب محدّد لغيره.
- StatefulSet: حين يحتاج تطبيقك هويّةً شبكية ثابتة أو تخزينًا مستقرًّا لكل نسخة (قواعد البيانات الموزّعة).
- DaemonSet: حين يجب أن تعمل نسخة على كل عقدة (وكلاء البنية التحتية للسجلّات والمراقبة والشبكة).
قاعدة سريعة
ابدأ دائمًا بالسؤال: هل تطبيقي بلا حالة؟ → Deployment. هل يحتاج حالةً وهويّة؟ → StatefulSet. هل هو وكيل يجب أن يغطّي كل عقدة؟ → DaemonSet.
الخطوات التالية
راجع كل نوع بعمق: Deployment، StatefulSet، DaemonSet.