تدريب عملي · الوحدة 07 — Kubernetes: المفاهيم الأساسية · المستوى مبتدئ → متوسط
حاول أولاً وحدك! أنجز المشروع بهذا البيان وحده. التصحيح (بيانات YAML معلَّقة + أوامر
kubectl) في README.md، مطوي. لا تفتحه إلا بعد المحاولة.
لا شيء إضافياً تثبّته: يحتوي Docker Desktop عنقود Kubernetes مدمج.
kubectl get nodesdocker-desktop بالحالة Ready.(بدائل ممكنة:
minikube startأوkind create cluster. يعمل المشروع أيضاً، مع تحميل الصورة — انظر 02-COMMANDES.md.)
نشر تطبيق ويب صغير على Kubernetes في عدة نسخ (Pods)، وعرضه عبر خدمة، ثم ممارسة إيماءات اليومي: توسيع، تحديث تدريجي، تراجع وإصلاح تلقائي.
عند إعادة تحميل الصفحة، يتغيّر اسم الـ Pod الذي يجيب: دليل أن الخدمة توزّع الحمل بين الـ Pods.
/ hostname الخاص به = اسم الـ Pod).demo-k8s:1.0.Deployment بـ 3 نسخ، ووسوم متسقة (app: demo-web) ومسبار (readinessProbe / livenessProbe) على /health.kubectl get pods، kubectl describe pod ...، kubectl logs ...).Service من النوع NodePort (المنفذ 30080) يشير إلى الـ Pods عبر مُنتقي الوسوم.http://localhost:30080 وأعد التحميل: تحقّق أن اسم الـ Pod يتغيّر.ConfigMap يحتوي APP_TITLE و APP_VERSION و BG_COLOR، واحقنه في الـ Pods (envFrom).BG_COLOR، أعد تطبيق ConfigMap، أعد تشغيل الـ Pods (kubectl rollout restart) وراقب اللون الجديد.kubectl scale) ثم عد إلى 3.APP_VERSION، طبّق، وتابع النشر التدريجي (kubectl rollout status).kubectl rollout undo).kubectl delete pod ...) ولاحظ أن Kubernetes يعيد إنشاء واحد وحده.app/ (الشفرة + Dockerfile) والمجلد k8s/ (configmap.yaml، deployment.yaml، service.yaml).curl).kubectl get pods تُظهر 3/3 Pods بالحالة Running.kubectl rollout status أثناء تحديث تدريجي.| المعيار | المتوقع |
|---|---|
| صورة مبنية | demo-k8s:1.0 متاحة للعنقود |
| Deployment | 3 Pods Running، مسابير سليمة |
| الخدمة | الصفحة متاحة على localhost:30080، يتغيّر اسم الـ Pod |
| ConfigMap | تغيير BG_COLOR ظاهر بعد إعادة التطبيق |
| دورة الحياة | توسيع وتحديث تدريجي وتراجع وإصلاح تلقائي مُثبتة |
معلّق؟ يحتوي README.md على التصحيح الكامل (بيانات معلَّقة + أوامر)، وتسرد مذكرة الأوامر كل
kubectlمفيد — للرجوع إليها بعد المحاولة.