إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية استخدام تشوهات العقدة في نظام مجموعة Azure Kubernetes Service (AKS).
نظرة عامة
آلية جدولة AKS هي المسؤولة عن وضع القرون على العقد وتعتمد على مجدول Kubernetes المصدر، kube-scheduler. يمكنك تقييد pod للتشغيل على عقد معينة عن طريق إرفاق pods بمجموعة من العقد باستخدام ترابط العقدة أو عن طريق توجيه العقدة لصد مجموعة من القرون باستخدام تلوثات العقدة، والتي تتفاعل مع مجدول AKS.
تعمل صبغات العقدة عن طريق وضع علامة على عقدة بحيث يتجنب المجدول وضع pods معينة على العقد المميزة. يمكنك وضع التفاوتات على جراب للسماح للمجدول بجدولة هذا الجراب على عقدة ذات لون مطابق. تعمل العيوب والتفاوتات معا لمساعدتك في التحكم في كيفية وضع المجدول القرون على العقد. لمزيد من المعلومات، راجع مثال حالات استخدام العيوب والتفاوتات.
الصبغات هي أزواج قيم المفاتيح مع تأثير. هناك ثلاث قيم لحقل التأثير عند استخدام صبغات العقدة: NoExecuteو NoScheduleو.PreferNoSchedule
-
NoExecute: يتم إخلاء الحجيرات التي تعمل بالفعل على العقدة على الفور إذا لم يكن لديها تفاوت مطابق. إذا كان للجراب تفاوت مطابق، فقد يتم إخلاؤها إذاtolerationSecondsتم تحديدها. -
NoSchedule: يتم وضع الحجيرات التي لها تفاوت مطابق فقط على هذه العقدة. لا يتم إخلاء الجرابات الموجودة. -
PreferNoSchedule: يتجنب المجدول وضع أي جرابات لا تحتوي على تفاوت مطابق.
خيارات تلوث العقدة
هناك نوعان من صبغات العقد التي يمكن تطبيقها على عقد AKS الخاصة بك: تلوث العقدة وملامح تهيئة العقدة.
- تهدف تلوثات العقدة إلى البقاء بشكل دائم على العقدة لجدولة الحجيرات مع ترابط العقدة. لا يمكن إضافة تلوثات العقدة أو تحديثها أو إزالتها بالكامل باستخدام واجهة برمجة تطبيقات AKS.
- يتم وضع صبغات تهيئة العقدة على العقدة في وقت التمهيد والمقصود استخدامها مؤقتا، كما هو الحال في السيناريوهات التي قد تحتاج فيها إلى وقت إضافي لإعداد العقد الخاصة بك. يمكنك إزالة تلوث تهيئة العقدة باستخدام واجهة برمجة تطبيقات Kubernetes وليست مضمونة أثناء دورة حياة العقدة. ستظهر على النسخ المتماثلة الجديدة للعقدة عند توسيع نطاقها أو على جميع النسخ المتماثلة عند ترقية العقدة. إذا كنت ترغب في إزالة تلوث التهيئة تماما، يمكنك إزالتها باستخدام واجهة برمجة تطبيقات AKS بعد إلغاء تلوث العقد باستخدام واجهة برمجة تطبيقات Kubernetes. بمجرد إزالة صبغات التهيئة من مواصفات نظام المجموعة باستخدام واجهة برمجة تطبيقات AKS، لا تأتي العقد التي تم إنشاؤها حديثا بصبغات التهيئة هذه. إذا كان لون التهيئة لا يزال موجودا على العقد الموجودة، يمكنك إزالته بشكل دائم عن طريق تنفيذ عملية ترقية صورة العقدة.
إشعار
لا يمكن تعديل تشوهات العقدة والتسميات المطبقة باستخدام واجهة برمجة تطبيقات تجمع عقدة AKS من واجهة برمجة تطبيقات Kubernetes والعكس صحيح. لا يسمح بإجراء تعديلات على تشوهات النظام.
لا ينطبق هذا على صبغات تهيئة العقدة.
استخدام تشوهات العقدة
المتطلبات الأساسية
تفترض هذه المقالة أن لديك مجموعة AKS موجودة. إذا كنت بحاجة إلى نظام مجموعة AKS، يمكنك إنشاء مجموعة باستخدام Azure CLI أو Azure PowerShell أو مدخل Azure.
إنشاء تجمع عقدة مع تلوث عقدة
إنشاء تجمع عقدة مع تلوث باستخدام
az aks nodepool addالأمر واستخدام المعلمة--node-taintsلتحديدsku=gpu:NoScheduleلصبغة.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 1 \ --node-taints "sku=gpu:NoSchedule" \ --no-waitتحقق من حالة تجمع العقدة.
تحديث تجمع عقدة لإضافة تلوث عقدة
تحديث تجمع عقدة لإضافة لون عقدة
az aks nodepool updateباستخدام الأمر واستخدام المعلمة--node-taintsلتحديدsku=gpu:NoScheduleللصبغة.az aks nodepool update \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-taints "sku=gpu:NoSchedule" \ --no-waitتحقق من حالة تجمع العقدة.
استخدام صبغات تهيئة العقدة (معاينة)
هام
تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:
المتطلبات الأساسية والقيود
- تحتاج إلى إصدار
3.0.0b3Azure CLI أو تثبيته وتكوينه لاحقا. قم بتشغيلaz --versionللعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - يمكنك فقط تطبيق تلوث التهيئة عبر إنشاء نظام المجموعة أو الترقية عند استخدام واجهة برمجة تطبيقات AKS. إذا كنت تستخدم قالب ARM الذي سيؤدي إلى عملية مستوى نظام المجموعة المدارة، يمكنك تحديد صبغات تهيئة العقدة أثناء إنشاء تجمع العقدة وتحديثها. يتم حظر عمليات مستوى Agentpool عندما
NodeInitializationTaintsتكون موجودة في نص الطلب. - لا يمكنك تطبيق صبغات التهيئة على تجمعات عقد Windows باستخدام Azure CLI.
الحصول على بيانات اعتماد لمجموعتك
احصل على بيانات الاعتماد لنظام مجموعة AKS باستخدام
az aks get-credentialsالأمر .az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
تثبيت aks-preview امتداد Azure CLI
تسجيل أو تحديث ملحق aks-preview باستخدام
az extension addالأمر أوaz extension update.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
تسجيل NodeInitializationTaintsPreview العلامات المميزة
تسجيل علامة الميزة
NodeInitializationTaintsPreviewباستخدامaz feature registerالأمر .az feature register --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل.
تحقق من حالة التسجيل باستخدام
az feature showالأمر .az feature show --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"عندما تعكس الحالة Registered، قم بتحديث تسجيل موفر موارد Microsoft.ContainerService باستخدام
az provider registerالأمر .az provider register --namespace Microsoft.ContainerService
إنشاء نظام مجموعة بصبغة تهيئة عقدة
إنشاء نظام مجموعة مع تلوث تهيئة عقدة
az aks createباستخدام الأمر والمعلمة--node-initialization-taintsلتحديدsku=gpu:NoScheduleللصبغة.هام
تنطبق تهيئة العقدة التي تحددها على كافة تجمعات العقد في نظام المجموعة. لتطبيق لون التهيئة على عقدة معينة، يمكنك استخدام قالب ARM بدلا من CLI.
az aks create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --node-count 1 \ --node-init-taints "sku=gpu:NoSchedule" \ --generate-ssh-keysتحقق من حالة تجمع العقدة.
تحديث نظام مجموعة لإضافة تلوث تهيئة عقدة
تحديث نظام مجموعة لإضافة لون تهيئة عقدة
az aks updateباستخدام الأمر والمعلمة--node-initialization-taintsلتحديدsku=gpu:NoScheduleللصبغة.هام
عند تحديث نظام مجموعة مع تلوث تهيئة عقدة، تنطبق الصبغات على كافة تجمعات العقد في نظام المجموعة. إذا كانت العقد الخاصة بك تستخدم VMSS، فيمكنك عرض التحديثات على تلوثات تهيئة العقدة على العقدة بعد تحديث نموذج VMSS للعقدة (على سبيل المثال، بعد عملية ترقية إصدار صورة العقدة). لن تظهر تلوثات التهيئة على العقد حتى تحدث عملية تؤدي إلى تحديث نموذج VMSS.
az aks update \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --node-init-taints "sku=gpu:NoSchedule"تحقق من حالة تجمع العقدة.
تحقق من حالة تجمع العقدة
بعد تطبيق لون العقدة أو لون التهيئة، تحقق من حالة تجمع العقدة
az aks nodepool listباستخدام الأمر .az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAMEإذا قمت بتطبيق صبغات العقدة، يظهر إخراج المثال التالي أن
<node-pool-name>تجمع العقدة عبارةCreatingعن عقد مع المحددnodeTaints:[ { ... "count": 1, ... "name": "<node-pool-name>", "orchestratorVersion": "1.15.7", ... "provisioningState": "Creating", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]إذا قمت بتطبيق تصبغات تهيئة العقدة، يظهر إخراج المثال التالي أن
<node-pool-name>تجمع العقدة عبارةCreatingعن عقد مع المحددnodeInitializationTaints:[ { ... "count": 1, ... "name": "<node-pool-name>", "orchestratorVersion": "1.15.7", ... "provisioningState": "Creating", ... "nodeInitializationTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
تحقق من تعيين الصبغة على العقدة
تحقق من تلوث العقدة وملامح تهيئة العقدة في تكوين العقدة
kubectl describe nodeباستخدام الأمر .kubectl describe node $NODE_NAMEإذا قمت بتطبيق تلوث العقدة، يظهر إخراج المثال التالي أن
<node-pool-name>تجمع العقدة يحتوي علىTaintsالمحدد :[ ... Name: <node-pool-name> ... Taints: sku=gpu:NoSchedule ... ], ... ... ]
هام
إذا كانت العقد الخاصة بك تستخدم VMSS، فلن تكون تلوثات تهيئة العقدة مرئية على العقد الفعلية في نظام المجموعة الخاص بك حتى تحدث عملية تؤدي إلى تحديث نموذج VMSS (على سبيل المثال، ترقية إصدار Kubernetes أو ترقية إصدار صورة العقدة).
إزالة تشوهات العقدة
إزالة تلوث عقدة معين
قم بإزالة تشوهات العقدة
az aks nodepool updateباستخدام الأمر . يزيل الأمر المثال التالي تلوث العقدة"sku=gpu:NoSchedule"من تجمع العقدة.az aks nodepool update \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --node-taints ""
إزالة كافة تشوهات العقدة
قم بإزالة كافة تشوهات العقدة من تجمع عقدة
az aks nodepool updateباستخدام الأمر . يقوم الأمر المثال التالي بإزالة كافة تشوهات العقدة من تجمع العقدة.az aks nodepool update \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --name $NODE_POOL_NAME \ --node-taints ""
إزالة صبغات تهيئة العقدة
لديك الخيارات التالية لإزالة صبغات تهيئة العقدة من العقدة:
- إزالة صبغات تهيئة العقدة مؤقتا باستخدام واجهة برمجة تطبيقات Kubernetes. إذا قمت بإزالتها بهذه الطريقة، فستظهر الصبغات مرة أخرى بعد حدوث تحجيم العقدة أو الترقية. لا تزال العقد الجديدة تحتوي على تلوث تهيئة العقدة بعد التحجيم. تظهر صبغات تهيئة العقدة على جميع العقد بعد الترقية.
- أزل تهيئة العقدة بشكل دائم عن طريق إلغاء تلوث العقدة باستخدام واجهة برمجة تطبيقات Kubernetes، ثم إزالة الصبغة باستخدام واجهة برمجة تطبيقات AKS. بمجرد إزالة تشويهات التهيئة من مواصفات نظام المجموعة باستخدام واجهة برمجة تطبيقات AKS، لم تعد العقد التي تم إنشاؤها حديثا بعد إعادة رسم العمليات تحتوي على صبغات تهيئة.
عند إزالة كافة تكرارات تشويه التهيئة من النسخ المتماثلة لتجمع العقدة، قد يظهر لون التهيئة الحالي مرة أخرى بعد الترقية مع أي تلوث تهيئة جديد.
إزالة صبغات تهيئة العقدة مؤقتا
قم بإزالة تصبغات تهيئة العقدة مؤقتا باستخدام
kubectl taint nodesالأمر .يزيل هذا الأمر الصبغة من العقدة المحددة فقط. إذا كنت تريد إزالة الصبغة من كل عقدة في تجمع العقدة، تحتاج إلى تشغيل الأمر لكل عقدة تريد إزالة الصبغة منها.
kubectl taint nodes $NODE_POOL_NAME sku=gpu:NoSchedule-بمجرد إزالتها، تظهر تهيئة العقدة مرة أخرى بعد حدوث تحجيم العقدة أو ترقيتها.
إزالة تصبغات تهيئة العقدة بشكل دائم
اتبع الخطوات في إزالة تصبغ تهيئة العقدة مؤقتا لإزالة تلوث تهيئة العقدة باستخدام واجهة برمجة تطبيقات Kubernetes.
قم بإزالة الصبغة من العقدة باستخدام واجهة برمجة تطبيقات AKS باستخدام
az aks updateالأمر . يزيل هذا الأمر تلوث تهيئة العقدة من كل عقدة في نظام المجموعة.az aks update \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --node-init-taints ""
تحقق من إزالة الصبغة من العقدة
تحقق من تلوث العقدة وملامح تهيئة العقدة في تكوين العقدة
kubectl describe nodeباستخدام الأمر .kubectl describe node $NODE_NAMEإذا قمت بإزالة تلوث عقدة، يظهر إخراج المثال التالي أن
<node-pool-name>تجمع العقدة لا يحتوي على الصبغة التي تمت إزالتها ضمنTaints:[ ... Name: <node-pool-name> ... Taints: ... ], ... ... ]
الخطوات التالية
- تعرف على المزيد حول أمثلة حالات الاستخدام للملامح والتفاوتات.
- تعرف على المزيد حول أفضل الممارسات لميزات مجدول AKS المتقدمة.
- تعرف على المزيد حول تسميات Kubernetes في وثائق تسميات Kubernetes.