التحديثات التدريجية والتراجع
طبّق تحديثات للتطبيقات دون توقف، وعُد إلى الإصدارات السابقة عند ظهور مشكلات
التحديثات التدريجية والتراجع درس مجاني في Kubernetes Basics على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kubernetes Basics، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.
التحديثات من دون توقف: لماذا؟
تخيلوا تحديث تطبيق قيد التشغيل. من دون تخطيط دقيق، قد يواجه المستخدمون توقفًا أو أخطاء. وهنا تتألق التحديثات التدريجية في Kubernetes!
تتيح لكم التحديثات التدريجية تحديث تطبيقكم إلى إصدار جديد من دون مقاطعة الخدمة. إذ يُطرح الإصدار الجديد تدريجيًا، مما يضمن بقاء تطبيقكم متاحًا.
كيف تتعامل Deployments مع التحديثات
عند تحديث قالب Pod الخاص بـ Deployment (مثل تغيير صورة الحاوية)، لا يقوم Kubernetes بإيقاف كل شيء ثم إعادة تشغيله. بل يستخدم استراتيجية RollingUpdate افتراضيًا.
- ينشئ Pods جديدة بالإعدادات المحدّثة.
- ينهي Pods القديمة تدريجيًا بعد جاهزية الجديدة.
- تضمن هذه العملية انتقالًا سلسًا مع توقف ضئيل أو من دون توقف.
التحكم في سرعة الطرح
يمكنكم ضبط سلوك التحديثات التدريجية بدقة باستخدام معاملين أساسيين في قسم .spec.strategy.rollingUpdate في Deployment:
maxUnavailable: الحد الأقصى لعدد Pods التي يمكن ألا تكون متاحة أثناء التحديث. ويمكن تحديده كعدد مطلق أو كنسبة مئوية.maxSurge: الحد الأقصى لعدد Pods التي يمكن إنشاؤها فوق العدد المطلوب من Pods. ويمكن تحديده أيضًا كعدد مطلق أو كنسبة مئوية.
تكون قيمة كل منهما افتراضيًا 25%.
Deployment الأولي
لنبدأ بـ Deployment بسيط لـ Nginx. يعرّف ملف YAML هذا تطبيقنا الأولي الذي يشغّل 3 نسخ من nginx:1.14.2.
سنستخدمه كأساس لإجراء تحديث تدريجي في الخطوة التالية.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80إجراء تحديث تدريجي
والآن، لنحدّث إصدار Nginx من 1.14.2 إلى 1.15.0. نغيّر الصورة في YAML ونطبّق الملف فحسب.
سيكتشف Kubernetes التغيير ويبدأ تحديثًا تدريجيًا تلقائيًا. راقبوا الحقل image أدناه:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.0
ports:
- containerPort: 80مراقبة حالة الطرح
بعد تطبيق YAML المحدّث، يمكنكم مراقبة تقدم التحديث التدريجي باستخدام الأمر kubectl rollout status:
kubectl rollout status deployment/my-nginx
ستظهر لكم رسائل تشير إلى إنشاء Pods جديدة وإنهاء القديمة حتى اكتمال التحديث. ويمكنكم أيضًا استخدام kubectl get rs لرؤية ReplicaSets القديمة والجديدة.
التحقق من سجل الطرح
يحتفظ Kubernetes بسجل لمراجعات Deployments الخاصة بكم. ويفيد ذلك كثيرًا في فهم التغييرات وإجراء عمليات التراجع المحتملة.
لعرض السجل، استخدموا الأمر:
kubectl rollout history deployment/my-nginx
ستظهر لكم قائمة بالمراجعات، تمثل كل منها حالة مميزة لـ Deployment. وغالبًا ما يعكس CHANGE-CAUSE الأمر أو تغيير YAML.
متى نحتاج إلى التراجع
حتى مع إجراء اختبارات دقيقة، قد يتسبب إصدار جديد من التطبيق أحيانًا في أخطاء أو مشكلات في الأداء لم يتم اكتشافها. وفي مثل هذه الحالات الحرجة، تحتاجون إلى طريقة سريعة للعودة إلى حالة مستقرة معروفة.
هنا تأتي أهمية عمليات التراجع. فهي تتيح لكم إلغاء تحديث يسبب مشكلات وإعادة Deployment إلى إصدار سابق يعمل، انطلاقًا من سجله.
تنفيذ عملية تراجع
للتراجع إلى المراجعة السابقة مباشرةً، استخدموا:
kubectl rollout undo deployment/my-nginx
إذا أردتم التراجع إلى مراجعة محددة (مثلًا، المراجعة 1)، فيمكنكم تحديدها:
kubectl rollout undo deployment/my-nginx --to-revision=1
سينفذ Kubernetes تحديثًا تدريجيًا آخر لإعادة Pods إلى الإعدادات التاريخية المحددة.
التحقق من استراتيجية الطرح
أيّ من المعاملات التالية يمكن استخدامه للتحكم في سلوك استراتيجية RollingUpdate الخاصة بـ Deployment في Kubernetes؟
مراجعة: تحديثات سلسة وشبكات أمان
استكشفنا كيف تتيح Kubernetes Deployments إجراء تحديثات تدريجية من دون توقف، مع نقل تطبيقاتكم بسلاسة إلى إصدارات جديدة. لقد تعلمتم ما يلي:
- تستخدم Deployments استراتيجية
RollingUpdateافتراضيًا. - يتحكم
maxUnavailableوmaxSurgeفي سرعة التحديث. - يراقب
kubectl rollout statusالتقدم. - يتتبع
kubectl rollout historyالمراجعات. - يتيح
kubectl rollout undoالتراجع السريع إلى إصدارات مستقرة.
تُعدّ هذه الميزات ضرورية للحفاظ على التوافر العالي والموثوقية في تطبيقاتكم!
الأسئلة الشائعة
هل درس «التحديثات التدريجية والتراجع» مجاني؟
نعم — نص درس «التحديثات التدريجية والتراجع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kubernetes Basics، انتقل إلى CoddyKit PRO. تتضمن دورة Kubernetes Basics 4 دروس في المجموع.
ماذا ستتعلم في «التحديثات التدريجية والتراجع»؟
طبّق تحديثات للتطبيقات دون توقف، وعُد إلى الإصدارات السابقة عند ظهور مشكلات تتمرن على Kubernetes Basics مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kubernetes Basics؟
لا تُشترط خبرة سابقة. Kubernetes Basics على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التحديثات التدريجية والتراجع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kubernetes Basics هذا؟
نعم. كل درس في Kubernetes Basics يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فهم Deployments
- توسيع التطبيقات باستخدام ReplicaSets
- التحديثات التدريجية والتراجع
- استراتيجيات النشر: Blue-Green وCanary