انتقل إلى المحتوى الرئيسي

اختبار الوحدة 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