0Pricing
DevOps Bootcamp · درس

طلبات الموارد وحدودها

حدّد طلبات وحدة المعالجة المركزية والذاكرة وحدودهما للوحدات، لضمان تخصيص الموارد بكفاءة ومنع نفادها

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

احتياجات الموارد في Kubernetes

مثل أي تطبيق، تحتاج Pods إلى موارد لتعمل. يساعد Kubernetes على إدارة هذه الموارد بكفاءة باستخدام طلبات الموارد وحدود الموارد.

تُخبر هذه الإعدادات Kubernetes بمقدار CPU والذاكرة الذي تحتاج إليه Pods، وبالمقدار المسموح لها باستخدامه، مما يضمن توزيع الموارد بعدل.

طلبات CPU: ضمان CPU

يُخبر طلب CPU Kubernetes بالحد الأدنى من CPU الذي يحتاج إليه Pod ليعمل بشكل مريح. إنه ضمان!

  • يستخدم Kubernetes الطلبات لجدولة Pods على عقد تتوفر فيها موارد كافية.
  • إذا لم تتوفر في عقدة ما مساحة CPU كافية لتلبية الطلب، فلن تتم جدولة Pod عليها.
  • يساعد ذلك على منع استنزاف الموارد من تطبيقاتكم المهمة.

وحدات CPU ومثال على الطلب

يُقاس CPU بـ "النوى" أو "الميلي نوى" (m). وتعادل 1000m نواة CPU واحدة (1). لذلك، تمثل 500m نصف نواة.

إليكم طريقة طلب 0.5 من نواة CPU في تعريف Pod:

apiVersion: v1
kind: Pod
metadata:
  name: cpu-request-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        cpu: "500m"

حدود CPU: منع الاستخدام المفرط

يحدد حد CPU الحد الأقصى من CPU الذي يمكن لـ Pod استخدامه. إنه سقف للاستخدام.

  • إذا حاول Pod استخدام CPU يتجاوز الحد المخصص له، فسيقوم Kubernetes بتقييده.
  • يعني ذلك تقييد استخدام Pod لـ CPU ومنعه من الاستئثار بموارد Pods الأخرى على العقدة نفسها.

تطبيق حد CPU عمليًا

إليكم مثالًا على تعيين حد لـ CPU. إذا حاول هذا Pod استخدام أكثر من نواة CPU واحدة، فسيتم تقييده، أي ستُحدّ قدرته على الأداء.

apiVersion: v1
kind: Pod
metadata:
  name: cpu-limit-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      limits:
        cpu: "1"

طلبات الذاكرة: ضمان RAM

على غرار CPU، يحدد طلب الذاكرة الحد الأدنى من RAM الذي يحتاج إليه Pod للعمل.

  • يستخدم Kubernetes هذا الطلب للعثور على عقدة تتوفر فيها ذاكرة حرة كافية لـ Pod.
  • إذا نفدت ذاكرة العقدة، فعادةً ما تكون Pods التي لا تحتوي على طلبات أول من يتم إنهاؤها (إخلاؤها) لتحرير مساحة.

وحدات الذاكرة ومثال على الطلب

تُقاس الذاكرة بالبايت. والوحدات الشائعة هي Mi (ميبيبايت) وGi (جيبيبايت).

تعني 100Mi مقدار 100 ميبيبايت. إليكم كيفية طلب 256 ميبيبايت من الذاكرة:

apiVersion: v1
kind: Pod
metadata:
  name: mem-request-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        memory: "256Mi"

حدود الذاكرة: تجنّب نفاد الذاكرة

يحدّد حد الذاكرة الحد الأقصى للذاكرة التي يمكن لـ Pod استهلاكها.

  • إذا تجاوز Pod حد الذاكرة، فسيُنهي نظام التشغيل تشغيله فورًا مع ظهور خطأ «نفاد الذاكرة» (OOM). ويظهر ذلك غالبًا باسم «OOMKilled».
  • يمنع هذا Pod واحدًا خارجًا عن السيطرة من استهلاك ذاكرة العقدة بالكامل والتسبب في تعطل العقدة بأكملها.

حد الذاكرة قيد التنفيذ

لدى Pod هذا حد ذاكرة يبلغ 512 ميبيبايت. وإذا حاول استخدام المزيد، فسيُنهي النظام تشغيله (OOMKilled) لحماية أعباء العمل الأخرى والعقدة.

apiVersion: v1
kind: Pod
metadata:
  name: mem-limit-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      limits:
        memory: "512Mi"

أفضل الممارسات: الطلبات والحدود

من أفضل الممارسات تحديد كلٍّ من الطلبات والحدود لجميع Pods. فهذا يوفر الاستقرار وقابلية التنبؤ في نظام المجموعة.

  • تضمن الطلبات حصول Pods على الحد الأدنى من الموارد اللازمة للجدولة.
  • تمنع الحدود استنزاف الموارد المتاحة لـ Pods الأخرى وللعقدة نفسها.

إليكم مثالًا كاملًا:

apiVersion: v1
kind: Pod
metadata:
  name: full-resource-pod
spec:
  containers:
  - name: my-app
    image: my-registry/my-app:1.0
    resources:
      requests:
        cpu: "200m"
        memory: "128Mi"
      limits:
        cpu: "500m"
        memory: "256Mi"

التحقق من الموارد

لديكم Pod محدد له طلب CPU بقيمة 200m وحد CPU بقيمة 1 (أي 1000m).

ماذا يحدث إذا حاول هذا Pod استخدام 1.5 من أنوية CPU؟

مراجعة: إدارة الموارد

تعلّمنا في هذا الدرس عن طلبات الموارد وحدود الموارد في Kubernetes.

  • تضمن الطلبات (CPU والذاكرة) الحد الأدنى من الموارد لجدولة Pod.
  • تحدّ الحدود (CPU والذاكرة) من الحد الأقصى للاستخدام لمنع تنافس الموارد.
  • يؤدي تجاوز حدود CPU إلى تقييد الاستخدام، بينما يؤدي تجاوز حدود الذاكرة إلى إنهاء التشغيل (OOMKilled).
  • احرصوا دائمًا على تحديد كلٍّ من الطلبات والحدود لتحقيق أداء مستقر وقابل للتنبؤ للتطبيقات!

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

هل درس «طلبات الموارد وحدودها» مجاني؟

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

ماذا ستتعلم في «طلبات الموارد وحدودها»؟

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

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

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

كم من الوقت يستغرق درس «طلبات الموارد وحدودها»؟

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

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

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

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

  1. طلبات الموارد وحدودها
  2. محدّدات العقدة والتقارب
  3. Taints وTolerations
  4. أولوية Pods والاستباق
← العودة إلى DevOps Bootcamp