مشاركة عبر


خيارات الترقية لمجموعات Azure Kubernetes Service (AKS)

تتناول هذه المقالة خيارات الترقية المختلفة لمجموعات AKS. لإجراء ترقية إصدار Kubernetes أساسية، راجع ترقية نظام مجموعة AKS.

بالنسبة إلى مجموعات AKS التي تستخدم تجمعات عقد متعددة أو عقد ملقم Windows، راجع ترقية تجمع عقدة في AKS. لترقية تجمع عقدة معين دون إجراء ترقية نظام مجموعة Kubernetes، راجع ترقية تجمع عقدة معين.

إجراء ترقيات يدوية

يمكنك إجراء ترقيات يدوية للتحكم في وقت ترقية نظام المجموعة إلى إصدار Kubernetes جديد. تكون الترقيات اليدوية مفيدة عندما تريد اختبار إصدار Kubernetes جديد قبل ترقية نظام مجموعة الإنتاج. يمكنك أيضا استخدام الترقيات اليدوية لترقية نظام المجموعة إلى إصدار Kubernetes معين ليس أحدث إصدار متوفر.

لإجراء ترقيات يدوية، راجع المقالات التالية:

تكوين الترقيات التلقائية

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

لتكوين الترقيات التلقائية، راجع المقالات التالية:

اعتبارات خاصة لتجمعات العقد التي تمتد عبر مناطق توفر متعددة

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

مطالبات وحدة التخزين الثابتة (PVCs) المدعومة من أقراص التخزين المكررة محليا (LRS) من Azure مرتبطة بمنطقة معينة وقد تفشل في الاسترداد على الفور إذا لم تتطابق عقدة الارتفاع المفاجئ مع منطقة PVC. إذا لم تتطابق المناطق، فقد يتسبب ذلك في توقف التطبيق الخاص بك عندما تستمر عملية الترقية في استنزاف العقد ولكن أجهزة الكمبيوتر الظاهرية مرتبطة بمنطقة. للتعامل مع هذه الحالة والحفاظ على قابلية الوصول العالية، قم بتكوين موازنة تعطيل الجراب على التطبيق الخاص بك للسماح ل Kubernetes باحترام متطلبات التوفر الخاصة بك أثناء عملية التصريف.

تحسين سلوك العقدة غير القابلة للإزالة (معاينة)

يمكنك تكوين سلوك عملية الترقية لحالات فشل الاستنزاف. سلوك الترقية الافتراضي هو Schedule، والذي يتكون من فشل استنزاف العقدة مما يؤدي إلى فشل عملية الترقية، تاركا العقد غير المكشوفة في حالة قابلة للمخططات. بدلا من ذلك، يمكنك تحديد Cordon السلوك، الذي يتخطى العقد التي تفشل في الاستنزاف عن طريق وضعها في حالة عزل، وتسميتها kubernetes.azure.com/upgrade-status:Quarantined، ومتابعة ترقية العقد المتبقية. يضمن هذا السلوك ترقية كافة العقد أو عزلها. يسمح لك هذا الأسلوب باستكشاف أخطاء فشل الاستنزاف وإصلاحها وإدارة العقد المعزولة بأمان.

كيف أعمل تعيين سلوك Cordon الجديد؟

استخدم معاينة CLI وتثبيت aks-preview الملحق 9.0.0b3 أو أحدث.

يمكنك استخدام الأوامر التالية لتحديث الملحق أو تثبيته aks-preview :

az extension update --name aks-preview
az extension add --name aks-preview

تحديث سلوك العقدة غير القابلة للدراية لتجمع العقدة إلى Cordon:

az aks nodepool update --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --resource-group $RESOURCE_GROUP --max-surge 1 --undrainable-node-behavior Cordon

يظهر إخراج المثال التالي سلوك العقدة غير القابلة للدراسة المحدثة:

"upgradeSettings": {
    "drainTimeoutInMinutes": null,
    "maxSurge": "1",
    "nodeSoakDurationInMinutes": null,
    "undrainableNodeBehavior": "Cordon"
  }

تحقق من التسمية على أي عقد محظورة. عند وجود فشل عقدة استنزاف عند الترقية باستخدام الأمر التالي:

kubectl get nodes --show-labels=true

العقد المحظورة غير مجدولة للقرون وتم وضع علامة عليها بالتسمية "kubernetes.azure.com/upgrade-status: Quarantined". لا يمكن أن يكون الحد الأقصى لعدد العقد التي يمكن تركها محظورة Max-Surge أكثر من القيمة.

ما الإجراء الذي يمكنني القيام به من هنا فصاعدا؟

قم أولا بحل المشكلة الأساسية التي تسبب الاستنزاف. يزيل المثال التالي PDB المسؤول:

kubectl delete pdb nginx-pdb
poddisruptionbudget.policy "nginx-pdb" deleted.

إذا كنت واثقا من أن المشكلة قد تم حلها الآن، فيمكنك المضي قدما وإزالة التسمية "kubernetes.azure.com/upgrade-status: Quarantined" الموضوعة على العقد غير القابلة للإزالة. يمكن القيام بذلك على النحو التالي:

kubectl label nodes <node-name> <label-key>-

ستحاول أي عملية لاحقة "PUT" التوفيق بين "حالة التوفير الفاشلة" على نظام المجموعة و"النجاح" أولا. لا يتم النظر في العقد المعزولة لأي وضع أو تسوية لاحقة. يجب عليك إزالة التسميات بشكل صريح كما ذكر سابقا لأي عقد محظورة للنظر فيها.

يمكنك أيضا حذف العقدة المحظورة az aks nodepool delete-machines باستخدام الأمر . هذا الأمر مفيد إذا كنت تنوي تقليل بصمة تجمع العقدة عن طريق إزالة العقد المتبقية في الإصدارات القديمة.

az aks nodepool delete-machines --cluster-name MyCluster --machine-names aks-nodepool1-test123-vmss000000 --name nodepool1 --resource-group TestRG

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

مثال على الأمر:

az aks update --resource-group TestRG --name MyCluster

بدلا من ذلك، يمكنك قياس تجمع العقدة إلى نفس عدد العقد مثل عدد العقد التي تمت ترقيتها. يضمن هذا الإجراء وصول تجمع العقدة إلى حجمه الأصلي المقصود. تعطي AKS الأولوية لإزالة العقد المحظورة. يستعيد هذا الأمر أيضا حالة توفير نظام المجموعة إلى Succeeded. في المثال المحدد، 2 هو العدد الإجمالي للعقد التي تمت ترقيتها.

az aks nodepool scale --resource-group TestRG --cluster-name MyCluster --name nodepool1 --node-count 2 

تحسين الترقيات لتحسين الأداء وتقليل الاضطرابات

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

  • تمكن نافذة الصيانة المخطط لها فرق الخدمة من جدولة الترقية التلقائية أثناء نافذة معرفة مسبقا، عادة ما تكون فترة حركة مرور منخفضة، لتقليل تأثير حمل العمل. نوصي بمدة نافذة لا تقل عن أربع ساعات.
  • يسمح Max Surge على تجمع العقدة بطلب حصة إضافية أثناء عملية الترقية ويحد من عدد العقد المحددة للترقية في وقت واحد. يؤدي ارتفاع الحد الأقصى للطفرة إلى عملية ترقية أسرع. لا نوصي بتعيينه على 100٪، لأنه يقوم بترقية جميع العقد في وقت واحد، مما قد يتسبب في حدوث اضطرابات في التطبيقات قيد التشغيل. نوصي بحصة زيادة الحد الأقصى بنسبة 33٪ لتجمعات عقد الإنتاج.
  • يتم تعيين موازنة تعطيل الجراب لتطبيقات الخدمة وتحد من عدد الحجيرات التي يمكن أن تتعطل أثناء الاضطرابات الطوعية، مثل ترقيات العقدة التي تسيطر عليها AKS. يمكن تكوينه كنسخ minAvailable متماثلة، ما يشير إلى الحد الأدنى لعدد جرابات التطبيق التي تحتاج إلى أن تكون نشطة، أو maxUnavailable نسخ متماثلة، ما يشير إلى الحد الأقصى لعدد جرابات التطبيق التي يمكن إنهاؤها، ما يضمن توفرا عاليا للتطبيق. راجع الإرشادات المقدمة لتكوين ميزانيات تعطيل الجراب (PDBs). يجب التحقق من صحة قيم PDB لتحديد الإعدادات التي تعمل بشكل أفضل لخدمتك المحددة.
  • تسمح لك مهلة استنزاف العقدة على تجمع العقدة بتكوين مدة الانتظار لإخلاء القرون والإنهاء بأمان لكل عقدة أثناء الترقية. هذا الخيار مفيد عند التعامل مع أحمال العمل طويلة الأمد. عند تحديد مهلة استنزاف العقدة (بالدقائق)، تحترم AKS انتظار ميزانيات تعطيل الجراب. إذا لم يتم تحديدها، تكون المهلة الافتراضية 30 دقيقة.
  • يساعد وقت نقع العقدة على ترقيات عقدة التقسيم المرحلي بطريقة خاضعة للرقابة ويمكن أن يقلل من وقت تعطل التطبيق أثناء الترقية. يمكنك تحديد وقت انتظار، ويفضل أن يكون قريبا إلى حد معقول من 0 دقائق قدر الإمكان، للتحقق من جاهزية التطبيق بين ترقيات العقدة. إذا لم يتم تحديدها، تكون القيمة الافتراضية 0 دقائق. يعمل وقت نقع العقدة مع الحد الأقصى للزيادة وخصائص مهلة استنزاف العقدة المتوفرة في تجمع العقدة لتقديم النتائج الصحيحة من حيث سرعة الترقية وتوافر التطبيق.

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

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