انتقل إلى المحتوى الرئيسي

الفصل 3.4 - دورة حياة الـ Pods

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم مراحل الـ Pod
  • تحديد حالات الـ Pod
  • فهم الشروط
  • إدارة إعادة التشغيل

مراحل الـ Pod​

يمر الـ Pod بعدة مراحل خلال دورة حياته:


حالات مفصلة​

1. Pending​

تم قبول الـ Pod من قبل Kubernetes ولكن لم يتم إنشاء الحاويات بعد.

الأسباب المحتملة:

  • الصورة قيد التحميل
  • لا توجد عقدة متاحة
  • موارد غير كافية

2. Running​

تم ربط الـ Pod بعقدة وتم إنشاء جميع الحاويات. على الأقل حاوية واحدة قيد التشغيل.

3. Succeeded​

انتهت جميع حاويات الـ Pod بنجاح ولن يتم إعادة تشغيلها.

4. Failed​

انتهت حاوية واحدة على الأقل بفشل.

5. Unknown​

لا يمكن الحصول على حالة الـ Pod (مشكلة في الاتصال بالعقدة).


شروط الـ Pod​

توفر الشروط مزيدًا من التفاصيل حول الحالة:

conditions:
- type: PodScheduled
status: "True"
reason: ""
- type: Initialized
status: "True"
- type: ContainersReady
status: "True"
- type: Ready
status: "True"

أنواع الشروط:

  • PodScheduled: تم تعيين الـ Pod لعقدة
  • Initialized: انتهت جميع حاويات التهيئة
  • ContainersReady: جميع الحاويات جاهزة
  • Ready: يمكن للـ Pod تقديم حركة المرور

سياسة إعادة التشغيل​

تحدد متى يتم إعادة تشغيل الحاويات:

spec:
restartPolicy: Always # إعادة التشغيل دائمًا
# restartPolicy: OnFailure # إعادة التشغيل فقط في حالة الفشل
# restartPolicy: Never # عدم إعادة التشغيل أبدًا

حاويات التهيئة​

تعمل حاويات التهيئة قبل الحاويات الرئيسية:

spec:
initContainers:
- name: init-db
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do sleep 2; done']
containers:
- name: app
image: my-app:1.0

حالات الاستخدام:

  • انتظار جاهزية الاعتماديات
  • تهيئة قاعدة البيانات
  • تحميل ملفات التكوين

أوامر مفيدة​

# عرض حالة الـ Pod
kubectl get pod my-pod

# تفاصيل كاملة مع الشروط
kubectl describe pod my-pod

# عرض الأحداث
kubectl get events --field-selector involvedObject.name=my-pod

# سجلات حاوية تعطلت
kubectl logs my-pod --previous

ملخص​

في هذا الفصل، تعلمت:

المراحل: Pending → Running → Succeeded/Failed
الشروط: PodScheduled, Initialized, ContainersReady, Ready
سياسة إعادة التشغيل: Always, OnFailure, Never
حاويات التهيئة: تعمل قبل الحاويات الرئيسية
التشخيص: kubectl describe, get events, logs --previous


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

الآن بعد أن تفهم دورة الحياة:

الفصل 3.5: ReplicaSets - إدارة النسخ
المختبر 3.1: إنشاء وإدارة الـ Pods


تم إنشاء الفصل في: ديسمبر 2024