إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
قد ترغب في تغيير حجم الأجهزة الظاهرية (VMs) لاستيعاب عدد متزايد من عمليات التوزيع أو لتشغيل حمل عمل أكبر. تغيير حجم مثيلات AKS مباشرة غير مدعوم عند استخدام مجموعات مقياس الجهاز الظاهري في AKS، كما هو موضح في نهج الدعم ل AKS:
تظهر عُقد وكيل AKS في مدخل Azure كموارد Azure IaaS عادية. ولكن يتم توزيع هذه الأجهزة الظاهرية في مجموعة موارد Azure المخصصة (عادةً ما تكون مسبوقة بـ MC_*). لا يمكنك إجراء تخصيصات مباشرة لهذه العقد باستخدام واجهات برمجة تطبيقات IaaS أو مواردها. لن تستمر أي تغييرات مخصصة لم يتم إجراؤها عبر واجهة برمجة تطبيقات AKS من خلال الترقية أو التوسع أو التحديث أو إعادة التشغيل.
في هذه المقالة، ستتعرف على الطريقة الموصى بها لتغيير حجم تجمع العقد عن طريق إنشاء تجمع عقد جديد بحجم SKU المطلوب، وتطويق العقد الموجودة واستنزافها، ثم إزالة تجمع العقد الموجودة.
هام
هذه الطريقة خاصة بمجموعات AKS المستندة إلى مجموعات مقياس الجهاز الظاهري. عند استخدام تجمعات العقد المستندة إلى الأجهزة الظاهرية، يمكنك بسهولة تحديث أحجام الأجهزة الظاهرية في تجمع عقد موجود باستخدام أمر Azure CLI واحد والحصول على أحجام متعددة للأجهزة الظاهرية في نفس تجمع العقد. لمزيد من المعلومات، راجع وثائق تجمعات عقدة الأجهزة الظاهرية.
إنشاء تجمع عقدة جديد مع SKU المطلوب
إشعار
كل كتلة من AKS يجب أن تحتوي على الأقل على مجموعة عقدة نظام مع على الأقل عقدة واحدة. في هذا المثال، نستخدم a --mode of System لإضافة تجمع عقدة النظام لاستبدال تجمع عقدة النظام الذي نريد تغيير حجمه. يمكنك تحديث وضع تجمع العقد في أي وقت. يمكنك أيضا إضافة تجمع عقدة مستخدم عن طريق التعيين --mode على.User
- Azure CLI
- Azure PowerShell
عند تغيير الحجم، تأكد من مراعاة جميع متطلبات حمل العمل، مثل مناطق التوفر، وتكوين تجمع عقدة VMSS وفقا لذلك. قد تحتاج إلى تعديل الأمر التالي ليناسب احتياجاتك على أفضل نحو. للحصول على قائمة كاملة بخيارات التكوين، راجع az aks nodepool add الصفحة المرجعية.
قم بإنشاء تجمع عقد جديد باستخدام الأمر
az aks nodepool add. في هذا المثال، نقوم بإنشاء تجمع عقد جديد،mynodepoolمع ثلاث عقد ووحدة SKU للجهازStandard_DS3_v2الظاهري لتحل محل تجمع عقد موجود،nodepool1يحتوي على وحدة SKU للجهازStandard_DS2_v2الظاهري.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name mynodepool \ --node-count 3 \ --node-vm-size Standard_DS3_v2 \ --mode System \ --no-waitيستغرق إنشاء تجمع العقدة الجديد بضع دقائق.
احصل على حالة تجمع العقد الجديد باستخدام الأمر
kubectl get nodes.kubectl get nodesيجب أن يشبه الإخراج المثال التالي ، حيث يعرض كلا من تجمع
mynodepoolالعقد الجديد وتجمعnodepool1العقد الحالي:NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 23m v1.21.9 aks-nodepool1-12345678-vmss000000 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 10d v1.21.9
تطويق العقد الموجودة
علامات التطويق على العقد المحددة على أنها غير قابلة للتحجيم وتمنع إضافة المزيد من الجرابات إلى العقد.
احصل على أسماء العقد التي تريد تطويقها باستخدام الأمر
kubectl get nodes.kubectl get nodesيجب أن يشبه الإخراج المثال التالي ، والذي يعرض العقد في تجمع
nodepool1العقد الحالي الذي تريد تطويقه:NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 7d21h v1.21.9قم بتطويق العقد الموجودة باستخدام
kubectl cordonالأمر ، وتحديد العقد المطلوبة في قائمة مفصولة بمسافات. على سبيل المثال:kubectl cordon aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي ، مما يوضح أن العقد مطوقة:
node/aks-nodepool1-12345678-vmss000000 cordoned node/aks-nodepool1-12345678-vmss000001 cordoned node/aks-nodepool1-12345678-vmss000002 cordoned
استنزاف العقد الموجودة
هام
لتصريف العقد بنجاح وإخلاء القرون قيد التشغيل، تأكد من أن أي PodDisruptionBudgets (PDBs) تسمح بنقل نسخة متماثلة واحدة على الأقل من pod في كل مرة. خلاف ذلك ، تفشل عملية التصريف / الإخلاء. للتحقق من ذلك، يمكنك التشغيل kubectl get pdb -A والتحقق من ALLOWED DISRUPTIONS أنه على الأقل 1 أو أعلى.
عند استنزاف العقد ، يتم إخلاء القرون التي تعمل عليها وإعادة إنشائها على العقد الأخرى القابلة للجدولة.
قم بتصريف العقد الموجودة باستخدام
kubectl drainالأمر مع--ignore-daemonsetsالعلامات وتحديد--delete-emptydir-dataالعقد المطلوبة في قائمة مفصولة بمسافة. على سبيل المثال:هام
مطلوب استخدام
--delete-emptydir-dataلإخلاء AKS التي تم إنشاؤهاcorednsوالجراباتmetrics-server. إذا لم تستخدم هذه العلامة، فستظهر لك خطأ. لمزيد من المعلومات، راجع الوثائق على emptydir.kubectl drain aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002 --ignore-daemonsets --delete-emptydir-dataبعد انتهاء عملية التصريف ، يجب تشغيل جميع الكبسولات (باستثناء الكبسولات التي تتحكم فيها مجموعات الديمون) على تجمع العقدة الجديد. يمكنك التحقق من ذلك باستخدام
kubectl get podsالأمر .kubectl get pods -o wide -A
استكشاف مشكلات إخلاء الجراب وإصلاحها
قد تواجه الخطأ التالي عند استنزاف العقد:
Error when evicting pods/[podname] -n [namespace] (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
بشكل افتراضي، تحتوي نظام المجموعة الخاص بك على ميزانيات تعطيل الجراب المدارة بواسطة AKS (مثل coredns-pdb أو ) مع ملف konnectivity-agentMinAvailable.1 على سبيل المثال ، إذا كان هناك جراب coredns قيد التشغيل ، فيمكن تعطيل واحد فقط في كل مرة. بينما يتم إعادة إنشاء أحدهم وغير متوفر ، لا يمكن إخلاء الكبسولة الأخرى coredns بسبب ميزانية تعطيل الكبسولة. يتم حل هذه المشكلة من تلقاء نفسها بعد جدولة الجراب الأولي coredns وتشغيله ، مما يسمح بإخلاء الجراب الثاني وإعادة إنشائه بشكل صحيح.
تلميح
ضع في اعتبارك تصريف العقد واحدة تلو الأخرى للحصول على تجربة إخلاء أكثر سلاسة ولتجنب الاختناق. لمزيد من المعلومات، راجع:
إزالة تجمع العقدة الموجود
هام
عند حذف تجمع عقدة، لا يقوم AKS بإجراء التطويق والاستنفاذ. لتقليل تعطيل إعادة جدولة الجرابات التي تعمل حاليا على تجمع العقدة التي تخطط لحذفها، قم بإجراء طوق وتصريف جميع العقد في تجمع العقدة قبل الحذف.
- Azure CLI
- Azure PowerShell
احذف تجمع العقدة الأصلي باستخدام الأمر
az aks nodepool delete.az aks nodepool delete \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1تحقق من أن نظام مجموعة AKS الخاص بك يحتوي فقط على تجمع العقدة الجديد مع التطبيقات والجراب التي تعمل بشكل صحيح باستخدام الأمر
kubectl get nodes.kubectl get nodesيجب أن يشبه الإخراج الخاص بك مثال الإخراج التالي ، حيث يعرض فقط تجمع
mynodepoolالعقدة الجديد:NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 63m v1.21.9
الخطوات التالية
بعد تغيير حجم تجمع عقدة عن طريق التطويق والاستنفاذ تعرف على المزيد بشأن استخدام تجمعات عقد متعددة.