وحدات متعددة الحاويات (Sidecars)
استكشف أنماط تشغيل حاويات متعددة متجاورة ضمن وحدة واحدة، مثل حاويات sidecar
وحدات متعددة الحاويات (Sidecars) درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ما بعد الحاوية الواحدة
حتى الآن، تعاملنا مع Pods على أنها تشغّل حاوية واحدة. لكن ماذا لو احتاج تطبيقكم إلى عملية مساعدة؟
تتيح Kubernetes للـ Pod تشغيل حاويات متعددة. وتكون هذه الحاويات دائمًا متجاورة، كما تتشارك الموارد.
لماذا نستخدم Pods متعددة الحاويات؟
يُعد تشغيل حاويات متعددة في Pod واحد مثاليًا للتطبيقات المترابطة بإحكام والتي تحتاج إلى مشاركة ما يلي:
- مساحة أسماء الشبكة، أي عنوان IP نفسه وإمكانية التواصل عبر
localhost - وحدات التخزين
- دورة الحياة، إذ تبدأ الحاويات وتتوقف وتُعاد تشغيلها معًا
يسمح ذلك بإدارة العمليات المرتبطة كوحدة واحدة.
شرح نمط Sidecar
يُعد نمط Sidecar أحد التصميمات الشائعة. في هذا النمط، تعمل حاوية "sidecar" إلى جانب حاوية التطبيق الرئيسية.
تعمل هذه الحاوية على توسيع وظائف التطبيق الرئيسي أو تحسينها من دون تعديل التطبيق نفسه. ويمكنكم تصورها كرفيق مفيد!
حالات استخدام Sidecar
تتميز حاويات sidecar بمرونة كبيرة. ومن استخداماتها الشائعة:
- جمع السجلات: تجمع حاوية sidecar السجلات من التطبيق الرئيسي وترسلها إلى خدمة مركزية للسجلات.
- الوكيل: توفر حاوية sidecar وظيفة الوكيل الشبكي، مثل استخدامها للأمان (mTLS) أو لإدارة حركة المرور.
- مزامنة الملفات: تحافظ حاوية sidecar على تحديث وحدة تخزين مشتركة بملفات الإعداد أو البيانات.
Pod بحاويتين (YAML)
لنلقِ نظرة على كيفية تعريف حاويات متعددة في بيان YAML الخاص بالـ Pod. كل حاوية عنصر في مصفوفة containers.
لاحظوا الحاويتين nginx-proxy وmain-app المعرّفتين ضمن spec.containers.
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: nginx-proxy
image: nginx:latest
ports:
- containerPort: 80
- name: main-app
image: busybox:latest
command: ["sh", "-c", "echo 'Hello from main app!' && sleep 3600"]التخزين المشترك: emptyDir
يمكن للحاويات الموجودة داخل Pod نفسه مشاركة البيانات باستخدام Volumes في Kubernetes. ومن الطرق البسيطة لتحقيق ذلك استخدام وحدة تخزين emptyDir.
تُنشأ وحدة تخزين emptyDir عندما يُسنَد Pod إلى عقدة، وتظل موجودة ما دام الـ Pod يعمل على تلك العقدة. وهي وحدة تخزين مؤقتة.
مثال: Sidecar لجمع السجلات
تخيلوا تطبيقًا رئيسيًا ينشئ سجلات في ملف. يمكن لحاوية sidecar بعد ذلك قراءة ملف السجل وإرساله إلى خدمة للسجلات.
يفصل ذلك منطق التسجيل عن التطبيق الرئيسي، فيبقى التطبيق منظمًا ومركزًا على وظيفته الأساسية.
YAML لجمع السجلات (الجزء 1)
إليكم YAML الخاص بمثال جامع السجلات لدينا. نعرّف وحدة تخزين emptyDir باسم log-volume. وستقوم الحاويتان بتركيب هذه الوحدة.
تكتب الحاوية main-app رسالة سجل في /var/log/app.log داخل وحدة التخزين المشتركة.
apiVersion: v1
kind: Pod
metadata:
name: log-collector-pod
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: main-app
image: busybox:latest
command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
volumeMounts:
- name: log-volume
mountPath: /var/logYAML لجمع السجلات (الجزء 2)
تركّب الحاوية log-sidecar الآن وحدة log-volume نفسها. ثم تستخدم tail -f لقراءة ملف السجل الذي كتبه التطبيق الرئيسي باستمرار.
في سيناريو واقعي، ستعالج حاوية sidecar هذه السجلات وترسلها إلى نظام للسجلات مثل Elasticsearch أو Splunk.
apiVersion: v1
kind: Pod
metadata:
name: log-collector-pod # Same Pod as before
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: main-app
image: busybox:latest
command: ["sh", "-c", "while true; do echo $(date) 'Main app log entry' >> /var/log/app.log; sleep 1; done"]
volumeMounts:
- name: log-volume
mountPath: /var/log
- name: log-sidecar
image: busybox:latest
command: ["sh", "-c", "tail -f /var/log/app.log"]
volumeMounts:
- name: log-volume
mountPath: /var/logتحقق سريع: فوائد Sidecar
توفر Pods متعددة الحاويات، ولا سيما عند استخدام نمط sidecar، مزايا عديدة لإدارة التطبيقات المعقدة.
ما الفوائد الأساسية لاستخدام حاوية sidecar؟
مراجعة: Pods متعددة الحاويات
أحسنتم! لقد تعلمتم عن Pods متعددة الحاويات وعن نمط sidecar القوي.
- يمكن للـ Pods استضافة حاويات متعددة تتشارك الشبكة والتخزين.
- يساعد نمط sidecar على توسيع وظائف التطبيق الرئيسي أو تحسينها.
- تشمل الاستخدامات الشائعة جمع السجلات والوكلاء ومزامنة البيانات.
- توفر وحدات التخزين
emptyDirتخزينًا مؤقتًا مشتركًا داخل الـ Pod.
يُعد هذا النمط أساسيًا لبناء تطبيقات قوية ووحداتية في Kubernetes!
الأسئلة الشائعة
هل درس «وحدات متعددة الحاويات (Sidecars)» مجاني؟
نعم — نص درس «وحدات متعددة الحاويات (Sidecars)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «وحدات متعددة الحاويات (Sidecars)»؟
استكشف أنماط تشغيل حاويات متعددة متجاورة ضمن وحدة واحدة، مثل حاويات sidecar تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «وحدات متعددة الحاويات (Sidecars)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الوحدات: أصغر وحدة
- دورة حياة الوحدة وحالاتها
- وحدات متعددة الحاويات (Sidecars)
- حاويات Init وترتيب بدء التشغيل