أولوية Pods والاستباق
تعلّموا كيف ترتّب PriorityClasses الـPods، وكيف يمكن للمجدول استباق Pods ذات الأولوية الأقل لإفساح المجال لأحمال العمل الحرجة
أولوية Pods والاستباق درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ليست كل وحدات Pod متساوية
عندما يمتلئ العنقود، تكون بعض أحمال العمل أهم من غيرها. تتيح لك أولوية Pod إخبار Kubernetes بالـ Pods التي ينبغي أن تفوز بالمنافسة على الموارد.
ما هي PriorityClass
PriorityClass هو كائن على مستوى العنقود يربط اسمًا بقيمة عددية صحيحة. تعني الأرقام الأكبر أولوية أعلى.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'تعيين أولوية لـ Pod
ينضم Pod إلى فئة باستخدام priorityClassName. ويقرأ المجدول القيمة العددية من الفئة المشار إليها.
apiVersion: v1
kind: Pod
metadata:
name: critical-app
spec:
priorityClassName: high-priority
containers:
- name: app
image: myapp:1.0كيف تؤثر الأولوية في الجدولة
عندما تكون عدة Pods معلقة، يحاول المجدول وضع Pods ذات الأولوية الأعلى أولًا. وتؤثر الأولوية في ترتيب جدولة Pods.
ما هو الإخلاء الاستباقي
إذا تعذرت جدولة Pod ذي أولوية عالية لأن العنقود ممتلئ، فقد ينفذ المجدول إخلاءً استباقيًا (طردًا) لـ Pods ذات الأولوية الأقل لتوفير مساحة.
تعود Pods التي أُخليت إلى حالة Pending، وقد تُجدول في مكان آخر.
الإخلاء الاستباقي عمليًا
تخيل أن عقدة ممتلئة بـ Pods ذات أولوية 100، ووصل Pod ذو أولوية 1000000. يستطيع المجدول إزالة عدد كافٍ من Pods منخفضة الأولوية لإفساح المجال للـ Pod الحرج.
kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-appتعطيل الإخلاء الاستباقي
يمكن لـ PriorityClass الامتناع عن إخلاء الآخرين باستخدام preemptionPolicy: Never. وتستمر جدولة هذه Pods وفق ترتيب الأولوية، لكنها لن تطرد أي Pod.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-no-preempt
value: 1000000
preemptionPolicy: Neverالإعداد الافتراضي العام
يؤدي تعيين globalDefault: true في PriorityClass إلى تطبيق قيمتها على أي Pod لا يحدد فئة. ويمكن أن تكون فئة واحدة فقط هي الإعداد الافتراضي العام.
فئات النظام المضمنة
تأتي Kubernetes مع فئات محجوزة مثل system-cluster-critical وsystem-node-critical للمكونات الأساسية. لا تعيدوا استخدام هذه الفئات لتطبيقاتكم.
kubectl get priorityclass
# system-node-critical 2000001000
# system-cluster-critical 2000000000أفضل الممارسات
- حددوا عددًا صغيرًا من المستويات الواضحة (مثل: حرج، عادي، دفعي)
- احجزوا الإخلاء الاستباقي لأحمال العمل المهمة فعلًا
- اجمعوا بينه وبين طلبات الموارد لتكون قرارات الجدولة دقيقة
- تجنبوا جعل كل شيء عالي الأولوية، لأن ذلك يلغي الغرض منه
الأولوية مقابل QoS
تتحكم الأولوية في الجدولة والإخلاء الاستباقي. أما فئات جودة الخدمة (المستمدة من الطلبات والحدود) فتتحكم في الإخلاء عند تعرض العقدة لضغط. وهما آليتان مرتبطتان لكن منفصلتان.
اختبار سريع
اختبروا مدى فهمكم للإخلاء الاستباقي.
مراجعة
تعلمتم أن PriorityClass يرتب Pods حسب قيمة عددية صحيحة، مما يؤثر في ترتيب الجدولة. ويتيح الإخلاء الاستباقي للـ Pods الحرجة إخلاء Pods الأقل أولوية عندما يكون العنقود ممتلئًا. استخدموا مستويات قليلة وواضحة، واجمعوا بين الأولوية وطلبات الموارد الدقيقة.
الأسئلة الشائعة
هل درس «أولوية Pods والاستباق» مجاني؟
نعم — نص درس «أولوية Pods والاستباق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «أولوية Pods والاستباق»؟
تعلّموا كيف ترتّب PriorityClasses الـPods، وكيف يمكن للمجدول استباق Pods ذات الأولوية الأقل لإفساح المجال لأحمال العمل الحرجة تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «أولوية Pods والاستباق»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- طلبات الموارد وحدودها
- محدّدات العقدة والتقارب
- Taints وTolerations
- أولوية Pods والاستباق