0Pricing
Kubernetes Basics · درس

فهم Deployments

تعلّم كيف تعمل Deployments على أتمتة إدارة الوحدات وReplicaSets للتطبيقات عديمة الحالة

فهم Deployments درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

ما هي Deployments؟

مرحبًا! تعني إدارة التطبيقات في Kubernetes إدارة الـ Pods الخاصة بها. لكن إدارة الـ Pods الفردية أو حتى ReplicaSets مباشرةً قد تصبح معقدة.

إن Deployment كائن ذو مستوى أعلى يبسّط إدارة التطبيقات عديمة الحالة. ويمكنكم اعتباره مدير تطبيقكم.

  • يحدد الحالة المطلوبة لتطبيقكم.
  • يضمن الحفاظ على تلك الحالة حتى في حال تعطل بعض الـ Pods.
  • يؤتمت عمليات التحديث والتراجع.

لماذا نستخدم Deployments؟

توفر Deployments مزايا مهمة لتشغيل التطبيقات بشكل موثوق في Kubernetes:

  • الإدارة المؤتمتة: تتولى إنشاء الـ Pods وتوسيع نطاقها وحذفها.
  • المعالجة الذاتية: إذا تعطل Pod، تستبدله Deployment تلقائيًا للحفاظ على عدد النسخ المطلوب.
  • التحديثات التصريحية: تصفون الحالة الجديدة المطلوبة، وتتولى Deployment تحديد كيفية الوصول إليها، مثل طرح الإصدارات الجديدة تدريجيًا.

وهي الطريقة الموصى بها لإدارة التطبيقات عديمة الحالة.

الدور الأساسي لـ Deployment

تدير Deployment في جوهرها ReplicaSets. وتتمثل مهمة ReplicaSet في ضمان تشغيل عدد محدد من نسخ الـ Pod في جميع الأوقات.

لذلك تستخدم Deployment كائنات ReplicaSets لتحقيق هدفها: ضمان تشغيل العدد الصحيح من الـ Pods السليمة لتطبيقكم وفقًا لتعريفكم.

يجعل هذا التجريد تعريف دورة حياة تطبيقكم والحفاظ عليها أسهل بكثير.

بنية YAML الخاصة بـ Deployment

مثل معظم كائنات Kubernetes، تُعرّف Deployments باستخدام YAML. فيما يلي الأقسام الأساسية التي ستجدونها عادةً:

  • apiVersion وkind: يحددان نوع الكائن (Deployment).
  • metadata: اسم Deployment وتسمياته وغير ذلك.
  • spec: التعريف الأساسي، ويشمل:
    • replicas: العدد المطلوب من الـ Pods.
    • selector: كيفية عثور Deployment على الـ Pods التي تديرها.
    • template: المخطط الذي تُنشأ وفقًا له الـ Pods.

قالب الـ Pod

يُعد الحقل template داخل spec الخاص بـ Deployment مهمًا للغاية. فهو في الأساس تعريف كامل لـ Pod.

ستستخدم أي Pods تنشئها هذه Deployment هذا القالب. وهذا يعني أنكم تحددون ما يلي:

  • صور الحاويات المستخدمة.
  • المنافذ المطلوب كشفها.
  • متغيرات البيئة.
  • طلبات الموارد وحدودها.
  • وغير ذلك الكثير!

تؤدي التغييرات في هذا القالب إلى بدء تحديثات التطبيق.

إنشاء Deployment بسيط

لنعرّف Deployment لخادم ويب Nginx بسيط. نريد 3 نسخ.

لاحظوا أن selector.matchLabels يجب أن يطابق template.metadata.labels. فهذا يخبر Deployment بالـ Pods التي تملكها.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

تطبيق Deployment

لإنشاء هذه Deployment في عنقود Kubernetes الخاص بكم، مثل Minikube، استخدموا الأمر kubectl apply. احفظوا YAML السابق باسم nginx-deployment.yaml.

سيُنشئ kubectl كائن Deployment. ثم تكتشف وحدة تحكم Deployment هذا الكائن وتتخذ الإجراء المناسب، فتنشئ ReplicaSet، التي تنشئ بدورها 3 من Pods الخاصة بـ Nginx.

kubectl apply -f nginx-deployment.yaml

فحص Deployment

بعد التطبيق، يمكنكم التحقق من حالة Deployment والـ Pods التي تديرها:

  • kubectl get deployments: يعرض Deployment الخاصة بكم.
  • kubectl get replicasets: يعرض ReplicaSet التي أنشأتها Deployment.
  • kubectl get pods -l app=nginx: يعرض الـ Pods التي تديرها Deployment عبر محدد التسميات الخاص بها.
  • kubectl describe deployment my-nginx-deployment: يوفر معلومات تفصيلية عن Deployment، بما في ذلك الأحداث.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

الحفاظ على الحالة المطلوبة

تتمثل إحدى أقوى ميزات Deployments في قدرتها على الحفاظ على الحالة المطلوبة. فإذا عرّفتم replicas: 3، فستضمن Deployment تشغيل 3 Pods دائمًا.

حاولوا حذف أحد Pods الخاصة بـ Nginx يدويًا باستخدام (kubectl delete pod <pod-name>). ستلاحظون أن Deployment تنشئ بسرعة Pod جديدًا لاستبداله! هذه هي المعالجة الذاتية عمليًا.

تحقق سريع

ما نوع التطبيق الذي تُستخدم Deployment لإدارته بشكل أساسي؟

مراجعة: فهم Deployments

أحسنتم! لقد خطوتم خطواتكم الأولى مع Deployments في Kubernetes.

  • Deployments كائنات عالية المستوى لإدارة التطبيقات عديمة الحالة.
  • تؤتمت إنشاء الـ Pods وتوسيع نطاقها ومعالجتها ذاتيًا من خلال إدارة ReplicaSets.
  • تعرّفون Deployment باستخدام بيان YAML، مع تحديد العدد المطلوب من replicas وtemplate للـ Pods.
  • ينشئ kubectl apply Deployment، ويساعدكم kubectl get/describe على مراقبتها.

بعد ذلك، سنتعمق في ReplicaSets وكيف تضمن العدد المطلوب من الـ Pods!

الأسئلة الشائعة

هل درس «فهم Deployments» مجاني؟

نعم — نص درس «فهم Deployments» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.

ماذا ستتعلم في «فهم Deployments»؟

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

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

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

كم من الوقت يستغرق درس «فهم Deployments»؟

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

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

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

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

  1. فهم Deployments
  2. توسيع التطبيقات باستخدام ReplicaSets
  3. التحديثات التدريجية والتراجع
  4. استراتيجيات النشر: Blue-Green وCanary
← العودة إلى Kubernetes Basics