إذن ما هو جراب في Kubernetes؟

ملاحظة perev. : تستمر هذه المقالة في دورة المواد من كاتب تقني من Google ، تعمل على توثيق Kubernetes (أندرو تشين) ، ومدير هندسة البرمجيات من SAP (Dominik Tornow). هدفهم هو شرح أساسيات Kubernetes بوضوح ووضوح. آخر مرة قمنا بترجمة مقال عن التوفر العالي ، والآن سنتحدث عن مثل هذا المفهوم الأساسي في Kubernetes مثل pod.



Kubernetes هو محرك تنسيق للحاوية مصمم لتشغيل التطبيقات المعبأة في حاويات متعددة ، ويشار إليها عادةً باسم الكتلة. في هذه المنشورات ، نستخدم نهج نمذجة النظم لتحسين فهم Kubernetes ومفاهيمها الأساسية. يتم تشجيع القراء على أن يكون لديهم بالفعل فهم أساسي لـ Kubernetes.

الحاضنات هي لبنات البناء الأساسية لـ Kubernetes ، ولكن حتى مستخدمي Kubernetes ذوي الخبرة لا يمكنهم دائمًا تفسير ما هو عليه.

يقدم هذا المنشور نموذجًا فكريًا موجزًا ​​يلقي الضوء على الخصائص المميزة لقرون Kubernetes. من أجل هذا الإيجاز ، اضطررت إلى حذف بعض الميزات الأخرى من Pods ، مثل تحقيقات الحيوية والاستعداد ، ومشاركة الموارد (بما في ذلك مشاركة مساحة الاسم التي ظهرت مؤخرًا - الترجمة تقريبًا ) ، والعمل مع الشبكة.

التعريف


جراب هو طلب لتشغيل حاوية واحدة أو أكثر على عقدة واحدة.

يتم تحديد جراب من خلال تقديم طلب لتنفيذ حاوية واحدة أو أكثر على عقدة واحدة ، وتشترك هذه الحاويات في الوصول إلى الموارد مثل وحدات التخزين ومكدس الشبكة.

ومع ذلك ، في الحياة اليومية ، يمكن استخدام مصطلح "جراب" بمعنى هذا الطلب وبمعنى جمع الحاويات التي يتم تشغيلها استجابة للطلب. لذلك ، في المنشور ، سنستخدم كلمة "pod" عندما نتحدث عن الطلب ، وبالنسبة للحالة الثانية - استخدم تعبير "مجموعة الحاويات".

تعتبر Pods لبنات البناء الأساسية لـ Kubernetes لأنه يمكن التعبير عن جميع أعباء العمل في Kubernetes - على سبيل المثال ، عمليات النشر و ReplicaSets و Jobs - على شكل قرون.

Pod هو الكائن الوحيد في Kubernetes الذي يتسبب في تشغيل الحاويات. لا جراب - لا حاوية!


المخطط 1. النشر ، مجموعة النسخ المتماثل ، والجراب والحاويات

العمارة Kubernetes



مخطط 2. القرون ، المجدول و Kubelet

في هذا الرسم التوضيحي ، يتم تمييز الكائنات والمكونات المقابلة. يتم تمثيل Pods ككائنات Pod Kubernetes ، والعمل معهم:

  • المجدول
  • Kubelet.


كائنات Kubernetes



الشكل 3. كائنات Kubernetes

يوضح هذا الرسم التوضيحي كائنات Kubernetes المسؤولة عن العمل مع الجراب:

  • كائن الجراب الفعلي (كائن Pod) ؛
  • كائن ملزم
  • كائن العقدة

يعين Pod Object مجموعة الحاويات التي سيتم إطلاقها ، وسياسة إعادة التشغيل المطلوبة في حالة تعطل الحاوية ، كما تراقب حالة الإطلاق.

يربط كائن الربط كائن Pod بكائن العقدة ، أي يعين جراب للمضيف لإطلاقه في وقت لاحق.

يمثل كائن العقدة عقدة في كتلة Kubernetes.

تجهيز قرنة



مخطط 4. معالجة pod'a

عندما يتم إنشاء جراب من قبل مستخدم أو وحدة تحكم مثل ReplicaSet Controller أو Job Controller ، يعالج Kubernetes الجراب في خطوتين:

  • المجدول يخطط لجراب ،
  • Kubelet تطلق جراب.

تخطيط القرنة



الشكل 5 الشكل 5. دورة التحكم في جدولة Kubernetes

تتمثل مهمة المجدول في Kubernetes في جدولة جراب ، أي تعيينه عقدة مناسبة في مجموعة Kubernetes للإطلاق اللاحق.


إقران كائن جراب بكائن عقدة

يتم تعيين جراب للعقدة (أو يرتبط بها) إذا وفقط إذا كان هناك كائن ربط يحتوي على:

  • مساحة الاسم تساوي مساحة اسم الجراب ،
  • الاسم يساوي اسم الجراب ،
  • نوع الهدف يساوي Node ،
  • اسم الهدف يساوي اسم العقدة.

(يمكن لعشاق المغامرات إلقاء نظرة على GitHub من Kelsey Hightower's بعنوان " Creating and Scheduling a Pod Manually " ، وهو دليل خطوة بخطوة حول كيفية إنشاء كائن ملزم يدويًا.)

إطلاق جراب



الشكل 6. دورة التحكم Kubelet

تتمثل مهمة Kubelet في إطلاق جراب ، مما يعني بشكل أساسي إطلاق مجموعة من حاويات جراب. يحدث إطلاق جراب Kubelet على مرحلتين: التهيئة والمرحلة الرئيسية.

كقاعدة ، تقوم مجموعة من الحاويات أثناء مرحلة التهيئة بتنفيذ الأعمال التحضيرية ، مثل إعداد الدليل الضروري وهيكل الملف. ومجموعة الحاويات في المرحلة الرئيسية تؤدي بالفعل المهام "الأكثر أهمية".

في الحياة اليومية ، على الرغم من أن هذا ليس صحيحًا تمامًا ، غالبًا ما يعني مصطلح "جراب" مجموعة من الحاويات في المرحلة الرئيسية أو حتى معنى أضيق للحاوية "الأكثر أهمية" في المرحلة الرئيسية.


مخطط 7.1. بدء جراب ، مرحلة التهيئة (init) والمرحلة الرئيسية (main)

أثناء التهيئة ، يبدأ Kubelet بالتتابع تشغيل الحاويات وفقًا لمواصفات .Spec.InitContainers بالترتيب المحدد في القائمة. لإطلاق pod بنجاح وأخذ سياسة إعادة التشغيل في الاعتبار ، يجب أن تبدأ حاويات التهيئة الخاصة بها وتكتمل بنجاح.

خلال المرحلة الرئيسية ، تطلق Kubelet في وقت واحد حاويات وفقًا لمواصفات .Spec.Containers . هنا ، من أجل الإطلاق الناجح للجراب ، ومع مراعاة سياسة إعادة التشغيل ، يجب بدء تشغيل حاوياته الرئيسية وإكمالها بنجاح أو العمل لفترة غير محدودة.


مخطط 7.2. تشغيل جراب ، تفاصيل هذه العملية

في حالة فشل الحاوية ، عندما تتوقف الحاوية عن العمل برمز خروج غير صفري (0) ، يمكن لـ Kubelet إعادة تشغيل الحاوية وفقًا لسياسة إعادة تشغيل اللوحة. تحتوي هذه السياسة على أحد المعاني التالية: Always ، OnFailure ، Never .

تحتوي سياسة إعادة تشغيل pod على دلالات مختلفة لحاويات التهيئة والحاويات الرئيسية: إذا كان إطلاق حاويات التهيئة يجب أن يؤدي إلى الاكتمال ، فقد لا تنتهي الحاويات الرئيسية.


إعادة تشغيل السياسة لحاوية التهيئة

سيتم إعادة تشغيل الحاوية الأولية (أي أنها ستستلزم إطلاق حاوية جديدة بنفس المواصفات) عند الانتهاء من عملها فقط إذا تم استيفاء الشروط التالية:

  • يشير رمز خروج الحاوية إلى خطأ و
  • سياسة إعادة تشغيل OnFailure هي Always أو OnFailure .


إعادة تشغيل السياسة للحاوية الرئيسية

سيتم إعادة تشغيل الحاوية الرئيسية (أي تستلزم إطلاق حاوية جديدة بنفس المواصفات) عند الانتهاء من عملها فقط إذا تم استيفاء الشروط التالية:

  • تعريف سياسة إعادة التشغيل على أنها Always أو
  • يتم تعريف سياسة إعادة التشغيل على أنها OnFailure ويبلغ رمز خروج الحاوية عن خطأ.


الشكل 8: مثال على مخطط زمني بنقطة حمراء ، يرمز إلى فشل الحاوية

يوضح الرسم التوضيحي جدولاً زمنيًا محتملًا لإطلاق الجراب مع اثنين من المواصفات لحاويات التهيئة ومواصفات للحاويات الرئيسية. كما يوضح إنشاء الحاوية الرئيسية 1.2 الجديدة (وفقًا لسياسة إعادة التشغيل) بعد حدوث مشكلة في إطلاق الحاوية الرئيسية 1.1 .

مراحل قرنة



رسم بياني 9. تفاعل Kubelet مع جسم الجراب ووقت تشغيل الحاوية (وقت تشغيل الحاوية)

يتلقى Kubelet مواصفات جراب من .Spec.InitContainers و .Spec.Containers ، ويطلق مجموعة الحاويات المحددة ، ويحدّث قيم .Status.InitContainerStatuses و .Status.ContainerStatuses .

Kubelet ينهار .Status.InitContainerStatuses و .Status.ContainerStatuses في قيمة واحدة - .Status.Phase .

طور الجراب هو إسقاط حالة الحاويات من مجموعة حاويات ، يعتمد على:

  • الدول ورموز الخروج من حاويات التهيئة ،
  • الدول ورموز الخروج من الحاويات الرئيسية.


مخطط 10. مراحل جراب

معلق



المرحلة المعلقة

جراب في مرحلة الانتظار فقط إذا:

  • لا يوجد أي من حاويات pod init في حالة Terminated مع وجود خطأ ( Failure ) ؛
  • جميع حاويات الجراب الرئيسية في حالة Waiting .

الجري



مرحلة الجري

جراب في مرحلة العمل فقط إذا:

  • جميع حاويات pod init في الحالة Terminated بنجاح ؛
  • حاوية جراب رئيسية واحدة على الأقل في حالة Running ؛
  • لا توجد أي من حاويات الجراب الرئيسية في حالة Terminated مع Failure .

النجاح



مرحلة النجاح

جراب في مرحلة النجاح فقط إذا:

  • جميع حاويات pod init في الحالة Terminated بنجاح ؛
  • جميع حاويات الجراب الرئيسية في حالة Terminated بنجاح.

الفشل



مرحلة الفشل

جراب في مرحلة الفشل فقط إذا:

  • جميع حاويات الجراب في حالة Terminated ؛
  • واحدة على الأقل من حاويات جراب في حالة Terminated مع وجود خطأ ( Failure ).

غير معروف


بالإضافة إلى المراحل الموصوفة أعلاه ، قد يكون الجراب في مرحلة غير معروفة ، مما يشير إلى استحالة تحديد مرحلته الحالية.

جمع القمامة من القرون



رسم بياني 11. دورة التحكم في جامع القمامة

بعد تخطيط وبدء تشغيل وحدة التحكم ، تتولى وحدة تحكم خاصة في Kubernetes - وحدة التحكم في Garbage Collector Controller - مسؤولية إزالة كائنات Pod من مخزن كائنات Kubernetes .

الخلاصة


Pod هي لبنة البناء الأساسية لـ Kubernetes: يتم تعريف pod على أنه تمثيل طلب لإطلاق حاوية واحدة أو أكثر على عقدة واحدة. بعد إنشاء البودرة ، تقوم Kubernetes بمعالجتها على مرحلتين: الأولى ، يقوم المجدول بجدولة البود ، ثم يقوم Kubelet بتشغيله. طوال فترة حياته ، يمر الجراب بمراحل مختلفة ، ويبلغ عن الحالة - أو ، بشكل أدق ، حالة مجموعة حاوياته - إلى المستخدم والنظام.

ملاحظة من المترجم


اقرأ أيضا في مدونتنا:

Source: https://habr.com/ru/post/ar427819/


All Articles