أفضل ممارسات المشغل - ميزات المجدول الأساسية في خدمات Azure Kubernetes (AKS)

أثناء إدارة المجموعات في Azure Kubernetes Service (AKS)، غالبًا ما تحتاج إلى عزل الفرق وأحمال العمل. جدولة Kubernetes يتيح لك التحكم في توزيع موارد الحوسبة، أو الحد من تأثير أحداث الصيانة.

تركز مقالة أفضل الممارسات هذه على ميزات جدولة Kubernetes الأساسية لمشغلي الكتلة. في هذه المقالة، ستتعرف على كيفية:

  • استخدام حصص الموارد لتوفير مقدار ثابت من الموارد للفرق، أو أعباء العمل
  • الحد من تأثير الصيانة المجدولة باستخدام الحدود المقبولة لتعطل وحدات البود (PDB)

فرض حصص الموارد النسبية

إرشادات أفضل الممارسات

تخطيط وتطبيق حصص نسبية للموارد على مستوى مساحة الاسم. إذا لم تحدد الحدود المقبولة لتعطل وحدات البود (PDB) طلبات الموارد وحدودها، فارفض النشر. مراقبة استخدام الموارد، وضبط الحصص النسبية حسب الحاجة.

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

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

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

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

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

يعين مثال بيان YAML التالي المسمى dev-app-team-quotas.yaml حدا صعبا يبلغ إجماليه 10 وحدات معالجة مركزية و20 غيغي بايت من الذاكرة و10 pods:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-app-team
spec:
  hard:
    cpu: "10"
    memory: 20Gi
    pods: "10"

يمكن تطبيق الحصة النسبية للمورد هذه عن طريق تحديد مساحة الاسم، مثل dev-apps:

kubectl apply -f dev-app-team-quotas.yaml --namespace dev-apps

العمل مع مطوري التطبيقات ومالكيها؛ لفهم احتياجاتهم، وتطبيق الحصص النسبية المناسبة للموارد.

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

خطة للتوافر باستخدام الحدود المقبولة لتعطل وحدات البود (PDB)

إرشادات أفضل الممارسات

للحفاظ على توفر التطبيقات، حدد الحدود المقبولة لتعطل وحدات البود (PDB)؛ للتأكد من توفر عدد أدنى من وحدات البود في نظام المجموعة.

هناك حدثان معطلان يتسببان في إزالة وحدات البود:

الاضطرابات غير الطوعية

الاضطرابات غير الطوعية هي أحداث خارجة عن التحكم النموذجي لمشغل نظام المجموعة أو مالك التطبيق. تضمين:

  • فشل الأجهزة على الجهاز الفعلي
  • ذعر النواة
  • حذف عقدة الجهاز الظاهري

يمكن التخفيف من الاضطرابات غير الطوعية من خلال:

  • استخدام نسخ متماثلة متعددة من وحدات البود الخاصة بك في عملية النشر.
  • تشغيل عقد متعددة في نظام المجموعة AKS.

الاضطرابات الطوعية

الاضطرابات الطوعية هي الأحداث التي يطلبها مشغل نظام المجموعة أو مالك التطبيق. تضمين:

  • ترقيات نظام المجموعة
  • قالب نشر محدث
  • حذف وحدة بود بطريق الخطأ

يوفر Kubernetes ميزانيات تعطيل الجراب للاضطرابات الطوعية، مما يتيح لك التخطيط لكيفية استجابة عمليات النشر أو مجموعات النسخ المتماثلة عند حدوث حدث تعطيل طوعي. باستخدام الحدود المقبولة لتعطل وحدات البود (PDB)، يمكن لمشغلي نظام مجموعة تحديد الحد الأدنى لعدد الموارد المتاحة، أو الحد الأقصى غير المتوفر.

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

دعونا ننظر إلى مثال على مجموعة النسخة المتماثلة مع خمسة وحدات بود التي تشغل NGINX. يتم تعيين التسمية app: nginx-frontendإلى pods في مجموعة النسخ المتماثلة . أثناء حدث تعطيل طوعي؛ مثل: ترقية نظام المجموعة، تريد التأكد من استمرار تشغيل ثلاث وحدات بود على الأقل. يحدد بيان YAML التالي لكائن PodDisruptionBudget هذه المتطلبات:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
   name: nginx-pdb
spec:
   minAvailable: 3
   selector:
    matchLabels:
      app: nginx-frontend

يمكنك أيضا تحديد نسبة مئوية، مثل 60٪، والتي تسمح لك بالتعويض تلقائيا عن مجموعة النسخ المتماثلة التي تعمل على زيادة عدد الحجيرات.

يمكنك تعريف الحد الأقصى لعدد المثيلات غير المتوفرة في مجموعة النسخ المتماثلة. مرة أخرى، يمكن أيضًا تحديد نسبة مئوية للحد الأقصى لوحدات البود غير متوفرة. يحدد بيان الحدود المقبولة لتعطل وحدات البود (PDB) التالي YAML أنه غير متوفر أكثر من اثنين من وحدات البود في مجموعة النسخ المتماثلة:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
   name: nginx-pdb
spec:
   maxUnavailable: 2
   selector:
    matchLabels:
      app: nginx-frontend

بمجرد تحديد الحدود المقبولة لتعطل وحدات البود (PDB) الخاصة بك، يمكنك إنشاؤها في مجموعة AKS الخاصة بك كما هو الحال مع أي كائن Kubernetes آخر:

kubectl apply -f nginx-pdb.yaml

العمل مع مطوري التطبيقات وأصحابها لفهم احتياجاتهم وتطبيق الحدود المقبولة لتعطل وحدات البود (PDB) المناسبة.

لمزيد من المعلومات حول استخدام ميزانيات تعطيل الجراب، راجع تحديد موازنة تعطيل للتطبيق الخاص بك.

الخطوات التالية

ركزت هذه المقالة على ميزات جدولة Kubernetes الأساسية. للحصول على مزيد من المعلومات حول عمليات مجموعة أجهزة الكمبيوتر في AKS، راجع أفضل الممارسات التالية: