نظرة عامة على التحجيم التلقائي لنظام المجموعة في خدمة Azure Kubernetes (AKS)
لمواكبة متطلبات التطبيق في Azure Kubernetes Service (AKS)، قد تحتاج إلى ضبط عدد العقد التي تشغل أحمال العمل الخاصة بك. يراقب مكون التحجيم التلقائي لنظام المجموعة وحدات الجراب في نظام المجموعة التي لا يمكن جدولتها بسبب قيود الموارد. عندما يكتشف مقياس المجموعة التلقائي القرون غير المجدولة، فإنه يقوم بزيادة عدد العقد في تجمع العقدة لتلبية طلب التطبيق. كما أنه يتحقق بانتظام من العقد التي لا تحتوي على أي جرابات مجدولة ويغير عدد العقد حسب الحاجة.
تساعدك هذه المقالة على فهم كيفية عمل مقياس المجموعة التلقائي في AKS. كما يوفر إرشادات وأفضل الممارسات والاعتبارات عند تكوين مقياس المجموعة التلقائي لأحمال عمل AKS الخاصة بك. إذا كنت ترغب في تمكين مقياس المجموعة التلقائي لأحمال عمل AKS أو تعطيله أو تحديثه، فقم بمراجعة استخدام مقياس المجموعة التلقائي في AKS.
عن مقياس المجموعة التلقائي
غالبا ما تحتاج المجموعات إلى طريقة لتغيير الحجم تلقائيا للتكيف مع متطلبات التطبيق المتغيرة، مثل بين أيام العمل والمساء أو عطلات نهاية الأسبوع. يمكن توسيع نطاق مجموعات AKS بالطرق التالية:
- يتحقق التحجيم التلقائي لنظام المجموعة بشكل دوري من القرون التي لا يمكن جدولتها على العقد بسبب قيود الموارد. ثم تزيد المجموعة من عدد العقد تلقائيًا. يتم تعطيل التحجيم اليدوي عند استخدام مقياس المجموعة التلقائي. لمزيد من المعلومات، راجع كيف يعمل توسيع النطاق؟.
- يستخدم التحجيم التلقائي للجراب الأفقي خادم المقاييس في مجموعة Kubernetes لمراقبة طلب الموارد من pods. إذا كان التطبيق يحتاج إلى المزيد من الموارد، يتم زيادة عدد الجرابات تلقائيًا لتلبية الطلب.
- يقوم التحجيم التلقائي للجراب العمودي تلقائيا بتعيين طلبات الموارد والحدود على الحاويات لكل حمل عمل استنادا إلى الاستخدام السابق لضمان جدولة الحجيرات على العقد التي تحتوي على موارد وحدة المعالجة المركزية والذاكرة المطلوبة.
من الممارسات الشائعة تمكين التحجيم التلقائي لنظام المجموعة للعقد وإما التحجيم التلقائي للجراب العمودي أو التحجيم التلقائي للجراب الأفقي للجرابات. عند تمكين مقياس المجموعة التلقائي، فإنه يطبق قواعد التحجيم المحددة عندما يكون حجم تجمع العقدة أقل من الحد الأدنى لعدد العقد، حتى الحد الأقصى لعدد العقد. ينتظر مقياس المجموعة التلقائي أن يدخل حيز التنفيذ حتى تكون هناك حاجة إلى عقدة جديدة في تجمع العقدة أو حتى يتم حذف عقدة بأمان من تجمع العقدة الحالي. لمزيد من المعلومات، راجع كيف يعمل تقليص الحجم؟
أفضل الممارسات والاعتبارات
- عند تنفيذ مناطق التوفر مع مقياس المجموعة التلقائي، نوصي باستخدام تجمع عقدة واحدة لكل منطقة. يمكنك تعيين المعلمة
--balance-similar-node-groups
إلىTrue
للحفاظ على توزيع متوازن للعقد عبر المناطق لأحمال العمل الخاصة بك أثناء عمليات توسيع النطاق. عندما لا يتم تنفيذ هذا النهج، يمكن أن تؤدي عمليات تقليص الحجم إلى تعطيل توازن العقد عبر المناطق. - بالنسبة للمجموعات التي بها أكثر من 400 عقدة، نوصي باستخدام Azure CNI أو تراكب Azure CNI.
- لتشغيل أحمال العمل بشكل فعال في نفس الوقت على كل من تجمعات العقد الثابتة والموضعية، ضع في اعتبارك استخدام موسعات الأولوية. يسمح لك هذا الأسلوب بجدولة pods استنادا إلى أولوية تجمع العقدة.
- توخي الحذر عند تعيين طلبات وحدة المعالجة المركزية/الذاكرة على pods. يتوسع مقياس المجموعة التلقائي استنادا إلى الحجيرات المعلقة بدلا من ضغط وحدة المعالجة المركزية/الذاكرة على العقد.
- بالنسبة للمجموعات التي تستضيف بشكل متزامن كل من أحمال العمل طويلة الأمد، مثل تطبيقات الويب، وأحمال العمل الوظيفية القصيرة / الاندفاعية، نوصي بفصلها إلى تجمعات عقد مميزة مع موسعات قواعد/الترابط أو استخدام PodDisruptionBudget للمساعدة في منع استنزاف العقد غير الضرورية أو تقليص العمليات. تحديد التعليق التوضيحي cluster-autoscaler.kubernetes.io/safe-to-evict: "خطأ" على مواصفات الجراب سيمنع أيضا إخلاء القرون. استخدم هذا التعليق التوضيحي بحذر، لأنه قد يتسبب في مواجهة التحجيم التلقائي لنظام المجموعة مشكلات عند استنزاف عقدة مع جراب قيد التشغيل يتضمن هذا التعليق التوضيحي.
- في تجمع عقدة ممكن للتحجيم التلقائي، قم بتقليل العقد عن طريق إزالة أحمال العمل، بدلا من تقليل عدد العقد يدويا. قد يكون هذا مشكلة إذا كان تجمع العقدة بالفعل بأقصى سعة أو إذا كانت هناك أحمال عمل نشطة تعمل على العقد، مما قد يتسبب في سلوك غير متوقع بواسطة مقياس المجموعة التلقائي.
- لا يتم توسيع العقد إذا كانت للقرون قيمة PriorityClass أقل من -10. الأولوية -10 محجوزة لوحدات التزويد الزائد. لمزيد من المعلومات، راجع استخدام مقياس المجموعة التلقائي مع Pod Priority وPreemption.
- لا تجمع بين آليات التحجيم التلقائي للعقدة الأخرى، مثل التحجيم التلقائي لمجموعة مقياس الجهاز الظاهري، مع مقياس المجموعة التلقائي.
- قد لا يتمكن التحجيم التلقائي لنظام المجموعة من تقليص الحجم إذا لم تتمكن pods من التحرك، كما هو الحال في الحالات التالية:
- جراب تم إنشاؤه مباشرة لا يدعمه كائن وحدة تحكم، مثل Deployment أو ReplicaSet.
- موازنة تعطيل الجراب (PDB) مقيدة للغاية ولا تسمح لعدد pods بالانهاء إلى أقل من حد معين.
- يستخدم جراب محددات عقد أو مانع ترابط لا يمكن تنفيذها إذا تم جدولتها على عقدة مختلفة. لمزيد من المعلومات، راجع ما هي أنواع الحجيرات التي يمكن أن تمنع أداة التحجيم التلقائي لنظام المجموعة من إزالة عقدة؟.
هام
لا تقم بإجراء تغييرات على العقد الفردية داخل تجمعات العقد ذات المقياس التلقائي. يجب أن تحتوي جميع العقد في نفس مجموعة العقدة على سعة موحدة وتسميات وملامح وقرون نظام تعمل عليها.
- مقياس المجموعة التلقائي غير مسؤول عن فرض "الحد الأقصى لعدد العقد" في تجمع عقدة نظام المجموعة بغض النظر عن اعتبارات جدولة الجراب. إذا قام أي ممثل مقياس تلقائي غير نظام المجموعة بتعيين عدد تجمع العقدة إلى رقم يتجاوز الحد الأقصى المكون لأداة التحجيم التلقائي لنظام المجموعة، فلن يزيل التحجيم التلقائي لنظام المجموعة العقد تلقائيا. تظل سلوكيات تقليص الحجم التلقائي لنظام المجموعة محددة النطاق لإزالة العقد التي لا تحتوي على جرابات مجدولة فقط. الغرض الوحيد من تكوين الحد الأقصى لعدد العقدة في مقياس المجموعة التلقائي هو فرض حد أعلى لعمليات توسيع النطاق. ليس له أي تأثير على اعتبارات تقليص الحجم.
ملف تعريف التحجيم التلقائي لنظام المجموعة
ملف تعريف مقياس المجموعة التلقائي هو مجموعة من المعلمات التي تتحكم في سلوك مقياس المجموعة التلقائي. يمكنك تكوين ملف تعريف مقياس المجموعة التلقائي عند إنشاء نظام مجموعة أو تحديث نظام مجموعة موجود.
تحسين ملف تعريف التحجيم التلقائي لنظام المجموعة
يجب عليك ضبط إعدادات ملف تعريف مقياس المجموعة التلقائي وفقا لسيناريوهات حمل العمل المحددة مع التفكير أيضا في المقايضات بين الأداء والتكلفة. يقدم هذا القسم أمثلة توضح هذه المفاضلات.
من المهم ملاحظة أن إعدادات ملف تعريف التحجيم التلقائي لنظام المجموعة على مستوى المجموعة ويتم تطبيقها على جميع تجمعات العقد الممكنة للتحجيم التلقائي. يمكن أن تؤثر أي إجراءات تحجيم تحدث في تجمع عقدة واحدة على سلوك التحجيم التلقائي لتجمعات العقد الأخرى، ما قد يؤدي إلى نتائج غير متوقعة. تأكد من تطبيق تكوينات ملف التعريف المتناسقة والمتزامنة عبر جميع تجمعات العقد ذات الصلة لضمان حصولك على النتائج المطلوبة.
مثال 1: التحسين للأداء
بالنسبة للمجموعات التي تتعامل مع أحمال العمل الكبيرة والاندفاعية مع التركيز الأساسي على الأداء، نوصي بزيادة scan-interval
وتقليل scale-down-utilization-threshold
. تساعد هذه الإعدادات في تجميع عمليات تحجيم متعددة في مكالمة واحدة، ما يؤدي إلى تحسين وقت التحجيم واستخدام حصص الحساب للقراءة/الكتابة. كما أنه يساعد على التخفيف من مخاطر تقليص العمليات بسرعة على العقد غير المستغلة بشكل جيد، ما يعزز كفاءة جدولة الجراب. قم أيضا بزيادة ok-total-unready-count
و max-total-unready-percentage
.
بالنسبة للمجموعات التي بها جرابات daemonset، نوصي بتعيين ignore-daemonsets-utilization
إلى true
، والذي يتجاهل استخدام العقدة بشكل فعال بواسطة وحدات الجراب daemonset ويقلل من عمليات تقليص الحجم غير الضرورية. راجع ملف التعريف لأحمال العمل الاندفاعية
مثال 2: التحسين للتكلفة
إذا كنت تريد ملف تعريف محسنا للتكلفة، نوصي بتعيين تكوينات المعلمات التالية:
- تقليل
scale-down-unneeded-time
، وهو مقدار الوقت الذي يجب أن تكون فيه العقدة غير مطلوبة قبل أن تكون مؤهلة للتحجيم. - تقليل
scale-down-delay-after-add
، وهو مقدار الوقت للانتظار بعد إضافة عقدة قبل النظر فيها لتقليص الحجم. - قم بزيادة
scale-down-utilization-threshold
، وهو حد الاستخدام لإزالة العقد. - زيادة
max-empty-bulk-delete
، وهو الحد الأقصى لعدد العقد التي يمكن حذفها في مكالمة واحدة. - تعيين
skip-nodes-with-local-storage
إلى خطأ. - قم بزيادة
ok-total-unready-count
وmax-total-unready-percentage
.
المشكلات الشائعة وتوصيات التخفيف
عرض حالات فشل التحجيم والأحداث التي لم يتم تشغيلها عبر CLI أو المدخل.
عدم تشغيل عمليات توسيع النطاق
أسباب شائعة | توصيات التخفيف من المخاطر |
---|---|
تعارضات ترابط عقدة PersistentVolume، والتي يمكن أن تنشأ عند استخدام مقياس المجموعة التلقائي مع مناطق توفر متعددة أو عندما تختلف منطقة وحدة التخزين أو وحدة التخزين الثابتة عن منطقة العقدة. | استخدم تجمع عقدة واحدة لكل منطقة توفر وتمكين --balance-similar-node-groups . يمكنك أيضا تعيين volumeBindingMode الحقل إلى WaitForFirstConsumer في مواصفات pod لمنع وحدة التخزين من ربطها بعقدة حتى يتم إنشاء جراب يستخدم وحدة التخزين. |
العيوب والتفاوتات/تعارضات ترابط العقدة | قم بتقييم العيوب المعينة للعقد الخاصة بك ومراجعة التفاوتات المحددة في pods الخاصة بك. إذا لزم الأمر، قم بإجراء تعديلات على العيوب والتفاوتات لضمان إمكانية جدولة القرون بكفاءة على العقد الخاصة بك. |
توسيع نطاق حالات فشل العملية
أسباب شائعة | توصيات التخفيف من المخاطر |
---|---|
استنفاد عنوان IP في الشبكة الفرعية | أضف شبكة فرعية أخرى في نفس الشبكة الظاهرية وأضف تجمع عقدة آخر إلى الشبكة الفرعية الجديدة. |
استنفاد الحصة النسبية الأساسية | تم استنفاد الحصة الأساسية المعتمدة. طلب زيادة الحصة النسبية. يدخل التحجيم التلقائي لنظام المجموعة حالة تراجع أسي داخل مجموعة عقدة معينة عندما يواجه العديد من محاولات توسيع النطاق الفاشلة. |
الحد الأقصى لحجم تجمع العقدة | قم بزيادة الحد الأقصى للعقد على تجمع العقدة أو إنشاء تجمع عقدة جديد. |
الطلبات/المكالمات تتجاوز حد السعر | راجع 429 أخطاء طلبات كثيرة جدا. |
تقليص حالات فشل العملية
أسباب شائعة | توصيات التخفيف من المخاطر |
---|---|
جراب يمنع استنزاف العقدة/غير قادر على إخلاء الجراب | • عرض أنواع الجرابات التي يمكن أن تمنع تقليص الحجم. • بالنسبة إلى pods التي تستخدم التخزين المحلي، مثل hostPath و emptyDir، قم بتعيين علامة skip-nodes-with-local-storage ملف تعريف مقياس المجموعة التلقائي إلى false . • في مواصفات الجراب، قم بتعيين التعليق التوضيحي cluster-autoscaler.kubernetes.io/safe-to-evict إلى true . • تحقق من PDB الخاص بك، لأنها قد تكون مقيدة. |
الحد الأدنى لحجم تجمع العقدة | تقليل الحد الأدنى لحجم تجمع العقدة. |
الطلبات/المكالمات تتجاوز حد السعر | راجع 429 أخطاء طلبات كثيرة جدا. |
عمليات الكتابة مؤمنة | لا تقم بإجراء أي تغييرات على مجموعة موارد AKS المدارة بالكامل (راجع نهج دعم AKS). قم بإزالة أو إعادة تعيين أي تأمين مورد قمت بتطبيقه مسبقا على مجموعة الموارد. |
مسائل أخرى
أسباب شائعة | توصيات التخفيف من المخاطر |
---|---|
PriorityConfigMapNotMatchedGroup | تأكد من إضافة جميع مجموعات العقد التي تتطلب تغيير الحجم التلقائي إلى ملف تكوين الموسع. |
تجمع العقدة في التراجع
تم تقديم تجمع العقدة في التراجع في الإصدار 0.6.2 ويتسبب في تراجع مقياس المجموعة التلقائي من تحجيم تجمع عقدة بعد فشل.
اعتمادا على المدة التي واجهت فيها عمليات التحجيم حالات فشل، قد يستغرق الأمر ما يصل إلى 30 دقيقة قبل إجراء محاولة أخرى. يمكنك إعادة تعيين حالة التراجع لتجمع العقدة عن طريق تعطيل ثم إعادة تمكين التحجيم التلقائي.
Azure Kubernetes Service