Deployment (Kubernetes)

From binaryoption
Jump to navigation Jump to search
Баннер1

Deployment في Kubernetes: دليل شامل للمبتدئين

مقدمة

Kubernetes (كيوبرنيتيس) هو نظام مفتوح المصدر لأتمتة نشر التطبيقات، وتوسيع نطاقها، وإدارتها. يعد الـ Deployment أحد أهم كائنات Kubernetes، وهو المسؤول عن إدارة النسخ المتماثلة (Replicas) لتطبيقك. بعبارة أبسط، الـ Deployment يضمن أن عددًا محددًا من نسخ تطبيقك تعمل دائمًا، وإذا فشل أحدها، فسيتم استبداله تلقائيًا. هذه المقالة موجهة للمبتدئين في Kubernetes وستشرح مفهوم Deployment بالتفصيل، مع أمثلة عملية.

ما هو الـ Deployment؟

الـ Deployment هو طبقة تجريدية (Abstraction Layer) فوق الـ ReplicaSet. الـ ReplicaSet هو المسؤول عن التأكد من أن العدد المطلوب من الـ Pods يعمل دائمًا. الـ Deployment، من ناحية أخرى، يوفر ميزات إضافية مثل التحديثات المتدحرجة (Rolling Updates) والتراجع (Rollbacks) مما يجعله الخيار المفضل لإدارة التطبيقات طويلة الأمد.

| الميزة | Deployment | ReplicaSet | |---|---|---| | الوظيفة الرئيسية | إدارة التحديثات والتراجع، وتوسيع النطاق | التأكد من عدد الـ Pods المطلوب | | مستوى التجريد | أعلى | أقل | | التحديثات | تدريجية، مع إمكانية التراجع | لا تدعم التحديثات المتدحرجة بشكل مباشر | | الاستخدام | تطبيقات طويلة الأمد | تطبيقات بسيطة أو كجزء من Deployment |

مكونات الـ Deployment

  • Pod Template: يحدد هذا القالب كيفية إنشاء الـ Pods. يتضمن معلومات مثل صورة الحاوية (Container Image)، والموارد المطلوبة (CPU, Memory)، والبيانات السرية (Secrets)، والوصف (Labels).
  • Replicas: يحدد عدد النسخ المتماثلة من الـ Pod التي يجب أن تكون قيد التشغيل في أي وقت.
  • Strategy: يحدد كيفية تنفيذ التحديثات. هناك نوعان رئيسيان من الاستراتيجيات:
   *   RollingUpdate: التحديث التدريجي، وهو الافتراضي. يتم استبدال الـ Pods القديمة تدريجيًا بأخرى جديدة.
   *   Recreate: إعادة الإنشاء. يتم إنهاء جميع الـ Pods القديمة قبل إنشاء الـ Pods الجديدة.
  • Selector: يستخدم لتحديد الـ Pods التي يديرها الـ Deployment. يعتمد على الـ Labels.

إنشاء Deployment بسيط

لنفترض أننا نريد نشر تطبيق "nginx" بسيط. يمكننا استخدام ملف YAML لتعريف الـ Deployment:

Admin (talk)yaml apiVersion: apps/v1 kind: Deployment metadata:

 name: nginx-deployment

spec:

 replicas: 3
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:latest
       ports:
       - containerPort: 80

Admin (talk)

لحفظ هذا التعريف، قم بإنشاء ملف باسم `nginx-deployment.yaml`. ثم قم بتشغيله باستخدام الأمر: `kubectl apply -f nginx-deployment.yaml`.

تحديث Deployment

لتحديث تطبيقك، يمكنك تعديل ملف YAML الخاص بالـ Deployment وتطبيق التغييرات. على سبيل المثال، لتغيير صورة الحاوية إلى إصدار أحدث:

Admin (talk)yaml apiVersion: apps/v1 kind: Deployment metadata:

 name: nginx-deployment

spec:

 replicas: 3
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:1.23
       ports:
       - containerPort: 80

Admin (talk)

ثم قم بتشغيل الأمر: `kubectl apply -f nginx-deployment.yaml`. سيؤدي هذا إلى بدء عملية تحديث تدريجي، حيث سيتم استبدال الـ Pods القديمة تدريجيًا بالـ Pods الجديدة التي تستخدم صورة nginx:1.23.

التراجع عن Deployment

إذا واجهت مشكلة بعد التحديث، يمكنك التراجع إلى الإصدار السابق بسهولة. للقيام بذلك، استخدم الأمر: `kubectl rollout undo deployment/nginx-deployment`.

مراقبة Deployment

يمكنك مراقبة حالة الـ Deployment باستخدام الأوامر التالية:

  • `kubectl get deployments`: لعرض قائمة الـ Deployments.
  • `kubectl describe deployment/nginx-deployment`: لعرض تفاصيل الـ Deployment.
  • `kubectl rollout status deployment/nginx-deployment`: لمراقبة حالة التحديث.
  • `kubectl get pods -l app=nginx`: لعرض قائمة الـ Pods التي يديرها الـ Deployment.

مفاهيم Kubernetes ذات الصلة

  • Pod: أصغر وحدة قابلة للنشر في Kubernetes.
  • Service: يوفر طريقة ثابتة للوصول إلى مجموعة من الـ Pods.
  • Namespace: يوفر طريقة لعزل الموارد في Kubernetes.
  • ConfigMap: يقوم بتخزين بيانات التكوين غير الحساسة.
  • Secret: يقوم بتخزين البيانات الحساسة مثل كلمات المرور.
  • Ingress: يدير الوصول الخارجي إلى الخدمات في المجموعة.
  • Volume: يوفر تخزينًا مستمرًا للـ Pods.
  • StatefulSet: يستخدم لإدارة التطبيقات ذات الحالة.
  • DaemonSet: يضمن تشغيل نسخة من الـ Pod على كل عقدة في المجموعة.
  • Job: يقوم بتشغيل مهمة لمرة واحدة.
  • CronJob: يقوم بتشغيل مهمة بشكل دوري.
  • Horizontal Pod Autoscaler: يقوم بتوسيع نطاق الـ Pods تلقائيًا بناءً على استخدام الموارد.
  • NetworkPolicy: يتحكم في حركة مرور الشبكة بين الـ Pods.
  • Resource Quota: يحدد مقدار الموارد التي يمكن للمستخدمين استخدامها.
  • LimitRange: يحدد القيم الافتراضية والقيود على الموارد.

استراتيجيات التداول ذات الصلة (للمقارنة والمفاهيم)

خاتمة

الـ Deployment هو أداة قوية في Kubernetes تمكنك من إدارة تطبيقاتك بسهولة وموثوقية. من خلال فهم المكونات الأساسية والقدرة على إنشاء وتحديث وتراجع الـ Deployments، يمكنك تبسيط عملية نشر التطبيقات وتوسيع نطاقها وإدارتها. تذكر استكشاف وثائق Kubernetes الرسمية لمزيد من المعلومات والتعمق في هذا الموضوع.


ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер