0Pricing
Kubernetes Basics · درس

وحدات متعددة الحاويات (Sidecars)

استكشف أنماط تشغيل حاويات متعددة متجاورة ضمن وحدة واحدة، مثل حاويات sidecar

وحدات متعددة الحاويات (Sidecars) درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 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/log

YAML لجمع السجلات (الجزء 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) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

ماذا ستتعلم في «وحدات متعددة الحاويات (Sidecars)»؟

استكشف أنماط تشغيل حاويات متعددة متجاورة ضمن وحدة واحدة، مثل حاويات sidecar تتمرن على Kubernetes Basics مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kubernetes Basics؟

لا تُشترط خبرة سابقة. Kubernetes Basics على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «وحدات متعددة الحاويات (Sidecars)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kubernetes Basics هذا؟

نعم. كل درس في Kubernetes Basics يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الوحدات: أصغر وحدة
  2. دورة حياة الوحدة وحالاتها
  3. وحدات متعددة الحاويات (Sidecars)
  4. حاويات Init وترتيب بدء التشغيل
← العودة إلى Kubernetes Basics