تخطَّ إلى المحتوى

☸️ شرح Kubernetes

فهم الـ StatefulSets في Kubernetes

الدرس 9 من 35· ⏱ 2 دقائق قراءة

الـ Deployment ممتاز للتطبيقات بلا حالة، لكن ماذا عن قواعد البيانات وأنظمة التخزين التي تحتاج هويّةً وتخزينًا ثابتين؟ هنا يأتي الـ StatefulSet. درس متقدّم يبني على الـ Deployment.

المشكلة: التطبيقات ذات الحالة

في الـ Deployment، الـ pods متطابقة وقابلة للاستبدال بلا تمييز — وهذا مثاليّ لخادم ويب. لكنّ قاعدة بيانات موزّعة تحتاج أن يعرف كل عضو هويّته (مَن الأساسي؟)، وأن يحتفظ ببياناته حتى لو أُعيد تشغيله. الـ pods المؤقّتة المجهولة لا تكفي هنا.

ما هو الـ StatefulSet؟

الـ StatefulSet كائن يدير التطبيقات ذات الحالة (Stateful) بثلاث ضمانات لا يقدّمها الـ Deployment:

  • هويّة شبكية ثابتة: يحصل كل pod على اسم ترتيبيّ مستقرّ (db-0، db-1، db-2) يبقى ثابتًا عبر إعادة التشغيل.
  • تخزين مستقرّ لكل نسخة: يرتبط كل pod بتخزينه الخاصّ الذي يتبعه، فلا تضيع بياناته عند إعادة الجدولة.
  • ترتيب في النشر والتوسيع: تُنشأ الـ pods وتُحذف بترتيب متوقّع (0 ثم 1 ثم 2)، وهو ما تحتاجه أنظمة كثيرة للتهيئة الصحيحة.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: db
spec:
  serviceName: db
  replicas: 3
  selector:
    matchLabels:
      app: db
  template:
    metadata:
      labels:
        app: db
    spec:
      containers:
        - name: db
          image: postgres:17

StatefulSet مقابل Deployment

DeploymentStatefulSet
الهويّةpods مجهولة متطابقةأسماء ترتيبية ثابتة
التخزينمشترك/عابر عادةًمخصّص ومستقرّ لكل نسخة
الترتيبلا يهمّمضمون
الاستخدامتطبيقات بلا حالةقواعد بيانات، أنظمة موزّعة

متى تستخدمه؟

استخدم StatefulSet فقط حين تحتاج هويّةً أو تخزينًا مستقرًّا (قواعد بيانات، طوابير، أنظمة تجميع). للتطبيقات بلا حالة، يبقى الـ Deployment أبسط وأنسب.

الخطوات التالية

يعتمد التخزين المستقرّ على الأحجام الدائمة (Persistent Volumes) — وهي الموضوع التالي. راجع الفرق مع الـ Deployment.

شرح فهم الـ StatefulSets في Kubernetes — Kubernetes بالعربي
فهم الـ StatefulSets في KubernetesKubernetes بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟