Kubernetes (K8s) هو عبارة عن منصة مفتوحة المصدر وقابلة للتطوير لإدارة التطبيقات المحزمة (الحاويات) والخدمات، مما يُسهّل عملية تهيئة وتشغيل التطبيقات بشكل آلي. يُعتبر Kubernetes نظامًا بيئيًا كبيرًا وسريع النمو، مع توفر واسع للخدمات والدعم والأدوات.
كلمة Kubernetes مشتقة من اللغة اليونانية، وتعني رُبان السفينة أو المُرشد. قامت جوجل بإطلاق Kubernetes كمصدر مفتوح في عام 2014. يعتمد Kubernetes على أكثر من عقد من الخبرة التي اكتسبتها جوجل في تشغيل أحمال عمل ضخمة، بالإضافة إلى أفضل الأفكار والممارسات من المجتمع.
تطور عملية نشر التطبيقات:
النشر التقليدي: في البداية، كانت التطبيقات تُشغل على خوادم مادية. لم يكن من الممكن تحديد حدود الموارد للتطبيقات داخل الخادم المادي، مما أدى إلى عدم كفاءة توزيع الموارد.
النشر الافتراضي: يسمح النشر الافتراضي بتشغيل العديد من الأجهزة الافتراضية (VMs) على وحدة المعالجة المركزية لخادم مادي واحد. يوفر النشر الافتراضي عزلاً بين التطبيقات على الأجهزة الافتراضية المختلفة، ويوفر مستوى من الأمان حيث لا يمكن الوصول إلى معلومات تطبيق معين بحرية من قبل تطبيق آخر. يسمح النشر الافتراضي باستخدام أفضل لموارد الخادم المادي، ويوفر إمكانية توسيع أفضل.
النشر باستخدام الحاويات: تُشبه الحاويات الأجهزة الافتراضية، ولكنها تتميز بعزل أخف من خلال مشاركة نظام التشغيل بين التطبيقات. لذلك، تُعتبر الحاويات خفيفة الوزن. على غرار الأجهزة الافتراضية، تحتوي الحاوية على نظام ملفات، وحدة معالجة مركزية، ذاكرة، مساحة عمليات، وما إلى ذلك. توفر الحاويات العديد من الفوائد مثل: إنشاء ونشر التطبيقات بسرعة، التطوير والتكامل المستمر، الفصل بين فرق التطوير والعمليات، إمكانية مراقبة النظام والتطبيق، التناسق في البيئة، قابلية النقل، إدارة التطبيقات المركزية، الخدمات المصغرة الموزعة، عزل الموارد، واستخدام الموارد بكفاءة.
لماذا نحتاج إلى Kubernetes؟
في بيئات الإنتاج، نحتاج إلى إدارة الحاويات التي تُشغّل التطبيقات وضمان عدم وجود أي فترة توقف. على سبيل المثال، إذا توقفت حاوية ما، يجب تشغيل حاوية أخرى. يوفر Kubernetes إطارًا لتشغيل الأنظمة الموزعة بشكل قوي. فهو يتولى مهام النسخ الاحتياطي والتوسع التلقائي للتطبيقات، ويوفر نماذج للنشر.
يوفر Kubernetes:
- اكتشاف الخدمات وموازنة الحمل: يمكن لـ Kubernetes الكشف عن حاوية باستخدام DNS أو عنوان IP خاص بها. إذا كان حجم حركة المرور إلى حاوية معينة مرتفعًا، فيمكن لـ Kubernetes موازنة الحمل وتوزيع حركة مرور الشبكة للحفاظ على استقرار النشر.
- تنسيق التخزين: يسمح Kubernetes بالتحميل التلقائي لنظام التخزين الذي تختاره.
- التحديثات التلقائية و التراجع عنها: يمكن لـ Kubernetes تغيير الحالة الفعلية إلى الحالة المطلوبة بتردد مُتحكم فيه.
- التعبئة التلقائية: يمكن لـ Kubernetes تنسيق الحاويات على العقد للاستفادة المثلى من الموارد.
- الإصلاح الذاتي: يقوم Kubernetes بإعادة تشغيل الحاويات المعطلة، واستبدالها، وحذف الحاويات التي لا تستجيب لفحوصات الحالة، ولا يكشف عنها للعملاء حتى تصبح جاهزة للعمل.
- إدارة التهيئة والأمان: يسمح Kubernetes بتخزين وإدارة المعلومات الحساسة.
ما الذي لا يُمثله Kubernetes؟
Kubernetes ليس نظامًا تقليديًا شاملاً من نوع PaaS (منصة كخدمة). إنه يعمل على مستوى الحاويات، وليس على مستوى الأجهزة. Kubernetes:
- لا يحدد أنواع التطبيقات المدعومة.
- لا يقوم بنشر التعليمات البرمجية المصدرية ولا يبني التطبيقات.
- لا يوفر خدمات على مستوى التطبيق، مثل middleware.
- لا يفرض حلولاً لتسجيل السجلات أو المراقبة أو التنبيهات.
- لا يوفر أو يفرض أي تهيئة للغة / النظام.
- لا يوفر أو يطبق أي تهيئة شاملة أو صيانة أو إدارة أو نظام إصلاح ذاتي.
- ليس مجرد نظام لتنسيق المهام. إنه يلغي الحاجة إلى التنسيق.