الفصل 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