ما هي الهندسة المعمارية Kubernetes؟ الأهمية + أفضل الممارسات
نشرت: 2023-06-12شهدت Kubernetes نموًا هائلاً في اعتمادها منذ عام 2014. مستوحاة من حل إدارة المجموعات الداخلية من Google ، تعمل Borg ، Kubernetes على تبسيط نشر وإدارة تطبيقاتك. مثل جميع برامج تنسيق الحاويات ، أصبح برنامج Kubernetes مشهورًا بين محترفي تكنولوجيا المعلومات لأنه آمن ومباشر. ومع ذلك ، كما هو الحال مع كل أداة ، فإن التعرف على كيف تساعدك بنيتها على استخدامها بشكل أكثر فعالية.
دعنا نتعرف على أسس بنية Kubernetes ، بدءًا من ماهيتها ، وماذا تفعل ، ولماذا هي مهمة.
ما هي هندسة Kubernetes؟
تُعد بنية Kubernetes أو Kubernetes نظامًا أساسيًا مفتوح المصدر لإدارة الحاويات ونشرها. يوفر اكتشاف الخدمة ، وموازنة الحمل ، وآليات التجديد ، وتنظيم الحاويات ، ووقت تشغيل الحاوية ، وتنظيم البنية التحتية التي تركز على الحاويات.
أنشأت Google نظام إدارة حاويات Kubernetes القابل للتكيف ، والذي يتعامل مع التطبيقات المعبأة في حاويات عبر العديد من الإعدادات. يساعد في أتمتة نشر التطبيقات المعبأة في حاويات ، وإجراء التغييرات ، وتوسيع نطاق هذه التطبيقات وتقليصها.
ومع ذلك ، فإن Kubernetes ليس مجرد منظم حاويات . بنفس الطريقة ، تعمل تطبيقات سطح المكتب على نظام MacOS أو Windows أو Linux ؛ إنه نظام التشغيل للتطبيقات السحابية الأصلية لأنه يعمل كمنصة سحابية لتلك البرامج.
ما هي الحاوية؟
تعتبر الحاويات أسلوبًا قياسيًا لتطبيقات الحزم وتبعياتها بحيث يمكن تنفيذ التطبيقات عبر بيئات وقت التشغيل بسهولة. باستخدام الحاويات ، يمكنك اتخاذ تدابير أساسية لتقليل وقت النشر وزيادة موثوقية التطبيق عن طريق تجميع رمز التطبيق والتبعيات والتكوينات في كتلة بناء واحدة سهلة الاستخدام.
يمكن أن يصبح عدد الحاويات في تطبيقات الشركات غير قابل للإدارة. لتحقيق أقصى استفادة من الحاويات الخاصة بك ، يساعدك Kubernetes في تنظيمها.
ما هو استخدام Kubernetes؟
Kubernetes عبارة عن نظام أساسي قابل للتكيف وقابل للتوسيع بشكل لا يصدق لتشغيل أحمال عمل الحاوية. لا توفر منصة Kubernetes البيئة لإنشاء تطبيقات سحابية أصلية فحسب ، بل تساعد أيضًا في إدارة عمليات النشر الخاصة بها وأتمتتها.
ويهدف إلى إعفاء مشغلي التطبيقات والمطورين من الجهد المبذول لتنسيق البنية التحتية الأساسية للحوسبة والشبكة والتخزين ، مما يسمح لهم بالتركيز فقط على العمليات التي تتمحور حول الحاويات لتشغيل الخدمة الذاتية. يمكن للمطورين أيضًا إنشاء إجراءات نشر وإدارة متخصصة ، إلى جانب مستويات أعلى من التشغيل الآلي للتطبيقات المكونة من عدة حاويات.
يمكن لـ Kubernetes التعامل مع جميع أعباء العمل الخلفية الكبيرة ، بما في ذلك التطبيقات المتجانسة ، والبرامج عديمة الحالة أو ذات الحالة ، والخدمات المصغرة ، والخدمات ، والوظائف المجمعة ، وكل شيء بينهما.
غالبًا ما يتم اختيار Kubernetes للفوائد التالية.
- تتفوق البنية التحتية لـ Kubernetes على العديد من تقنيات DevOps.
- يقسم Kubernetes الحاويات إلى مكونات أصغر لإدارة دقيقة.
- تنشر Kubernetes تحديثات البرامج بسرعة وبشكل منتظم.
- يوفر Kubernetes نظامًا أساسيًا لتطوير تطبيقات السحابة الأصلية.
هندسة ومكونات Kubernetes
تشتمل بنية Kubernetes الأساسية على العديد من المكونات ، والمعروفة أيضًا باسم مكونات K8s ، لذلك قبل أن ننتقل مباشرة ، من المهم تذكر المفاهيم التالية.
- تتكون بنية Kubernetes الأساسية من مستوى تحكم يدير العقد وعقد العمال التي تنفذ التطبيقات المعبأة في حاويات.
- بينما يدير مستوى التحكم التنفيذ والاتصال ، تقوم العقد العاملة بالفعل بتشغيل هذه الحاويات.
- مجموعة Kubernetes هي مجموعة من العقد ، وتحتوي كل مجموعة على عقدة عاملة واحدة على الأقل.
مخطط هندسة Kubernetes
طائرة التحكم Kubernetes
مستوى التحكم هو مركز الجهاز العصبي المركزي لتصميم مجموعة Kubernetes ، ويضم مكونات التحكم في العنقود. كما يسجل التكوين والحالة لجميع كائنات Kubernetes في المجموعة.
يحافظ مستوى التحكم Kubernetes على اتصال منتظم مع وحدات الحساب لضمان عمل المجموعة كما هو متوقع. تشرف وحدات التحكم على حالات الكائن وتجعل الحالة المادية أو الملاحظة أو الحالة الحالية لكائنات النظام لتلائم الحالة أو المواصفات المطلوبة استجابةً لتغييرات الكتلة.
يتكون مستوى التحكم من عدة عناصر أساسية ، بما في ذلك خادم واجهة برمجة التطبيقات (API) ، وجدول المواعيد ، ومدير وحدة التحكم ، وما إلى ذلك. تضمن مكونات Kubernetes الأساسية هذه تشغيل الحاويات بالموارد المناسبة. يمكن أن تعمل جميع هذه المكونات على عقدة أساسية واحدة ، لكن العديد من الشركات تكررها على عقد عديدة من أجل الإتاحة العالية.
1. خادم Kubernetes API
خادم Kubernetes API هو الواجهة الأمامية لطائرة التحكم Kubernetes. إنه يسهل التحديثات ، والقياس ، وتكوين البيانات ، وأنواع أخرى من تزامن دورة الحياة من خلال تقديم إدارة واجهة برمجة التطبيقات (API) للتطبيقات المختلفة. نظرًا لأن خادم API هو البوابة ، يجب أن يكون المستخدمون قادرين على الوصول إليه من خارج المجموعة. في هذه الحالة ، يكون خادم واجهة برمجة التطبيقات عبارة عن نفق للبودات والخدمات والعقد. يقوم المستخدمون بالمصادقة من خلال خادم API.
2. Kubernetes جدولة
يسجل kube-Scheduler إحصائيات استخدام الموارد لكل عقدة حوسبة ، ويقيم ما إذا كانت المجموعة سليمة ، ويقرر ما إذا كان ينبغي نشر الحاويات الجديدة وأين يجب نشرها. يقوم المجدول بتقييم الصحة العامة للكتلة ومتطلبات موارد الكبسولة ، مثل وحدة المعالجة المركزية (CPU) أو الذاكرة. ثم يختار عقدة حوسبة مناسبة وجدولة المهمة أو البود أو الخدمة ، مع مراعاة قيود الموارد أو الضمانات ، أو موقع البيانات ، أو متطلبات جودة الخدمة ، أو معايير عدم التقارب ، أو التقارب.
3. مدير تحكم Kubernetes
في بيئة Kubernetes ، تتحكم وحدات التحكم المتعددة في حالات نقاط النهاية (البودات والخدمات) والرموز المميزة وحسابات الخدمة (مساحات الأسماء) والعقد والنسخ المتماثل (القياس التلقائي). مدير وحدة تحكم kube ، المعروف غالبًا باسم مدير وحدة التحكم السحابية أو وحدة التحكم فقط ، هو برنامج خفي يدير مجموعة Kubernetes من خلال أداء مهام وحدة تحكم مختلفة.
تراقب وحدة التحكم الكائنات الموجودة في المجموعة أثناء تشغيل حلقات التحكم الأساسية لـ Kubernetes. يراقبهم لحالاتهم المرغوبة والحالية عبر خادم API. إذا لم تتطابق الحالات الحالية والمقصودة للكائنات المُدارة ، تتخذ وحدة التحكم إجراءً تصحيحيًا لنقل حالة الكائن أقرب إلى الحالة المطلوبة. تتولى وحدة التحكم Kubernetes أيضًا مهام دورة الحياة الأساسية.
4. الخ
etcd عبارة عن قاعدة بيانات مخزن ذات قيمة رئيسية موزعة ومتسامحة مع الأخطاء والتي تحافظ على بيانات التكوين ومعلومات حالة الكتلة. على الرغم من أنه قد يتم إعداد etcd بشكل مستقل ، إلا أنه غالبًا ما يكون بمثابة جزء من مستوى التحكم Kubernetes.
يتم استخدام خوارزمية إجماع الطوافة للحفاظ على حالة الكتلة في إلخ. يساعد هذا في التعامل مع مشكلة نموذجية في سياق أجهزة الحالة المكررة ويتطلب العديد من الخوادم للاتفاق على القيم. يحدد Raft ثلاثة أدوار: القائد ، والمرشح ، والتابع ، ويخلق توافقًا من خلال التصويت لقائد.
نتيجة لذلك ، يعد etcd المصدر الوحيد للحقيقة (SSOT) لجميع مكونات مجموعة Kubernetes ، ويستجيب لاستعلامات مستوى التحكم ويجمع معلومات مختلفة حول حالة الحاويات والعقد والقرون. يتم استخدام etcd أيضًا لتخزين معلومات التكوين مثل ConfigMaps والشبكات الفرعية والأسرار وبيانات حالة الكتلة.
عقد عمال Kubernetes
العقد العاملة هي أنظمة تقوم بتشغيل الحاويات التي يديرها مستوى التحكم. يعمل kubelet - وحدة التحكم الأساسية Kubernetes - على كل عقدة كعامل للتفاعل مع مستوى التحكم. بالإضافة إلى ذلك ، تقوم كل عقدة بتشغيل محرك وقت تشغيل الحاوية ، مثل Docker أو rkt. يتم أيضًا تشغيل المكونات الأخرى للمراقبة والتسجيل واكتشاف الخدمة والإضافات الاختيارية على العقدة.
فيما يلي بعض مكونات بنية مجموعة Kubernetes الرئيسية.
العقد
يجب أن تحتوي مجموعة Kubernetes على عقدة حوسبة واحدة على الأقل ، ولكن يمكن أن تحتوي على أكثر من ذلك وفقًا لمتطلبات السعة. نظرًا لأن البودات منسقة ومجدولة للتنفيذ على العقد ، فإن العقد الإضافية مطلوبة لزيادة سعة الكتلة. تقوم العقد بعمل مجموعة Kubernetes. يربطون التطبيقات بالإضافة إلى موارد الشبكات والحساب والتخزين.
قد تكون العقد في مراكز البيانات عبارة عن أجهزة افتراضية سحابية أصلية (VMs) أو خوادم معدنية عارية.
محرك وقت تشغيل الحاوية
تستخدم كل عقدة حاسوبية محرك وقت تشغيل الحاوية لتشغيل وإدارة دورات حياة الحاوية. يدعم Kubernetes أوقات التشغيل المتوافقة مع مبادرة الحاوية المفتوحة مثل Docker و CRI-O و rkt.
خدمة Kubelet
يتم تضمين kubelet في كل عقدة حسابية. إنه وكيل يتواصل مع مستوى التحكم لضمان تشغيل الحاويات الموجودة في الكبسولة. عندما يطلب مستوى التحكم تنفيذ إجراء معين في العقدة ، يحصل الكوبيليت على مواصفات البود عبر خادم واجهة برمجة التطبيقات ويعمل. ثم يتأكد من أن الحاويات ذات الصلة في حالة عمل جيدة.
خدمة Kube-proxy
تحتوي كل عقدة حسابية على وكيل شبكة يُعرف باسم وكيل kube ، والذي يساعد خدمات شبكات Kubernetes. لإدارة اتصالات الشبكة داخل وخارج الكتلة ، يقوم kube-proxy إما بإعادة توجيه حركة المرور أو يعتمد على طبقة تصفية حزم نظام التشغيل.
تعمل عملية kube-proxy على كل عقدة لضمان توفر الخدمات لأطراف أخرى وللتعامل مع الشبكات الفرعية للمضيف المحدد. يعمل كوكيل للشبكة وموازن تحميل الخدمة على عقدته ، ويتعامل مع توجيه الشبكة لبروتوكول مخطط بيانات المستخدم (UDP) وحركة مرور بروتوكول التحكم في الإرسال (TCP). وكيل kube ، في الواقع ، يوجه حركة المرور لجميع نقاط نهاية الخدمة.
القرون
حتى الآن ، قمنا بتغطية الأفكار الداخلية والمتعلقة بالبنية التحتية. ومع ذلك ، تعتبر البودات حاسمة بالنسبة إلى Kubernetes نظرًا لأنها المطورين الأساسيين الذين يواجهون الخارج والذين يتفاعلون معهم.
البود هو أبسط وحدة في نموذج حاوية Kubernetes ، ويمثل مثيلًا واحدًا للتطبيق. يتكون كل جراب من حاوية أو عدة حاويات مرتبطة بإحكام والتي تتناسب منطقيًا معًا وتنفذ القواعد التي تحكم وظيفة الحاوية.
تتمتع القرون بعمر محدود وتموت في النهاية بعد ترقيتها أو تقليصها. على الرغم من أنها سريعة الزوال ، إلا أنها تنفذ التطبيقات ذات الحالة من خلال الاتصال بوحدة التخزين الدائمة.
قد تتسع القرون أيضًا أفقيًا ، مما يعني أنها يمكن أن تزيد أو تقلل من عدد المثيلات العاملة. إنهم قادرون أيضًا على إجراء تحديثات متجددة وعمليات نشر الكناري.
تعمل السنفات على العقد معًا ، لذا فهي تشارك المحتوى والتخزين وقد تتواصل مع البودات الأخرى من خلال المضيف المحلي. قد تمتد الحاويات على عدة أجهزة كمبيوتر ، وكذلك يمكن أن تمتد الكبسولات. يمكن أن تعمل العقدة الواحدة على عدة قرون ، كل منها تجمع العديد من الحاويات.
البود هو وحدة الإدارة المركزية في نظام Kubernetes البيئي ، ويعمل كحد منطقي للحاويات التي تشارك الموارد والسياق. تعمل طريقة تجميع البودات ، التي تسمح للعديد من العمليات التابعة بالعمل بشكل متزامن ، على تخفيف الاختلافات بين المحاكاة الافتراضية والحاويات.
أنواع القرون
تلعب عدة أنواع من البودات دورًا حيويًا في نموذج حاوية Kubernetes.
- يضمن النوع الافتراضي ، ReplicaSet ، تشغيل العدد المحدد من البودات.
- النشر هو طريقة تعريفية لإدارة البودات المستندة إلى مجموعات النسخ المتماثلة. يتضمن ذلك آليات التراجع والتحديث المتداول.
- يضمن Daemonset أن تقوم كل عقدة بتشغيل مثيل للحجرة. يتم استخدام خدمات الكتلة مثل المراقبة الصحية وإعادة توجيه السجل.
- تم تصميم StatefulSet لإدارة القرون التي يجب أن تتحمل الحالة أو تحافظ عليها.
- يقوم Job و CronJob بتشغيل مهام مجدولة لمرة واحدة أو محددة مسبقًا.
مكونات بنية Kubernetes الأخرى
يحتفظ Kubernetes بحاويات التطبيق ولكن يمكنه أيضًا إدارة بيانات التطبيق المرتبطة في مجموعة. يمكن لمستخدمي Kubernetes طلب موارد التخزين دون فهم البنية التحتية للتخزين الأساسية.
وحدة تخزين Kubernetes هي دليل حيث يمكن لجهاز pod الوصول إلى البيانات وتخزينها. يحدد نوع المجلد محتويات المجلد وكيف أصبح والوسائط التي تدعمه. وحدات التخزين الثابتة (PVs) هي موارد تخزين خاصة بالكتلة غالبًا ما يوفرها المسؤول. يمكن أيضًا أن تعيش PVs أطول من جراب معين.
يعتمد Kubernetes على صور الحاوية ، التي يتم تخزينها في سجل الحاوية . قد يكون سجلًا تابعًا لجهة خارجية أو سجلًا تنشئه المؤسسة.
مساحات الأسماء هي مجموعات افتراضية موجودة داخل كتلة فعلية. لقد تم تصميمها لإنشاء بيئات عمل مستقلة للعديد من المستخدمين والفرق. كما أنها تمنع الفرق من التدخل مع بعضها البعض عن طريق تقييد كائنات Kubernetes التي يمكنهم الوصول إليها. يمكن لحاويات Kubernetes داخل حجرة الاتصال مع البودات الأخرى من خلال المضيف المحلي ومشاركة عناوين IP ومساحات أسماء الشبكات.
Kubernetes مقابل Docker Swarm
يعد كل من Kubernetes و Docker نظامين أساسيين يوفران إدارة الحاويات وتوسيع نطاق التطبيق. يوفر Kubernetes حلاً فعالاً لإدارة الحاويات مثاليًا للتطبيقات عالية الطلب ذات الإعداد المعقد. في المقابل ، تم تصميم Docker Swarm من أجل البساطة ، مما يجعله خيارًا ممتازًا للتطبيقات الأساسية التي يسهل نشرها وصيانتها.
- يعد Docker Swarm أسهل في النشر والتهيئة من Kubernetes.
- يوفر Kubernetes قابلية توسعة شاملة بناءً على حركة المرور ، بينما يعطي Docker Swarm الأولوية للتوسع السريع.
- تتوفر موازنة التحميل التلقائية في Docker Swarm ولكن ليس في Kubernetes. ومع ذلك ، قد تربط حلول الجهات الخارجية موازن تحميل خارجي بـ Kubernetes.
تحدد مطالب شركتك الأداة المناسبة.
حلول تنظيم الحاويات
تمكن أنظمة تزامن الحاويات المطورين من إطلاق عدة حاويات لنشر التطبيقات. يمكن لمديري تكنولوجيا المعلومات استخدام هذه الأنظمة الأساسية لأتمتة إدارة المثيلات وتحديد مصادر المضيفين وتوصيل الحاويات.
فيما يلي بعض من أفضل أدوات تنظيم الحاوية التي تسهل النشر ، وتحديد عمليات تنفيذ الحاوية الفاشلة ، وإدارة تكوينات التطبيق.
أفضل 5 برامج لتنظيم الحاويات:
- Google Cloud Run
- Amazon Elastic Container Service (Amazon ECS)
- محرك Mirantis Kubernetes
- محرك Google Kubernetes
- خدمة Amazon Elastic Kubernetes (Amazon EKS)
* الحلول الخمسة الرائدة لتنظيم الحاويات من تقرير شبكة G2 لربيع 2023.
أفضل الممارسات ومبادئ التصميم في Kubernetes
يعد تنفيذ إستراتيجية النظام الأساسي التي تراعي الأمان والحوكمة والمراقبة والتخزين والشبكات وإدارة دورة حياة الحاوية والتنسيق أمرًا بالغ الأهمية. ومع ذلك ، فإن Kubernetes يمثل تحديًا كبيرًا في اعتماده وتوسيع نطاقه ، خاصة بالنسبة للشركات التي تدير كل من البنية التحتية السحابية المحلية والعامة. لتبسيط الأمر ، نناقش أدناه بعض أفضل الممارسات التي يجب مراعاتها أثناء تصميم مجموعات kubernetes.
- تأكد من أن لديك دائمًا أحدث إصدار من Kubernetes.
- استثمر في تدريب فرق التطوير والتشغيل.
- تأسيس حوكمة على مستوى الشركة . تأكد من أن أدواتك وموفري الخدمة متوافقين مع Kubernetes orchestration.
- قم بزيادة الأمان من خلال تضمين تقنيات مسح الصور في سير عمل التكامل والتسليم المستمر (CI / CD). يجب دائمًا التعامل مع التعليمات البرمجية مفتوحة المصدر التي يتم تنزيلها من مستودع GitHub بحذر.
- تنفيذ التحكم في الوصول المستند إلى الدور (RBAC) في جميع أنحاء المجموعة. يجب أن تكون النماذج التي تستند إلى أقل امتياز وعدم ثقة هي القاعدة.
- استخدم فقط المستخدمين غير الجذر واجعل نظام الملفات للقراءة فقط لحماية الحاويات بشكل أكبر.
- تجنب القيم الافتراضية لأن الإعلانات البسيطة أقل عرضة للأخطاء وتصل الغرض بشكل أفضل.
- عند استخدام صور Docker Hub الأساسية ، كن حذرًا لأنها قد تحتوي على برامج ضارة أو تنتفخ برمز غير ضروري. ابدأ بكود بسيط ونظيف وشق طريقك. تنمو الصور الأصغر بسرعة أكبر ، وتشغل مساحة أقل على التخزين ، وتسحب الصور بشكل أسرع.
- حافظ على الحاويات بسيطة قدر الإمكان. تسمح عملية واحدة لكل حاوية للمنسق بالإبلاغ عما إذا كانت هذه العملية سليمة أم لا.
- تحطم عند الشك. لا تقم بإعادة التشغيل عند الفشل لأن Kubernetes سيعيد تشغيل حاوية معطلة.
- كن وصفيًا . التسميات الوصفية تفيد المطورين الحاليين والمستقبليين.
- عندما يتعلق الأمر بالخدمات المصغرة ، لا تكن محددًا جدًا . يجب ألا تكون كل وظيفة ضمن مكون التعليمات البرمجية المنطقية خدمة مصغرة لها.
- حيثما أمكن ، أتمتة . يمكنك تخطي عمليات نشر Kubernetes اليدوية تمامًا عن طريق أتمتة سير عمل CI / CD.
- استخدام مجسات الحيوية والاستعداد للمساعدة في إدارة دورات حياة الكبسولات ؛ خلاف ذلك ، قد يتم إنهاء البودات أثناء التهيئة أو تلقي طلبات المستخدم قبل أن تصبح جاهزة.
نصيحة: استكشف حلول إدارة الحاويات لتحسين ممارسات النشر.
ضع في اعتبارك حاوياتك
أصبح برنامج Kubernetes ، وهو برنامج إدارة تتمحور حول الحاويات ، المعيار الفعلي لنشر وتشغيل التطبيقات المعبأة في حاويات نظرًا للاستخدام الواسع للحاويات داخل الشركات. تصميم Kubernetes بسيط وبديهي. في حين أنه يمنح مديري تكنولوجيا المعلومات تحكمًا أكبر في البنية التحتية وأداء التطبيقات ، إلا أن هناك الكثير لنتعلمه لتحقيق أقصى استفادة من التكنولوجيا.
هل أنت مهتم باستكشاف الموضوع أكثر؟ تعرف على الأهمية المتزايدة للحاويات في الحوسبة السحابية!