0Pricing
Kubernetes Basics · درس

فحوصات الصحة: فحوصات الحيوية والجاهزية

اضبط فحوصات الحيوية والجاهزية للتأكد من سلامة تطبيقاتك واستعدادها لمعالجة حركة المرور

فحوصات الصحة: فحوصات الحيوية والجاهزية درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

الحفاظ على صحة التطبيقات

كيف يعرف Kubernetes ما إذا كان تطبيقكم يعمل فعلًا؟ لا يكفي أن تكون الحاوية قيد التشغيل فحسب؛ بل يجب أن تكون سليمة وجاهزة لخدمة حركة المرور.

يستخدم Kubernetes فحوصات خاصة تُسمّى probes لمراقبة تطبيقاتكم. وتساعد هذه الفحوصات في ضمان حصول مستخدميكم دائمًا على خدمة موثوقة.

ما هي فحوصات الحيوية؟

تتحقق Liveness Probe من أن تطبيقكم لا يزال حيًا ومستجيبًا. فإذا فشلت فحوصات الحيوية، يفترض Kubernetes أن الحاوية غير سليمة، ثم يعيد تشغيلها.

فكّروا فيها مثل جهاز مراقبة نبض القلب: إذا توقف القلب، يلزم إعادة التشغيل! ويساعد ذلك في التعافي من حالات الجمود أو أعطال التطبيق.

أساسيات فحوصات الحيوية

يمكنكم إعداد فحوصات الحيوية باستخدام أساليب مختلفة:

  • HTTP GET: يرسل طلب HTTP إلى مسار محدد.
  • TCP Socket: يتحقق من إمكانية فتح اتصال TCP بمنفذ.
  • Exec Command: يشغّل أمرًا داخل الحاوية.

يُعدّ HTTP GET شائعًا جدًا لتطبيقات الويب. إليكم مقتطفًا يوضّح كيفية تعريفه في YAML الخاص بـ Pod:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

فحص الحيوية قيد العمل

سيحاكي تطبيق Python Flask هذا حالة غير سليمة، إذ سيتعطل بعد طلبين إلى /healthz. وسيتعرف فحص Kubernetes على ذلك ويعيد تشغيل الحاوية.

احفظوا هذا الملف أولًا باسم app.py:

from flask import Flask, Response
import os
import time

app = Flask(__name__)
request_count = 0

@app.route('/healthz')
def health_check():
    global request_count
    request_count += 1
    if request_count > 2:
        print("Liveness probe failing! Exiting...")
        os._exit(1) # Simulate a crash
    print(f"Liveness probe successful (count: {request_count})")
    return Response("OK", status=200)

@app.route('/')
def home():
    return "Hello from the Liveness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

تشغيل فحص الحيوية

والآن، لنرَ كيف يستخدم Kubernetes فحص الحيوية. إذا نشرتم هذا باستخدام YAML التالي، فسيعيد Kubernetes تشغيل Pod عند فشل فحص الصحة:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-demo
spec:
  containers:
  - name: liveness-container
    image: python:3.9-slim-buster
    command: ["python", "app.py"]
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 1
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: liveness-app-config

# (You'd need a ConfigMap for app.py, omitted for brevity)

عند النشر، وبعد نجاح فحصين، سيفشل الفحص الثالث، وسيعيد Kubernetes تشغيل الحاوية.

ما هي فحوصات الجاهزية؟

تتحقق Readiness Probe من أن تطبيقكم جاهز لخدمة حركة المرور. فإذا فشل فحص الجاهزية، سيتوقف Kubernetes عن إرسال حركة المرور إلى Pod هذا، لكنه لن يعيد تشغيله.

ويُعدّ ذلك بالغ الأهمية أثناء بدء التشغيل (مثل انتظار اتصال بقاعدة بيانات) أو عمليات الإيقاف السلس. فكّروا في السؤال التالي: «هل المتجر مفتوح للعملاء؟»

أساسيات فحوصات الجاهزية

تُعدّ فحوصات الجاهزية بطريقة مشابهة لفحوصات الحيوية، باستخدام HTTP GET أو TCP Socket أو أوامر Exec. ويكمن الفرق الأساسي في تأثيرها:

  • Liveness: يعيد تشغيل الحاوية عند الفشل.
  • Readiness: يزيل Pod من نقاط نهاية الخدمة عند الفشل (من دون حركة مرور).

إليكم مقتطفًا لفحص جاهزية:

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

فحص الجاهزية قيد العمل

يحاكي تطبيق Flask هذا تطبيقًا يحتاج إلى بعض الوقت للتهيئة (مثل الاتصال بقاعدة بيانات). ولن يبلّغ عن جاهزيته إلا بعد مرور 5 ثوانٍ.

احفظوا هذا الملف باسم ready_app.py:

from flask import Flask, Response
import time

app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5

@app.route('/ready')
def readiness_check():
    if time.time() - start_time > READY_AFTER_SECONDS:
        print("Readiness probe successful: App is ready!")
        return Response("READY", status=200)
    else:
        print("Readiness probe failing: App not ready yet...")
        return Response("NOT READY", status=503)

@app.route('/')
def home():
    return "Hello from the Readiness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

تشغيل مسبار الجاهزية

عند النشر باستخدام ملف YAML هذا، لن تتلقى الـ Pod أي حركة مرور خلال أول initialDelaySeconds بالإضافة إلى الوقت اللازم لعودة /ready بالاستجابة 200 OK.

apiVersion: v1
kind: Pod
metadata:
  name: readiness-demo
spec:
  containers:
  - name: readiness-container
    image: python:3.9-slim-buster
    command: ["python", "ready_app.py"]
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 3
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: readiness-app-config

# (You'd need a ConfigMap for ready_app.py, omitted for brevity)

يضمن ذلك توجيه حركة المرور إلى النسخ الجاهزة فعليًا فقط.

مسبار الحيوية مقابل مسبار الجاهزية

من المهم استخدام كلا المسبارين بشكل صحيح:

  • مسبار الحيوية: يُستخدم لاكتشاف ما إذا كان تطبيقك قد تعطل أو أصبح في حالة يتعذر استردادها. عند فشله، تقوم Kubernetes بإعادة تشغيل الحاوية.
  • مسبار الجاهزية: يُستخدم لاكتشاف ما إذا كان تطبيقك جاهزًا لقبول الطلبات ومعالجتها. عند فشله، تتوقف Kubernetes عن إرسال حركة المرور إلى الـ Pod.

يؤدي كل منهما غرضًا مختلفًا، لكنهما متكاملان للحفاظ على متانة تطبيقاتك.

تحقق من فهمك

أي العبارات التالية حول مسباري الحيوية والجاهزية صحيحة؟

المسابير: أهم النقاط

تعلمت في هذا الدرس عن مسباري الحيوية والجاهزية في Kubernetes. وتُعد فحوصات الصحة هذه ضرورية للحفاظ على موثوقية تطبيقاتك وتوافرها:

  • مسبارات الحيوية تكتشف الحاويات غير السليمة وتؤدي إلى إعادة تشغيلها.
  • مسبارات الجاهزية تتحكم في الوقت الذي يصبح فيه الـ Pod جاهزًا لاستقبال حركة مرور الشبكة.

يضمن استخدامهما بفعالية بقاء تطبيقاتك مستجيبة وقادرة على الصمود أمام المشكلات.

الأسئلة الشائعة

هل درس «فحوصات الصحة: فحوصات الحيوية والجاهزية» مجاني؟

نعم — نص درس «فحوصات الصحة: فحوصات الحيوية والجاهزية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

ماذا ستتعلم في «فحوصات الصحة: فحوصات الحيوية والجاهزية»؟

اضبط فحوصات الحيوية والجاهزية للتأكد من سلامة تطبيقاتك واستعدادها لمعالجة حركة المرور تتمرن على Kubernetes Basics مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kubernetes Basics؟

لا تُشترط خبرة سابقة. Kubernetes Basics على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «فحوصات الصحة: فحوصات الحيوية والجاهزية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kubernetes Basics هذا؟

نعم. كل درس في Kubernetes Basics يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التسجيل باستخدام kubectl logs
  2. المقاييس باستخدام Prometheus وGrafana
  3. فحوصات الصحة: فحوصات الحيوية والجاهزية
  4. التتبّع الموزّع والأحداث
← العودة إلى Kubernetes Basics