تخطَّ إلى المحتوى

Rollouts و Probes و Resources

Rollout هو عملية تحديث Deployment من إصدار إلى إصدار. Kubernetes لا يحذف كل النسخ مرة واحدة. غالبا ينشئ Pods جديدة تدريجيا ويوقف القديمة تدريجيا.

Terminal window
kubectl set image deployment/web nginx=nginx:1.28
kubectl rollout status deployment/web
kubectl rollout history deployment/web
kubectl rollout undo deployment/web
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
  • maxUnavailable: أكبر عدد من Pods يمكن أن يكون غير متاح أثناء التحديث.
  • maxSurge: أكبر عدد إضافي من Pods يمكن تشغيله فوق العدد المطلوب أثناء التحديث.

Probes تخبر Kubernetes عن صحة التطبيق.

النوعالسؤال الذي يجيب عليه
startupProbeهل التطبيق انتهى من البداية؟
readinessProbeهل التطبيق جاهز لاستقبال traffic؟
livenessProbeهل التطبيق ما زال حيا أم يحتاج restart؟
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
  • requests: الموارد التي يحتاجها Pod حتى يختار scheduler مكانه.
  • limits: الحد الأقصى المسموح به.

Lab: Deployment قابل للتحديث

المستوى: مبتدئ الوقت: 35 دقيقة الأدوات: kubectl

الهدف: إضافة probes و resources ثم تنفيذ rollout.

أضف readinessProbe و livenessProbe و resources إلى Deployment من درس Deployments، ثم نفذ:

Terminal window
kubectl apply -f deployment.yaml
kubectl rollout status deployment/web
kubectl describe deployment web