الوحدات: أصغر الوحدات
تعلّم عن الوحدات، وهي اللبنات الأساسية في Kubernetes، وكيفية تعريفها وإدارتها
الوحدات: أصغر الوحدات درس مجاني في Docker & DevOps Fundamentals على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Docker & DevOps Fundamentals، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
ما هي Pod في Kubernetes؟
في Kubernetes، أصغر وحدة أساسية يمكنكم نشرها هي Pod. تخيلوا Pod على أنها «منزل» واحد يضم حاوية واحدة أو أكثر.
تُعد Pods طبقة تجريد فوق الحاويات. وهي تمثل عملية قيد التشغيل في عنقودكم، وتحتوي على حاويات التطبيق وموارد التخزين وعنوان IP شبكي فريدًا، إضافةً إلى الخيارات التي تحدد كيفية تشغيل الحاويات.

Pod مقابل الحاوية: الفرق
قد تتساءلون: «لماذا أحتاج إلى Pod إذا كانت لديّ حاويات بالفعل؟» إليكم الفرق الأساسي:
- الحاوية (مثل حاوية Docker) هي حزمة تضم تطبيقًا وتبعياته.
- Pod هي طبقة التجريد في Kubernetes التي تغلّف حاوية واحدة أو أكثر، وتوفر لها موارد مشتركة وهوية شبكية واحدة.
في حين أن الحاوية هي الملف التنفيذي الفعلي، فإن Pod هي الطريقة التي تدير بها Kubernetes هذه الملفات التنفيذية وتنسقها.
لماذا نستخدم Pods؟
توفر Pods عدة فوائد مهمة:
- مساحة أسماء شبكية مشتركة: تشترك جميع الحاويات داخل Pod في عنوان IP ومنافذ الشبكة نفسها. ويمكنها التواصل مع بعضها باستخدام
localhost. - تخزين مشترك: يمكن لـ Pods مشاركة وحدات التخزين، مما يتيح للحاويات داخل Pod نفسها الوصول إلى البيانات المشتركة.
- التوضع والجدولة المشتركان: يمكن ضمان تشغيل الحاويات التي تحتاج إلى العمل معًا بشكل وثيق (مثل تطبيق ووكيل تسجيل) على العقدة نفسها، كما تُجدول دائمًا معًا.
تشريح تعريف Pod
تُعرَّف Pods باستخدام ملفات إعداد YAML. فيما يلي المكونات الأساسية التي ستجدونها:
apiVersion: يحدد إصدار Kubernetes API (مثلv1).kind: نوع كائن Kubernetes، وهوPod.metadata: معلومات مثلnameوlabelsالخاصة بـ Pod.spec: الحالة المطلوبة لـ Pod، بما في ذلكcontainersوvolumesالمطلوب تشغيلها وإعدادات أخرى.
تعريف Pod بحاوية واحدة
تحتوي معظم Pods على حاوية واحدة. وهذا شائع في التطبيقات البسيطة. فيما يلي تعريف YAML أساسي لـ Pod يشغّل خادم ويب Nginx:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
labels:
app: webserver
spec:
containers:
- name: nginx-container
image: nginx:latest
ports:
- containerPort: 80نشر Pod الأولى
لإنشاء Pod من ملف YAML، تستخدمون الأمر kubectl apply. ويطلب هذا الأمر من Kubernetes إنشاء الموارد أو تحديثها استنادًا إلى التعريف الذي قدمتموه.
لنفترض أنكم حفظتم تعريف Pod السابقة الخاصة بـ Nginx باسم nginx-pod.yaml. يمكنكم نشرها على النحو التالي:
kubectl apply -f nginx-pod.yaml
بعد ذلك، ستجدول Kubernetes هذه Pod لتعمل على إحدى عُقد العامل.
فحص Pods: Get وDescribe
بعد النشر، سترغبون في التحقق من حالة Pods. إليكم أمرين أساسيين من أوامر kubectl:
kubectl get pods: يعرض جميع Pods في مساحة الأسماء الحالية، مع إظهار اسمها وحالتها والعقدة التي تعمل عليها.kubectl describe pod <pod-name>: يوفر معلومات تفصيلية عن Pod محددة، بما في ذلك الأحداث وحالة الحاويات والموارد المخصصة.
تُعد هذه الأوامر ضرورية للمراقبة واستكشاف الأخطاء وإصلاحها.
Pods متعددة الحاويات: Sidecars
رغم شيوع Pods ذات الحاوية الواحدة، تستفيد بعض السيناريوهات من Pods متعددة الحاويات. ومن الأمثلة الكلاسيكية نمط Sidecar.
تعمل حاوية Sidecar إلى جانب حاوية التطبيق الرئيسية في Pod نفسها، وتنفذ مهام مساعدة مثل:
- وكلاء التسجيل والمراقبة
- مزامنة البيانات
- تمرير حركة مرور الشبكة
وتشترك هذه الحاويات في شبكة Pod وتخزينها، مما يجعل التواصل بينها فعالًا.
مثال: Pod متعددة الحاويات
إليكم مثالًا على Pod متعددة الحاويات. فهي تضم خادم ويب Nginx وحاوية Sidecar من نوع busybox تكتب السجلات في وحدة تخزين مشتركة.
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
volumes:
- name: shared-log-volume
emptyDir: {}
containers:
- name: web-server
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: shared-log-volume
mountPath: /var/log/nginx
- name: log-writer
image: busybox:latest
command: ["/bin/sh", "-c", "while true; do echo 'Hello from sidecar!' >> /var/log/app.log; sleep 5; done"]
volumeMounts:
- name: shared-log-volume
mountPath: /var/log/appاختبروا معرفتكم بـ Pods
أيٌّ من العبارات التالية حول Pods في Kubernetes صحيح؟
مراجعة: Pods - الوحدة الأساسية
لقد تعلمتم للتو عن Pods في Kubernetes، وهي اللبنات الأساسية لتطبيقاتكم داخل العنقود.
- تحتوي Pods على حاوية واحدة أو أكثر، وتوفر لها موارد مشتركة.
- توفر شبكة وتخزينًا مشتركين، وتضمن التوضع المشترك للحاويات المرتبطة.
- تعرّفون Pods باستخدام YAML وتنشرونها باستخدام
kubectl apply. - يساعدكم الأمران
kubectl get podsوkubectl describe podعلى مراقبتها.
بعد ذلك، سنستكشف مزيدًا من أوامر kubectl للتفاعل مع عنقودكم!
الأسئلة الشائعة
هل درس «الوحدات: أصغر الوحدات» مجاني؟
نعم — نص درس «الوحدات: أصغر الوحدات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Docker & DevOps Fundamentals، انتقل إلى CoddyKit PRO. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
ماذا ستتعلم في «الوحدات: أصغر الوحدات»؟
تعلّم عن الوحدات، وهي اللبنات الأساسية في Kubernetes، وكيفية تعريفها وإدارتها تتمرن على Docker & DevOps Fundamentals مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Docker & DevOps Fundamentals؟
لا تُشترط خبرة سابقة. Docker & DevOps Fundamentals على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الوحدات: أصغر الوحدات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Docker & DevOps Fundamentals هذا؟
نعم. كل درس في Docker & DevOps Fundamentals يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- معمارية Kubernetes
- الوحدات: أصغر الوحدات
- أساسيات أوامر kubectl
- Namespaces وLabels للتنظيم