استخدام مقياس المجموعة التلقائي في خدمة Azure Kubernetes (AKS)

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

توضح هذه المقالة كيفية تمكين التحجيم التلقائي لنظام المجموعة وإدارته في AKS، والذي يستند إلى إصدار Kubernetes مفتوح المصدر.

قبل البدء

تتطلب هذه المقالة الإصدار 2.0.76 من Azure CLI أو أحدث. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

استخدام مقياس المجموعة التلقائي على نظام مجموعة AKS

هام

مقياس المجموعة التلقائي هو مكون من .Kubernetes على الرغم من أن مجموعة AKS تستخدم مجموعة مقياس جهاز ظاهري للعقد، لا تقم بتمكين الإعدادات أو تحريرها يدويا للتحجيم التلقائي لمجموعة التحجيم. دع مقياس كتلة Kubernetes التلقائي يدير إعدادات المقياس المطلوبة. لمزيد من المعلومات، راجع هل يمكنني تعديل موارد AKS في مجموعة موارد العقدة؟

تمكين مقياس المجموعة التلقائي على نظام مجموعة جديد

  1. إنشاء مجموعة موارد باستخدام az group create الأمر .

    az group create --name myResourceGroup --location eastus
    
  2. إنشاء نظام مجموعة AKS باستخدام az aks create الأمر وتمكين وتكوين مقياس المجموعة التلقائي على تجمع العقدة لنظام المجموعة باستخدام المعلمة --enable-cluster-autoscaler وتحديد عقدة --min-count و --max-count. يقوم الأمر المثال التالي بإنشاء نظام مجموعة مع عقدة واحدة مدعومة بمجموعة مقياس جهاز ظاهري، وتمكين مقياس المجموعة التلقائي، وتعيين واحد كحد أدنى والحد الأقصى من ثلاث عقد:

    az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --vm-set-type VirtualMachineScaleSets \
    --load-balancer-sku standard \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 3 \
    --generate-ssh-keys
    

    يستغرق بضع دقائق لإنشاء المجموعة وتكوين إعدادات مقياس المجموعة التلقائي.

تمكين أداة التحجيم التلقائي لنظام المجموعة على نظام مجموعة موجود

  • تحديث نظام مجموعة موجود باستخدام az aks update الأمر وتمكين وتكوين مقياس المجموعة التلقائي على تجمع العقدة باستخدام المعلمة --enable-cluster-autoscaler وتحديد عقدة --min-count و --max-count. يحدث الأمر المثال التالي مجموعة AKS موجودة لتمكين مقياس المجموعة التلقائي على تجمع العقدة للمجموعة وتعيين واحد كحد أدنى والحد الأقصى من ثلاث عقد:

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --enable-cluster-autoscaler \
      --min-count 1 \
      --max-count 3
    

    يستغرق بضع دقائق لتحديث الكتلة وتكوين إعدادات مقياس المجموعة التلقائي.

تعطيل مقياس المجموعة التلقائي على نظام مجموعة

  • تعطيل مقياس المجموعة التلقائي باستخدام az aks update الأمر والمعلمة --disable-cluster-autoscaler .

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --disable-cluster-autoscaler
    

    لا تتم إزالة العقد عند تعطيل مقياس المجموعة التلقائي.

إشعار

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

إعادة تمكين مقياس المجموعة التلقائي على نظام مجموعة

يمكنك إعادة تمكين مقياس المجموعة التلقائي على نظام مجموعة موجود باستخدام az aks update الأمر وتحديد --enable-cluster-autoscaler--min-countالمعلمات و و--max-count.

استخدام مقياس المجموعة التلقائي على تجمعات العقد

استخدام مقياس المجموعة التلقائي على تجمعات عقد متعددة

يمكنك استخدام مقياس المجموعة التلقائي مع تجمعات عقد متعددة ويمكن تمكين مقياس المجموعة التلقائي على كل تجمع عقدة فردية وتمرير قواعد التحجيم التلقائي الفريدة لهم.

  • تحديث الإعدادات على تجمع عقدة موجود باستخدام az aks nodepool update الأمر .

    az aks nodepool update \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --name nodepool1 \
      --update-cluster-autoscaler \
      --min-count 1 \
      --max-count 5
    

تعطيل مقياس المجموعة التلقائي على تجمع عقدة

  • تعطيل مقياس المجموعة التلقائي على تجمع عقدة az aks nodepool update باستخدام الأمر والمعلمة --disable-cluster-autoscaler .

    az aks nodepool update \
      --resource-group myResourceGroup \
      --cluster-name myAKSCluster \
      --name nodepool1 \
      --disable-cluster-autoscaler
    

إعادة تمكين مقياس المجموعة التلقائي على تجمع عقدة

يمكنك إعادة تمكين مقياس المجموعة التلقائي على تجمع عقدة باستخدام az aks nodepool update الأمر وتحديد --enable-cluster-autoscaler--min-countالمعلمات و و--max-count.

إشعار

إذا كنت تخطط لاستخدام مقياس المجموعة التلقائي مع تجمعات العقد التي تمتد عبر مناطق متعددة والاستفادة من ميزات الجدولة المتعلقة ب المناطق، مثل جدولة طوبولوجيا وحدة التخزين، نوصي بأن يكون لديك تجمع عقدة واحد لكل منطقة وتمكين --balance-similar-node-groups من خلال ملف تعريف مقياس تلقائي. وهذا يضمن أن التحجيم التلقائي يمكنه زيادة الحجم بنجاح والحفاظ على أحجام تجمعات العقد متوازنة.

تحديث إعدادات التحجيم التلقائي لنظام المجموعة

مع تغير متطلبات التطبيق الخاص بك، قد تحتاج إلى ضبط عدد عقدة التحجيم التلقائي لنظام المجموعة لتوسيع نطاقها بكفاءة.

  • قم بتغيير عدد العقد باستخدام az aks update الأمر وتحديث مقياس المجموعة التلقائي باستخدام المعلمة --update-cluster-autoscaler وتحديد العقدة --min-count المحدثة و --max-count.

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --update-cluster-autoscaler \
      --min-count 1 \
      --max-count 5
    

إشعار

يفرض مقياس المجموعة التلقائي الحد الأدنى للعدد في الحالات التي ينخفض فيها العدد الفعلي إلى أقل من الحد الأدنى بسبب عوامل خارجية، مثل أثناء الإخلاء الموضعي أو عند تغيير الحد الأدنى لقيمة العد من واجهة برمجة تطبيقات AKS.

استخدام ملف تعريف التحجيم التلقائي لنظام المجموعة

يمكنك تكوين المزيد من التفاصيل الدقيقة لأداة التحجيم التلقائي لنظام المجموعة عن طريق تغيير القيم الافتراضية في ملف تعريف التحجيم التلقائي على مستوى المجموعة. على سبيل المثال، حدث تقليص الحجم يحدث بعد أن يتم استخدام العقد بشكل أقل بعد 10 دقائق. إذا كان لديك أحمال عمل تعمل كل 15 دقيقة، فقد تحتاج إلى تغيير ملف تعريف التحجيم التلقائي لتوسيع نطاق العقد غير المستخدمة بشكل جيد بعد 15 أو 20 دقيقة. عند تمكين مقياس المجموعة التلقائي يتم استخدام ملف تعريف افتراضي إلا إذا قمت بتحديد إعدادات مختلفة.

هام

يؤثر ملف تعريف التحجيم التلقائي لنظام المجموعة على كافة تجمعات العقد التي تستخدم مقياس المجموعة التلقائي. لا يمكنك تعيين ملف تعريف مقياس تلقائي لكل تجمع عقدة. عند تعيين ملف التعريف، تبدأ أي تجمعات عقد موجودة مع تمكين التحجيم التلقائي لنظام المجموعة على الفور باستخدام ملف التعريف.

إعدادات ملف تعريف التحجيم التلقائي لنظام المجموعة

يسرد الجدول التالي الإعدادات المتوفرة لملف تعريف مقياس المجموعة التلقائي:

الإعدادات الوصف القيمة الافتراضية
scan-interval عدد المرات التي تتم فيها إعادة تقييم نظام المجموعة لتوسيع نطاقها أو تقليصها. 10 ثوان
scale-down-delay-after-add كم من الوقت بعد توسيع نطاق هذا التوسيع يستأنف التقييم. 10 دقيقة
scale-down-delay-after-delete كم من الوقت بعد حذف العقدة الذي يستأنف التقييم بتقليصه. scan-interval
scale-down-delay-after-failure كم من الوقت بعد تقليص الفشل الذي يستأنف التقييم بتقليصه. ثلاث دقائق
scale-down-unneeded-time كم من الوقت يجب أن تكون العقدة غير ضرورة قبل أن تكون مؤهلة للتحجيم. 10 دقيقة
scale-down-unready-time كم من الوقت يجب عدم الحاجة إلى عقدة غير مقروءة قبل أن تكون مؤهلة للتحجيم. 20 دقيقة
ignore-daemonsets-utilization (معاينة) ما إذا كان سيتم تجاهل وحدات الجراب DaemonSet عند حساب استخدام الموارد لتقليص الحجم. false
daemonset-eviction-for-empty-nodes (معاينة) ما إذا كان سيتم إنهاء pods DaemonSet بأمان من العقد الفارغة. false
daemonset-eviction-for-occupied-nodes (معاينة) ما إذا كان سيتم إنهاء pods DaemonSet بأمان من العقد غير الفارغة. true
scale-down-utilization-threshold مستوى استخدام العقدة، المحدد كمجموع الموارد المطلوبة مقسوما على السعة، حيث يمكن النظر في عقدة لتقليص الحجم. 0.5
max-graceful-termination-sec الحد الأقصى لعدد الثوان التي ينتظرها مقياس المجموعة التلقائي لإنهاء الجراب عند محاولة تقليص عقدة. 600 ثانية
balance-similar-node-groups يكتشف تجمعات العقد المماثلة ويوازن عدد العقد بينها. false
expander يستخدم نوع موسع تجمع العقدة في توسيع النطاق. تتضمن most-podsالقيم المحتملة و least-wasterandomو و.priority random
skip-nodes-with-local-storage إذا true، لا يحذف التحجيم التلقائي لنظام المجموعة العقد ذات الحجيرات ذات التخزين المحلي، على سبيل المثال، EmptyDir أو HostPath. false
skip-nodes-with-system-pods إذا true، فإن التحجيم التلقائي لنظام المجموعة لا يحذف العقد مع pods من kube-system (باستثناء DaemonSet أو pods المعكوسة). true
max-empty-bulk-delete الحد الأقصى لعدد العقد الفارغة التي يمكن حذفها في نفس الوقت. عشر عقد
new-pod-scale-up-delay بالنسبة لسيناريوهات مثل مقياس الاندفاع/الدفعة حيث لا تريد أن يعمل CA قبل أن يتمكن مجدول Kubernetes من جدولة جميع القرون، يمكنك إخبار CA بتجاهل القرون غير المجدولة قبل أن تصل إلى عمر معين. 0 ثانية
max-total-unready-percentage الحد الأقصى للنسبة المئوية للعقد غير الجاهزة في الكتلة. بعد تجاوز هذه النسبة المئوية، يوقف المرجع المصدق العمليات. 45%
max-node-provision-time الحد الأقصى للوقت الذي ينتظره التحجيم التلقائي لتوفير عقدة. 15 دقيقة
ok-total-unready-count عدد العقد غير المقروءة المسموح بها، بغض النظر عن النسبة المئوية القصوى الإجمالية غير المقروءة. ثلاث عقد

تعيين ملف تعريف التحجيم التلقائي لنظام المجموعة على نظام مجموعة جديد

  • إنشاء نظام مجموعة AKS باستخدام az aks create الأمر وتعيين ملف تعريف مقياس المجموعة التلقائي باستخدام المعلمة cluster-autoscaler-profile .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 1 \
        --enable-cluster-autoscaler \
        --min-count 1 \
        --max-count 3 \
        --cluster-autoscaler-profile scan-interval=30s \
        --generate-ssh-keys
    

تعيين ملف تعريف التحجيم التلقائي لنظام المجموعة على نظام مجموعة موجود

  • قم بتعيين مقياس المجموعة التلقائي على نظام مجموعة موجود باستخدام az aks update الأمر والمعلمة cluster-autoscaler-profile . يقوم المثال التالي بتكوين إعداد الفاصل الزمني للمسح الضوئي على شكل 30s:

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --cluster-autoscaler-profile scan-interval=30s
    

تكوين ملف تعريف أداة التحجيم التلقائي لنظام المجموعة للتحجيم الشديد

إشعار

لا يوصى بتقليص الحجم بقوة للمجموعات التي تواجه عمليات توسيع وتحجيم متكررة خلال فواصل زمنية قصيرة، حيث يمكن أن يؤدي ذلك إلى أوقات توفير عقدة موسعة في ظل هذه الظروف. يمكن أن تساعد الزيادة scale-down-delay-after-add في هذه الظروف عن طريق الاحتفاظ بالعقدة لفترة أطول للتعامل مع أحمال العمل الواردة.

 az aks update \
     --resource-group myResourceGroup \
     --name myAKSCluster \
     --cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m

تكوين ملف تعريف التحجيم التلقائي لنظام المجموعة لأحمال العمل الاندفاعية

 az aks update \   
     --resource-group "myResourceGroup" \
     --name myAKSCluster \ 
     --cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m

إعادة تعيين ملف تعريف مقياس تلقائي الكتلة إلى القيم الافتراضية

  • إعادة تعيين ملف تعريف التحجيم التلقائي لنظام المجموعة باستخدام az aks update الأمر .

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --cluster-autoscaler-profile ""
    

استرداد سجلات المقاييس التلقائية للكتلة وحالتها

يمكنك استرداد السجلات وتحديثات الحالة من مقياس المجموعة التلقائي للمساعدة في تشخيص أحداث التحجيم التلقائي وتصحيحها. تدير AKS مقياس المجموعة التلقائي نيابة عنك وتديره في مستوى التحكم المدار. يمكنك تمكين عقدة وحدة التحكم لمشاهدة السجلات والعمليات من مقياس المجموعة التلقائي.

  1. قم بإعداد قاعدة لسجلات الموارد لدفع سجلات التحجيم التلقائي لنظام المجموعة إلى Log Analytics باستخدام الإرشادات هنا. تأكد من تحديد المربع عند cluster-autoscaler تحديد خيارات السجلات.

  2. حدد قسم Log على نظام المجموعة الخاص بك.

  3. أدخل استعلام المثال التالي في Log Analytics:

    AzureDiagnostics
    | where Category == "cluster-autoscaler"
    

    طالما هناك سجلات لاستردادها، يجب أن تشاهد سجلات مشابهة للسجلات التالية:

    لقطة شاشة لسجلات Log Analytics.

  4. عرض مقياس التحجيم التلقائي للمجموعة لم يتم تشغيل الأحداث على CLI

    kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
    
  5. عرض أحداث تحذير التحجيم التلقائي لنظام المجموعة على CLI

    kubectl get events --field-selector source=cluster-autoscaler,type=Warning
    
  6. يقوم التحجيم التلقائي لنظام المجموعة أيضا بكتابة الحالة الصحية إلى مسمى configmap cluster-autoscaler-status. يمكنك استرداد هذه السجلات باستخدام الأمر التالي kubectl :

    kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml
    

لمزيد من المعلومات، راجع الأسئلة المتداولة حول مشروع Kubernetes/autoscaler GitHub.

مقاييس التحجيم التلقائي لنظام المجموعة

يمكنك تمكين مقاييس مستوى التحكم (معاينة) لمشاهدة السجلات والعمليات من مقياس المجموعة التلقائي باستخدام خدمة Azure Monitor المدارة للوظيفة الإضافية Prometheus

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

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

للمساعدة في تحسين استخدام موارد نظام المجموعة وتحرير وحدة المعالجة المركزية والذاكرة لوحدات الجراب الأخرى، راجع التحجيم التلقائي للجراب العمودي.