اختيار cluster محلي: kind مقابل Kubeadm (Docker Desktop)

2 دقيقة

المشروع projet10-kubernetes-deploiements · عندما يعرض Docker Desktop « Create Kubernetes Cluster »، يقترح نوعين من العناقيد: kind أو Kubeadm. يشرح هذا المستند الفرق وأيهما تختار لهذه الدورة.

في جملة واحدة

  • Kubeadm = عنقود بعقدة واحدة، بسيط، يشارك محرك Docker ← صورك المبنية محلياً قابلة للاستخدام فوراً. ⭐ موصى به لهذا المشروع.
  • kind (Kubernetes IN Docker) = كل عقدة حاوية بـ مخزن صور خاص (containerd) ← يلزم تحميل صورك المحلية قبل النشر، لكن يمكن محاكاة عدة عقد.

جدول مقارنة

المعيارKubeadmkind
المعنىأداة رسمية لإقلاع عنقودKubernetes in Docker
عدد العقدواحدة (single-node)1 إلى 10 (متعدد العقد ممكن)
أين تعمل العقدمباشرة في آلة Docker Desktop الافتراضيةكل عقدة = حاوية Docker
تخزين الصورمشترك مع محرك Dockerمعزول (containerd خاص بـ kind)
صورة محلية (docker build)ظاهرة فوراً (imagePullPolicy: IfNotPresent)غير ظاهرةkind load docker-image <img> إلزامي
محاكاة عطل عقدةلا (عقدة واحدة)نعم (يمكن إيقاف حاوية-عقدة)
السرعة / الخفةسريع جداً في التشغيلسريع، لكن خطوة تحميل صورة إضافية
مثالي لـتعلّم Pods / Deployments / Services بلا احتكاكاختبار متعدد العقد والجدولة والتآلف
إعادة التهيئةإعادة ضبط العنقودتغيير عدد العقد يعيد تهيئة الكل

الأثر الملموس على هذا المشروع

يبني مشروعنا صورة محلياً:

powershell
docker build -t demo-k8s:1.0 ./app

ويستخدم deployment.yaml:

yaml
image: demo-k8s:1.0
imagePullPolicy: IfNotPresent   # لا يحاول التنزيل من سجل

مع Kubeadm — لا شيء إضافياً

يشارك العنقود محرك Docker: الصورة demo-k8s:1.0 موجودة سلفاً.

powershell
docker build -t demo-k8s:1.0 ./app
kubectl apply -f k8s/

مع kind — خطوة إضافية (تحميل الصورة)

وإلا تبقى الـ Pods في ErrImagePull / ImagePullBackOff (لا يجد العنقود الصورة).

powershell
docker build -t demo-k8s:1.0 ./app
kind load docker-image demo-k8s:1.0    # <-- ضروري مع kind
kubectl apply -f k8s/

يُعاد في كل إعادة بناء صورة مع kind. هذا النسيان رقم 1 الذي يعلّق المبتدئين.


التوصية للدورة

هدفكاختر
اكتشاف Pods و Deployments و Services و ConfigMap والتوسيع والتحديث التدريجيKubeadm
إظهار عنقود متعدد العقد وتوزيع الـ Pods بين العقدkind (عقدتان أو أكثر)

لهذا المشروع، علّم Kubeadm ثم Create.

إعدادات نافذة « Create Kubernetes Cluster »

  • Cluster Type : Kubeadm.
  • Version : المقترحة (مثلاً v1.34.1) مناسبة.
  • Advanced Settings → Show system containers : اتركه غير معلَّم (وإلا تظهر حاويات Kubernetes الداخلية في docker ps وتزدحم الرؤية).

التحقق أن العنقود جاهز

powershell
kubectl config use-context docker-desktop
kubectl get nodes            # يجب أن يعرض عقدة Ready

إن واجهت مشكلة وصول إلى الصور أو الـ Pods، انظر ملحق استكشاف الأخطاء في 02-COMMANDES.md.


دورة من إعداد د. هيثم رحومة — تطوير ونشر حلول البيانات