اختبار الوحدة 7 - الأحمال المتقدمة
تعليمات
يحتوي هذا الاختبار على 30 سؤالاً متعدد الخيارات.
السؤال 1
ما نوع الحمل الذي يضمن تشغيل Pod على جميع العقد في العنقود؟
عرض التفسير
الإجابة الصحيحة: DaemonSet
التفسير: يضمن DaemonSet تشغيل Pod على جميع (أو بعض) العقد في العنقود، وهو مثالي لوكلاء تسجيل الأحداث أو المراقبة.
السؤال 2
ما هو Job في Kubernetes؟
عرض التفسير
الإجابة الصحيحة: حمل ينشئ واحد أو أكثر من Pods ويضمن أن عددًا معينًا ينتهي بنجاح
التفسير: يُستخدم Job للمهام الفردية التي يجب أن تُنفذ مرة واحدة وتنتهي بنجاح، مثل معالجة البيانات أو النسخ الاحتياطي.
السؤال 3
ما هو CronJob؟
عرض التفسير
الإجابة الصحيحة: حمل ينشئ Jobs بشكل متكرر وفقًا لجدول زمني (مثل cron)
التفسير: يقوم CronJob بجدولة تنفيذ Jobs وفقًا لتنسيق cron (على سبيل المثال: "0 2 * * *" لكل يوم في الساعة 2 صباحًا).
السؤال 4
ما هو الفرق الرئيسي بين StatefulSet و Deployment؟
عرض التفسير
الإجابة الصحيحة: يضمن StatefulSet هويات ثابتة وتخزين دائم فردي، بينما Deployment للتطبيقات عديمة الحالة
التفسير: تم تصميم StatefulSets للتطبيقات ذات الحالة (مثل قواعد البيانات) مع هويات ثابتة، بينما Deployments للتطبيقات عديمة الحالة.
السؤال 5
ما هو تنسيق الجدول الزمني لـ CronJob؟
عرض التفسير
الإجابة الصحيحة: تنسيق cron: دقيقة ساعة يوم شهر يوم الأسبوع
التفسير: يستخدم الجدول الزمني تنسيق cron القياسي: "* * * * *" حيث يمثل كل نجمة دقيقة، ساعة، يوم الشهر، شهر، يوم الأسبوع.
السؤال 6
ما هو استخدام DaemonSet؟
عرض التفسير
الإجابة الصحيحة: نشر وكلاء النظام مثل وكلاء تسجيل الأحداث، المراقبة، أو الشبكات على كل عقدة
التفسير: تعتبر DaemonSets مثالية للوكلاء الذين يجب تشغيلهم على كل عقدة، مثل Fluentd لتسجيل الأحداث، Prometheus Node Exporter للقياسات، أو kube-proxy.
السؤال 7
ما الفرق بين completions و parallelism في Job؟
عرض التفسير
الإجابة الصحيحة: completions تحدد عدد النجاحات المطلوبة، parallelism تحدد عدد Pods بالتوازي
التفسير: تحدد completions عدد Pods التي يجب أن تنتهي بنجاح، بينما تتحكم parallelism في عدد Pods التي يمكن تشغيلها في نفس الوقت.
السؤال 8
ما هو service headless في سياق StatefulSet؟
عرض التفسير
الإجابة الصحيحة: Service مع clusterIP: None الذي يعيد مباشرة IPs الخاصة بـ Pods لاكتشاف DNS ثابت
التفسير: تستخدم StatefulSets خدمات headless للسماح باكتشاف DNS ثابت لكل Pod (على سبيل المثال: web-0.web-service.default.svc.cluster.local).
السؤال 9
ما هي الأمر لرؤية Jobs؟
عرض التفسير
الإجابة الصحيحة: kubectl get jobs
التفسير: يعرض kubectl get jobs جميع Jobs وحالتها (نشط، مكتمل، فشل).
السؤال 10
ما هي الأمر لرؤية CronJobs؟
عرض التفسير
الإجابة الصحيحة: kubectl get cronjobs
التفسير: يعرض kubectl get cronjobs (أو cj) جميع CronJobs وجدولها الزمني.
السؤال 11
ما هو Pod Disruption Budget (PDB)؟
عرض التفسير
الإجابة الصحيحة: سياسة تحد من عدد Pods لتطبيق يمكن أن يتم تعطيلها في نفس الوقت
التفسير: يضمن PDB أن عددًا معينًا من Pods يبقى متاحًا أثناء التحديثات أو الصيانة، مما يضمن التوافر العالي.
السؤال 12
ما الفرق بين Job و CronJob؟
عرض التفسير
الإجابة الصحيحة: Job يُنفذ مرة واحدة، CronJob ينشئ Jobs متكررة وفقًا لجدول زمني
التفسير: يُنفذ Job مهمة فردية، بينما يقوم CronJob بجدولة تنفيذ Jobs متكررة وفقًا لجدول زمني cron.
السؤال 13
ما هو restartPolicy الافتراضي لـ Job؟
عرض التفسير
الإجابة الصحيحة: Never أو OnFailure
التفسير: تستخدم Jobs عادةً restartPolicy: Never أو OnFailure، لأنها يجب أن تنتهي بنجاح، وليس إعادة التشغيل بشكل مستمر.
السؤال 14
ما هو استخدام StatefulSet؟
عرض التفسير
الإجابة الصحيحة: تطبيقات ذات حالة مثل قواعد البيانات، تتطلب هويات ثابتة وتخزين دائم
التفسير: تم تصميم StatefulSets للتطبيقات التي تتطلب هويات ثابتة، ترتيب نشر مضمون، وتخزين دائم فردي لكل Pod.
السؤال 15
ما هي الأمر لتعليق CronJob؟
عرض التفسير
الإجابة الصحيحة: kubectl patch cronjob [name] -p '{"spec":{"suspend":true}}'
التفسير: لتعليق CronJob، استخدم kubectl patch لتعيين suspend: true، مما يمنع إنشاء Jobs جديدة.
السؤال 16
ما هو DaemonSet مع nodeSelector؟
عرض التفسير
الإجابة الصحيحة: DaemonSet الذي يعمل فقط على العقد التي تتوافق مع المحددات المحددة
التفسير: يمكن لـ DaemonSet استخدام nodeSelector للحد من التشغيل على بعض العقد، وهو مفيد للوكلاء الخاصين بأنواع معينة من العقد.
السؤال 17
ما الفرق بين Job مع completions=1 و parallelism=1؟
عرض التفسير
الإجابة الصحيحة: completions=1 يعني أن Pod واحد يجب أن ينجح، parallelism=1 يعني أن Pod واحد فقط يعمل في نفس الوقت
التفسير: تحدد completions عدد النجاحات المطلوبة، بينما تتحكم parallelism في عدد Pods التي يمكن تشغيلها في نفس الوقت.
السؤال 18
ما هو StatefulSet مع serviceName؟
عرض التفسير
الإجابة الصحيحة: StatefulSet الذي يستخدم خدمة headless محددة لاكتشاف DNS ثابت
التفسير: يشير serviceName في StatefulSet إلى خدمة headless التي تسمح باكتشاف DNS ثابت لكل Pod في StatefulSet.
السؤال 19
ما هي الأمر لرؤية DaemonSets؟
عرض التفسير
الإجابة الصحيحة: kubectl get daemonsets
التفسير: يعرض kubectl get daemonsets (أو ds) جميع DaemonSets وعدد Pods المطلوبة/الحالية.
السؤال 20
ما هي الأمر لرؤية StatefulSets؟
عرض التفسير
الإجابة الصحيحة: kubectl get statefulsets
التفسير: يعرض kubectl get statefulsets (أو sts) جميع StatefulSets وحالة النسخ الخاصة بها.
السؤال 21
ما هو Job مع activeDeadlineSeconds؟
عرض التفسير
الإجابة الصحيحة: Job مع حد زمني أقصى لتنفيذه
التفسير: تحدد activeDeadlineSeconds المدة القصوى بالثواني التي يمكن أن يستمر فيها Job قبل أن يتم إنهاؤه تلقائيًا.
السؤال 22
ما الفرق بين DaemonSet و Deployment للتوسع؟
عرض التفسير
الإجابة الصحيحة: ينشئ DaemonSet Pod لكل عقدة، بينما ينشئ Deployment عددًا محددًا من Pods
التفسير: يضمن DaemonSet تشغيل Pod على كل عقدة (أو العقد التي تتوافق مع المحددات)، بينما ينشئ Deployment عددًا محددًا من النسخ بغض النظر عن عدد العقد.
السؤال 23
ما هو CronJob مع startingDeadlineSeconds؟
عرض التفسير
الإجابة الصحيحة: CronJob مع حد زمني لبدء Job بعد الوقت المجدول
التفسير: تحدد startingDeadlineSeconds عدد الثواني بعد الوقت المجدول التي يمكن خلالها بدء Job قبل أن يُعتبر مفقودًا.
السؤال 24
ما هي الأمر لحذف Job و Pods الخاصة به؟
عرض التفسير
الإجابة الصحيحة: kubectl delete job [name]
التفسير: يقوم kubectl delete job بحذف Job و Pods المرتبطة به. استخدم --cascade=orphan للاحتفاظ بـ Pods.
السؤال 25
ما هو StatefulSet مع podManagementPolicy: Parallel؟
عرض التفسير
الإجابة الصحيحة: StatefulSet الذي ينشئ ويحذف Pods بشكل متوازي بدلاً من تسلسلي
التفسير: بشكل افتراضي، تنشئ/تحذف StatefulSets Pods بشكل تسلسلي. Parallel يسمح بالقيام بذلك بشكل متوازي، مما يسرع العمليات ولكنه يفقد الترتيب المضمون.
السؤال 26
ما هي الأمر لرؤية تاريخ CronJob؟
عرض التفسير
الإجابة الصحيحة: kubectl get jobs -l job-name=[cronjob-name] لرؤية Jobs التي أنشأها CronJob
التفسير: ينشئ CronJobs Jobs مع تسميات محددة. استخدم kubectl get jobs مع التسميات المناسبة لرؤية التاريخ.
السؤال 27
ما هو Job مع backoffLimit؟
عرض التفسير
الإجابة الصحيحة: Job مع عدد أقصى من المحاولات قبل أن يُعتبر فاشلاً
التفسير: يحدد backoffLimit عدد المرات القصوى التي يمكن فيها إعادة محاولة Job بعد فشل قبل أن يُعتبر فاشلاً بشكل نهائي.
السؤال 28
ما الفرق بين StatefulSet و DaemonSet؟
عرض التفسير
الإجابة الصحيحة: StatefulSet ينشئ عددًا محددًا من Pods بهويات ثابتة، DaemonSet ينشئ Pod لكل عقدة
التفسير: تنشئ StatefulSets عددًا من النسخ المحددة بهويات ثابتة، بينما تضمن DaemonSets وجود Pod على كل عقدة.
السؤال 29
ما هو CronJob مع concurrencyPolicy: Forbid؟
عرض التفسير
الإجابة الصحيحة: CronJob الذي يمنع إنشاء Job جديد إذا كان السابق لا يزال قيد التشغيل
التفسير: تمنع concurrencyPolicy: Forbid إنشاء Job جديد إذا كان Job السابق لا يزال قيد التشغيل، مما يمنع التنفيذ المتزامن.
السؤال 30
ما هي الأمر لرؤية Pods الخاصة بـ DaemonSet؟
عرض التفسير
الإجابة الصحيحة: kubectl get pods -l [selector] حيث selector يتوافق مع تسميات DaemonSet
التفسير: تحتوي Pods التي أنشأها DaemonSet على نفس التسميات مثل DaemonSet. استخدم kubectl get pods مع التسميات المناسبة لتصفية النتائج.
نتيجة الاختبار
تهانينا على إكمال اختبار الوحدة 7!
النتيجة:
- 25-30 إجابة صحيحة: ممتاز! أنت تتقن الأحمال المتقدمة.
- 20-24 إجابة صحيحة: جيد جدًا! راجع المفاهيم التي واجهت صعوبة فيها.
- 15-19 إجابة صحيحة: جيد! راجع الفصول حول StatefulSets، DaemonSets، Jobs و CronJobs.
- أقل من 15: يُوصى بمراجعة الوحدة قبل المتابعة.
تم إنشاء الاختبار في: ديسمبر 2024