ملاحظة perev. : المقالة الأصلية كتبها كاتب تقني من Google ، يعمل على توثيق Kubernetes (Andrew Chen) ، ومدير هندسة البرمجيات من SAP (Dominik Tornow). هدفها هو شرح أساسيات وواضحة لتنظيم وتنفيذ توافر عالية في Kubernetes. يبدو لنا أن المؤلفين نجحوا ، لذلك يسعدنا مشاركة الترجمة.
Kubernetes هو محرك تنسيق للحاوية مصمم لتشغيل التطبيقات المعبأة في حاويات متعددة ، ويشار إليها عادةً باسم الكتلة. في هذه المنشورات ، نستخدم نهج نمذجة النظم لتحسين فهم Kubernetes ومفاهيمها الأساسية. يتم تشجيع القراء على أن يكون لديهم بالفعل فهم أساسي لـ Kubernetes.
Kubernetes هو محرك تنسيق حاويات موثوق به قابل للتطوير. يتم تحديد قابلية التوسع هنا من خلال الاستجابة في وجود الحمل ، ويتم تحديد الموثوقية من خلال الاستجابة في وجود حالات الفشل.
لاحظ أن قابلية وموثوقية Kubernetes لا تعني قابلية وموثوقية التطبيق قيد التشغيل فيه. Kubernetes عبارة عن منصة قابلة للتطوير وموثوق بها ، ولكن كل تطبيق K8s لم يمر بعد بخطوات معينة ليصبح واحدًا وتجنب الاختناقات ونقاط الفشل الفردية.
على سبيل المثال ، إذا تم نشر التطبيق على أنه ReplicaSet أو Deployment ، فإن خطط Kubernetes (re-) و (re) تطلق قرون متأثرة بتعطل العقدة. ومع ذلك ، إذا تم نشر التطبيق كجراب ، فلن تتخذ Kubernetes أي إجراء في حالة فشل العقدة. لذلك ، على الرغم من أن Kubernetes نفسها لا تزال تعمل ، فإن استجابة تطبيقك تعتمد على البنية المختارة وقرارات النشر.
يركز هذا المنشور على موثوقية Kubernetes. تتحدث عن كيف تحافظ Kubernetes على الاستجابة في وجود حالات الفشل.
العمارة Kubernetes
مخطط 1. سيد وعاملعلى المستوى المفاهيمي ، يتم تجميع مكونات Kubernetes في فئتين مميزتين: المكونات
الرئيسية ومكونات
العمال .
يتحمل الأساتذة مسؤولية إدارة كل شيء باستثناء تنفيذ المواقد. تتضمن مكونات المعالج:
العمال مسؤولون عن إدارة تنفيذ المواقد. لديهم مكون واحد:
العمال موثوق بهم بشكل تافه: الفشل المؤقت أو الدائم لأي عامل في المجموعة لا يؤثر على سيد أو عمال الكتلة الآخرين. إذا تم نشر التطبيق بشكل مناسب ، تخطط Kubernetes (re-) و (re) تطلق أي شخص يتأثر بفشل العامل.
تكوين معالج واحد
مخطط 2. التكوين مع سيد واحدتتكون مجموعة Kubernetes في تكوين رئيسي واحد من سيد واحد والعديد من العمال. يرتبط هذا الأخير مباشرة بمعالج kube-apiserver ويتفاعل معه.
في هذا التكوين ، تعتمد استجابة Kubernetes على:
- السيد الوحيد
- ربط العمال بسيد واحد.
لأن الرئيسي الوحيد هو نقطة فشل واحدة ، لا ينتمي هذا التكوين إلى فئة التوفر العالي.
تكوين متعدد المعالجات
مخطط 3. التكوين مع العديد من سادةفي تكوين متعدد المعالجات ، تتكون مجموعة Kubernetes من العديد من المعالجات والعديد من العمال. يتواصل العمال مع أي خادم kube-apiserver ويتفاعلون معه من خلال موازن تحميل يسهل الوصول إليه.
في هذا التكوين ، Kubernetes مستقلة عن:
- السيد الوحيد
- ربط العمال بسيد واحد .
نظرًا لعدم وجود نقطة واحدة من حالات الفشل في هذا التكوين ، فإنه يعتبر سهل الوصول إليه.
زعيم ومتابع في Kubernetes
في تكوين متعدد المعالجات ، يتم إشراك العديد من مديري تحكم kube وجدولة kube. إذا قام مكونان بتعديل نفس الكائنات ، فقد تنشأ تضاربات.
من أجل تجنب التضارب المحتمل ، ينفذ Kubernetes مدير Kube-controller-Scheduler و جدولة Kube نمط "
السيد-العبد "
(القائد / التابع
) . تختار كل مجموعة قائدًا واحدًا
(أو زعيمًا) ، ويتولى الأعضاء المتبقون في المجموعة دور المتابعين. في أي وقت ، لا يوجد سوى قائد واحد نشط ، والأتباع سلبيون.
الشكل 4 الشكل 4. معالج مكون النشر الزائد بالتفصيليوضح هذا الرسم التوضيحي مثالاً مفصلاً تتصدر فيه kube-controller-1 و kube-Scheduler-2 بين مديري kube-controller-and kube-Scheduler. نظرًا لأن كل مجموعة تختار زعيمها الخاص ، فلا يجب أن تكون على نفس المعلم على الإطلاق.
اختيار العملاء المحتملين
يتم اختيار القائد الجديد من قبل أعضاء المجموعة في وقت الإطلاق أو في حالة سقوط القائد.
قائد - عضو لديه ما يسمى
بإيجار القائد (حاليًا وضع القائد "المستأجر").
الشكل 5: عملية اختيار المكون الرئيسي للمعالجيوضح هذا الرسم التوضيحي عملية الاختيار الرئيسية لـ kube-controller-manager و kube-Scheduler. منطق هذه العملية كما يلي:
' ' , :
-
-
' ' , :
- leader lease
-
- holderIdentity 'self'
تتبع الرائدة
يتم تخزين حالات الزعيم الحالية لـ kube-controller-manager و kube-Scheduler بشكل دائم في تخزين كائن Kubernetes كنقاط
نهاية للكائنات في مساحة اسم
kube-system
. نظرًا لأن كائنين Kubernetes لا يمكن أن يكون لهما نفس الاسم والنوع
(النوع) ومساحة الاسم في نفس الوقت ، فلا يمكن أن يكون هناك سوى
نقطة نهاية واحدة لـ kube-Scheduler و kube-controller-manager.
عرض توضيحي باستخدام أداة وحدة التحكم
kubectl
:
$ kubectl get endpoints -n kube-system NAME ENDPOINTS AGE kube-scheduler <none> 30m kube-controller-manager <none> 30m
معلومات جدولة kube-Scheduler و kube-controller-Manager في متجر
control-plane.alpha.kubernetes.io/leader
التوضيحي-
control-plane.alpha.kubernetes.io/leader
:
$ kubectl describe endpoints kube-scheduler -n kube-system Name: kube-scheduler Annotations: control-plane.alpha.kubernetes.io/leader= { "holderIdentity": "scheduler-2", "leaseDurationSeconds": 15, "acquireTime": "2018-01-01T08:00:00Z" "renewTime": "2018-01-01T08:00:30Z" }
على الرغم من أن Kubernetes يضمن أنه سيكون هناك سيد واحد في كل مرة ، إلا أن Kubernetes لا يضمن أن مكونين أو أكثر من مكونات المعالج لن
يعتقدوا خطأ أنهم يقودون حاليًا - تُعرف هذه الحالة باسم
انقسام الدماغ .
يمكن العثور على مناقشة مفيدة لموضوع انقسام الدماغ والحلول الممكنة في مقال
كيفية توزيع الموزع لـ Martin Kleppmann.
لا تستخدم Kubernetes أي إجراءات مضادة للدماغ المقسمة. بدلاً من ذلك ، يعتمد على قدرته على السعي من أجل الدولة المطلوبة بمرور الوقت ، مما يخفف من عواقب قرارات الصراع.
الخلاصة
في التكوين متعدد الأسس ، Kubernetes هو محرك تنسيق حاوية قابل للتطوير وموثوق به. في هذا التكوين ، يوفر Kubernetes الموثوقية باستخدام مجموعة متنوعة من المعالجات والعديد من العمال. يعمل العديد من الأساتذة على نمط السيد / العبد ، ويعمل العمال بالتوازي. Kubernetes لديها عملية اختيار المضيف الخاصة بها ، حيث يتم تخزين معلومات المضيف
ككائنات نقاط النهاية .
للحصول على معلومات حول كيفية إعداد مجموعة Kubernetes عالية التوفر للتشغيل ، راجع
الوثائق الرسمية .
حول النشر
هذا المنشور جزء من مبادرة مشتركة بين CNCF و Google و SAP لتحسين فهم Kubernetes ومفاهيمها الأساسية.ملاحظة من المترجم
اقرأ أيضا في مدونتنا: