استخدام تشوهات العقدة في نظام مجموعة Azure Kubernetes Service (AKS)
توضح هذه المقالة كيفية استخدام تشوهات العقدة في نظام مجموعة 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.0b3
Azure CLI أو تثبيته وتكوينه لاحقا. قم بتشغيلaz --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - يمكنك فقط تطبيق تلوث التهيئة عبر إنشاء نظام المجموعة أو الترقية عند استخدام واجهة برمجة تطبيقات AKS. إذا كنت تستخدم قوالب ARM، يمكنك تحديد علامات تهيئة العقدة أثناء إنشاء تجمع العقدة وتحديثها.
- لا يمكنك تطبيق صبغات التهيئة على تجمعات عقد 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
للصبغة.هام
عند تحديث نظام مجموعة مع تلوث تهيئة عقدة، تنطبق الصبغات على كافة تجمعات العقد في نظام المجموعة. يمكنك عرض تحديثات لتهيئة العقدة على العقدة بعد عملية إعادة الرسم.
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 ... ], ... ... ]
إزالة تشوهات العقدة
إزالة تلوث عقدة معين
قم بإزالة تشوهات العقدة
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 "sku=gpu:NoSchedule"
إزالة كافة تشوهات العقدة
قم بإزالة كافة تشوهات العقدة من تجمع عقدة
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.
Azure Kubernetes Service