كيف يعرف Kubernetes أنّ حاويتك حيّة فعلًا وجاهزة لاستقبال الطلبات؟ عبر فحوص الصحّة (Probes). درس متوسّط يبني على الـ Pods.
المشكلة: «يعمل» لا يعني «سليم»
قد تكون العمليّة داخل الحاوية قائمة، لكنّها معلّقة أو غير جاهزة (تحمّل بياناتها بعد). لو أرسل Kubernetes الترافيك إليها في هذه الحالة، لفشلت الطلبات. نحتاج طريقةً ليتحقّق Kubernetes من الحالة الحقيقية.
فحص الحياة (Liveness Probe)
يجيب عن سؤال: هل الحاوية حيّة أم معلّقة؟ إن فشل فحص الحياة، يستنتج Kubernetes أنّ الحاوية عالقة فيعيد تشغيلها تلقائيًا. هذا يعالج التطبيقات التي «تتجمّد» دون أن تنهار.
فحص الجاهزية (Readiness Probe)
يجيب عن سؤال: هل الحاوية جاهزة لاستقبال الترافيك؟ إن فشل فحص الجاهزية، لا يعيد Kubernetes تشغيل الحاوية، بل يوقف إرسال الترافيك إليها مؤقّتًا (يزيلها من نقاط نهاية الخدمة) حتى تصبح جاهزة. مفيد أثناء الإقلاع أو التحميل المؤقّت.
apiVersion: v1
kind: Pod
metadata:
name: web
spec:
containers:
- name: web
image: nginx:1.27
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 80
الفرق الجوهري
| Liveness | Readiness | |
|---|---|---|
| السؤال | هل هي حيّة؟ | هل هي جاهزة؟ |
| عند الفشل | إعادة تشغيل الحاوية | إيقاف الترافيك مؤقّتًا |
| يعالج | التطبيقات المعلّقة | فترات عدم الجاهزية المؤقّتة |
استخدامهما معًا يجعل نشرك أكثر صمودًا: لا ترافيك لحاوية غير جاهزة، وإعادة تشغيل تلقائية لحاوية عالقة.
الخطوات التالية
الفحوص أساس التحديثات دون توقّف في الـ Deployment، وأساس التوسيع الآمن في HPA. راجع الـ Pods.