كانت مواقع الويب مجرد ملفات نصيةً موضوعةً في مجلد، وتُشارَك مع العالم، وتنزَّل وتُعرَض في متصفح الويب، وكان هذا كل ما يجري خلال المعاملة transaction، ولكن الأمور أصبحت أكثر تعقيدًا، وصارت المواقع الإلكترونية تُشغل نماذج من التعليمات البرمجية، مما مكّن المبرمجين من إعداد ما يسمى "بتطبيقات الويب Web Applications"، مثل عربات التسوق، وبوابات تسجيل الدخول، وعملاء البريد الإلكتروني على الإنترنت، ومحررات الصور وغيرها.
ما إن بدأ تشغيل الويب للتطبيقات، حتى أدرك مهندسو النظم ومصمموها أن الشبكة كانت في الأساس حاسوبًا عملاقًا Supercomputer، وأنه يجب إدارة الموارد على عُقد هذا الحاسوب، تمامًا مثلما تُدار على حاسوب محمول عند تشغيل العديد من التطبيقات في وقت واحد.
كان بإمكاننا نسبيًا توقع الوقت المستغرق للحوسبة في أيام الحواسيب المركزية mainframe، إذ حجزنا موعدًا لاستخدام الحاسوب حرفيًا، ووضعنا مبدأً لإدارة الموارد اعتمد على قاعدة "من يأتي أولاً يُخدم أولاً"، لكن هذا قطعًا لا يصلح عند التعامل مع مليارات المستخدمين، فقد يحتاج أي عدد منهم إلى كل قدرة المعالجة للحاسوب في أي لحظة، ثم اعتقدنا في وقت لاحق أن الحل هو التوسع، أي المزيد من الخوادم التي تُشغل المزيد من نسخ التطبيقات، مما يعني إمكانية استخدام هذه التطبيقات من قبل مزيد من الأشخاص في أي وقت، ولكن قد يكون تشغيل 100 خادم مكلفًا عندما تزيد حركة المرور traffic، لذا فالمشكلة ليست في كيفية إدارة موارد الخادم الذي يشغِّل تطبيقًا ما فقط، بل في كيفية إدارة هذه الموارد ديناميكيًا أيضًا، أي اعتمادًا على عدد الأشخاص الذين يطلبون الوصول للتطبيق.
ما هو Kubernetes؟
Kubernetes (والذي يُشار إليه بالاختصار K8s) هو حل مفتوح المصدر لأتمتة النشر والتوسع الديناميكي للتطبيقات المغلفة في حاويات عبر الإنترنت، ويستخدم Kubernetes ما يسمى بالحاويات containers، وهي نظام في لينكس Linux يجمع التطبيقات في وحدات منطقية لتُدار بطريقة مركزية وآمنة، وهي مصممة لتكون سريعة الزوال، أي يمكن أن تتعطل الحاوية أو تتوقف دون فقد بيانات المستخدم، لأن البيانات تُحفظ خارج الحاوية، وتعدّ التطبيقات المعبأة في حاويات تطبيقات قابلةً للتخلص منها، ويمكن لمجموعة من الخوادم إطلاق نُسخ جديدة من التطبيق عندما يحتاج إليها الكثير من المستخدمين، أو تشغيل نُسخ أقل عندما يحتاج إليها بضع مئات من المستخدمين فقط، ويستطيع مسؤول النظام تنفيذ ذلك يدويًا أو من خلال كتابة سلسلة من السكربتات لمراقبة حركة المرور والاستجابة، لكن Kubernetes يجعل ذلك آليًا.
يمكن تثبيت Kubernetes للاختبار أو للإنتاج، فإذا كان الهدف تعلمه أو تجربة إنشاء تطبيق قائم على السحابة فقط، فيمكن تشغيل Kubernetes أو OpenShift أو OKD محليًا على حاسوبك، أما للمشاريع الجادة فيمكن بناء عنقود cluster خاص بك، وللبيئات الإنتاجية الكبيرة يمكن تثبيت OKD أو Kubernetes.
صمم Kubernetes لعمليات النشر الكبيرة، لذلك ربما لا تحتاج إلى استخدامه إلا إذا كان لديك الكثير من المستخدمين الذين يزورون تطبيقاتك على الويب مما يؤثر سلبًا على الأداء، لكن يمكنك تشغيله في المنزل (عبر خادم محلي تضبطه عبر راسبيري باي في المنزل)، ويسهل ذلك كلما ازدادت شهرة Kubernetes.
يسهّل Kubernetes إدارة الحاويات، إلا أنه عبارة عن مجموعة أدوات تصنعها بنفسك غالبًا، ويمكن تنزيله وتشغيله تمامًا مثلما طوِّر، ولكن ذلك يعني أنك ستطور أدواتك الخاصة لدعم عناقيدك فيه، وتوجد بعض الأدوات التي تساعد في ذلك، مثل Kubash وهي واجهة سطرية تفاعلية لعنقودك للمساعدة في إنشاء صور الحاويات وتوفير المضيفين، وKonveyor وهي سلسلة أدوات كاملة للمساعدة في ترحيل مجموعتك وتحسينها، وHelm وهو مدير الحزم، وغيرها الكثير.
ما هي OpenShift و OKD؟
OpenShift هي منصة لتطبيق Kubernetes مبنية للسحابة، بينما OKD هو المشروع الأولي له، وهو مفتوح المصدر.
تتجه البنية التحتية الحديثة إلى تعدد السحابات Multicloud والسحابة الهجينة hybrid cloud، لذا احتاج مسؤولو النظام والمطورين إلى منصة مستقرة وقابلة للتنبؤ، ويوفر OKD المرونة للمهندسين عند اختيار السحابة التي تعمل عليها بنيتهم التحتية، كما توفر للمسؤولين وصولًا سهلًا إلى إدارة المستخدمين والموارد، وتتيح للمطورين تطوير تطبيقات knative (أي أصيلةً مع "Kubernetes") وجاهزة للنشر على السحابة، كما أنها لوحة تحكم وطبقة تجريد abstraction وسلسلة أدوات في آن واحد.
OpenShift وOKD هي توزيعات Kubernetes، ويمكن للمسؤولين تشغيلها مع الاستمرار في استخدام جميع أوامر Kubernetes الأكثر شيوعًا، مثل kubectl وkubeadm وما إلى ذلك، ويمكن للمسؤولين استخدام جميع أوامر لينكس المألوفة لديهم لإدارة نظام التشغيل المضيف، لأن Kubernetes يعمل ويتفاعل مباشرةً مع نظام لينكس Linux وحاوياته.
كيف يعمل نظام Kubernetes؟
تعمل التطبيقات الموجودة على السحابة داخل حاويات، والحاويات ليست أشياءً ماديةً، بل هي مفهوم برمجي يعني تجميع العمليات الجارية على الخادم معًا لتتشارك في موارد معينة، وتشغَّل الحاويات عادةً بواسطة CRI-O أو Podman أو LXC أو Docker.
يُطلق على وحدة التنظيم الرئيسية في Kubernetes عند تشغيل التطبيقات اسم pod، وهي عبارة عن مجموعة من الحاويات، تُدار معًا على نفس الجهاز أو الجهاز الافتراضي أو العقدة، وهي مصممة لتتواصل مع بعضها البعض بسهولة، ويمكن تنظيم عدد منها في خدمة، وهي مجموعة pod تعمل معًا، وتُنظم بواسطة نظام من العناوين labels، مما يسمح بتخزين البيانات الوصفية حول كائنات مثل pods في Kubernetes.
يمكن تنظيم كل هذه الأجزاء بطريقة متوافقة، ويمكن التنبؤ بها من خلال واجهة برمجة التطبيقات API، أو من خلال OpenShift أو OK أو تعليمات محددة مسبقًا أو باستخدام أوامر طرفية.
ترجمة -وبتصرف- للمقال ?What is Kubernetes من موقع opensource.com.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.