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

☸️ شرح Kubernetes

ما هو Kubernetes ولماذا نحتاج إلى تنسيق الحاويات؟

الدرس 1 من 35· ⏱ 3 دقائق قراءة

Kubernetes (يُختصر أحيانًا إلى K8s) هو أشهر منصّة لتنسيق الحاويات في العالم، وحجر أساس في البنية التحتية الحديثة. هذه الصفحة هي المرجع المفاهيمي لمسار Kubernetes؛ هدفها أن تفهم المشكلة التي يحلّها أولًا، قبل تعلّم أوامره وكائناته.

المشكلة: تشغيل الحاويات على نطاق واسع

الحاويات (Containers) رائعة لتغليف تطبيق مع كل اعتماداته ليعمل في أي مكان. لكن ماذا يحدث حين ينتقل تطبيقك من حاوية واحدة على جهازك إلى مئات الحاويات موزّعة على عشرات الخوادم في الإنتاج؟ تظهر أسئلة يصعب حلّها يدويًا:

  • على أي خادم أُشغّل كل حاوية؟
  • ماذا لو تعطّلت حاوية أو خادم في منتصف الليل؟
  • كيف أزيد عدد النسخ وقت الذروة وأقلّلها بعدها؟
  • كيف تكتشف الحاويات بعضها وتتواصل عبر الشبكة؟
  • كيف أُحدّث التطبيق دون توقّف الخدمة؟

إدارة هذا يدويًا مستحيلة عمليًا. هنا يأتي تنسيق الحاويات (Container Orchestration).

ما هو Kubernetes؟

Kubernetes هو منصّة مفتوحة المصدر لتنسيق الحاويات، تُؤتمت نشر التطبيقات المُحوّاة وتوسيعها وإدارتها عبر مجموعة من الخوادم (Cluster).

بدأه مهندسو Google بناءً على خبرتهم في تشغيل الحاويات، ثم أصبح مشروعًا تابعًا لمؤسّسة CNCF. فكرته الجوهرية:

أنت تصف الحالة المطلوبة («أريد 3 نسخ من هذا التطبيق تعمل دائمًا»)، ويتكفّل Kubernetes بالوصول إلى تلك الحالة والحفاظ عليها.

ماذا يفعل Kubernetes؟

  • الجدولة (Scheduling): يقرّر على أي خادم تُشغَّل كل حاوية بناءً على الموارد المتاحة.
  • الشفاء الذاتي (Self-healing): إن تعطّلت حاوية أو خادم، يُعيد تشغيل النسخ تلقائيًا في مكان آخر لاستعادة الحالة المطلوبة.
  • التوسيع (Scaling): يزيد عدد النسخ أو يقلّلها، يدويًا أو آليًا حسب الحمل.
  • اكتشاف الخدمات وموازنة الأحمال: يمنح الحاويات عناوين ثابتة ويوزّع الطلبات عليها.
  • التحديثات المتدرّجة (Rolling updates): يستبدل النسخ القديمة بالجديدة تدريجيًا دون توقّف الخدمة، مع إمكانية التراجع.

علاقته بـ Docker

سؤال شائع: «هل Kubernetes بديل عن Docker؟» لا؛ هما يعملان في طبقتين مختلفتين:

  • Docker (وأدوات الحاويات عمومًا) تُنشئ الحاويات وتشغّلها على جهاز واحد.
  • Kubernetes ينسّق آلاف الحاويات عبر عدّة أجهزة: أين تعمل، ومتى تتوسّع، وكيف تتعافى.

باختصار: تبني حاويتك بأدوات مثل Docker، ثم يشغّلها Kubernetes على نطاق واسع. توجد أدوات تنسيق أخرى مثل Docker Swarm، وقد ناقشنا الفرق في Docker Swarm مقابل Kubernetes. لفهم أساسيات الحاويات نفسها ابدأ من مقدّمة Docker.

ℹ️ ملاحظة تقنية: لم يعد Docker هو زمن التشغيل (runtime) داخل Kubernetes؛ فمنذ إصدار 1.24 صار المعيار هو containerd. هذا لا يؤثّر على صور Docker التي تبنيها — فهي تعمل كما هي.

متى تحتاج Kubernetes (ومتى لا)؟

Kubernetes قويّ لكنّه معقّد. لا تتبنّاه لمجرّد أنه شائع.

  • مناسب حين: لديك عدّة خدمات، حمل متغيّر، حاجة لتوفّر عالٍ وتوسيع آلي، وفريق قادر على إدارته.
  • مبالغة حين: تطبيق صغير أو نموذج أوّلي بحاوية أو اثنتين؛ خيارات أبسط (خادم واحد أو منصّة مُدارة) تكفي وتوفّر عليك تعقيدًا كبيرًا.

القاعدة: اختر أبسط حلّ يفي بالغرض، ولا تُفرط في الهندسة.

ما الذي يجب أن تفهمه قبل المتابعة

تأكّد أنك تستطيع شرح: لماذا يصعب تشغيل الحاويات يدويًا على نطاق واسع، ما معنى «الحالة المطلوبة» والشفاء الذاتي، والفرق بين دور Docker ودور Kubernetes.

الخطوات التالية في المسار: معمارية Kubernetes: مستوى التحكّم والعُقد، ثم الـ Pods والـ Deployments والخدمات. وقد تناول مسار DevOps لدينا مقدّمة عمليّة موجزة في مقدّمة Kubernetes؛ اعتبر هذه الصفحة المرجع المفاهيمي الأشمل لها.

شرح ما هو Kubernetes ولماذا نحتاج إلى تنسيق الحاويات؟ — Kubernetes بالعربي
ما هو Kubernetes ولماذا نحتاج إلى تنسيق الحاويات؟Kubernetes بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟