إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية تكوين تجمعات العقد للتوفير التلقائي للعقدة (NAP) في خدمة Azure Kubernetes (AKS)، بما في ذلك محددات SKU وحدود الموارد وأوزان الأولوية. كما يوفر أمثلة لمساعدتك على البدء.
نظرة عامة على تجمعات العقد في NAP
تستخدم NAP متطلبات SKU للجهاز الظاهري (VM) لتحديد أفضل الأجهزة الظاهرية لأحمال العمل المعلقة. يمكنك تكوين:
- عائلات SKU وأنواع مثيلات محددة.
- حدود الموارد والأولويات.
- مثيلات فورية أو عند الطلب.
- متطلبات الهندسة المعمارية والقدرات.
NodePool يقوم المورد بتعيين قيود على العقد التي ينشئها NAP والقرون التي تعمل على تلك العقد. عند تثبيت NAP لأول مرة ، فإنه يقوم بإنشاء ملف .NodePool يمكنك تعديل تجمع العقد هذا أو إنشاء تجمعات عقد إضافية لتناسب متطلبات حمل العمل الخاصة بك.
السلوكيات NodePools الرئيسية في NAP
عند تكوين NodePools NAP، ضع السلوكيات التالية في الاعتبار:
- يتطلب NAP واحدا
NodePoolعلى الأقل لتعمل. - تقوم NAP بتقييم كل تكوين
NodePool. - يتخطى
NodePoolsNAP مع التلوث التي لا تتسامح معها الكبسولة. - تطبق NAP تلوثات بدء التشغيل على العقد المتوفرة ولكنها لا تتطلب تحمل الجراب.
- يعمل NAP بشكل أفضل مع حصري
NodePoolsمتبادل. عند التطابق المتعددNodePools، فإنه يستخدم الشخص ذو الوزن.
مراجعة تكوين تجمع العقدة الافتراضي
تكوين Karpenter NodePool الافتراضي المسمى default الذي تم إنشاؤه بواسطة NAP هو كما يلي:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
template:
spec:
nodeClassRef:
name: default
expireAfter: Never
# Requirements that constrain the parameters of provisioned nodes.
# These requirements are combined with pod.spec.affinity.nodeAffinity rules.
# Operators { In, NotIn, Exists, DoesNotExist, Gt, and Lt } are supported.
# https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- key: kubernetes.io/os
operator: In
values:
- linux
- key: karpenter.sh/capacity-type
operator: In
values:
- on-demand
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
كما أنه ينشئ تجمع عقدة system-surge ، مما يساعد على التحجيم التلقائي لعقد تجمع النظام.
التحكم في تكوين تجمع العقد الافتراضي أثناء إنشاء نظام المجموعة
عند إنشاء مجموعة AKS جديدة ممكنة باستخدام NAP باستخدام Azure CLI، يمكنك تضمين العلامة --node-provisioning-default-pools للتحكم في تكوين NAP NodePoolالافتراضي.
تتحكم العلامة --node-provisioning-default-pools في تكوين NAP NodePool الافتراضي وتقبل القيم التالية:
-
Auto(افتراضي): ينشئ معيارينNodePoolsللاستخدام الفوري. -
Noneلا ينشئ أيNodePools. يجب أن تحدد بنفسك.
تحذير
التغيير من Auto إلى None: إذا قمت بتغيير الإعداد من Auto إلى None على نظام مجموعة موجود، فلن يتم حذف الإعداد الافتراضي NodePools تلقائيا. يجب حذفها يدويا إذا لم تعد بحاجة إليها.
خيارات تكوين تجمع العقدة
توضح الأقسام التالية خيارات التكوين المختلفة في NodePools NAP، بما في ذلك التسميات المعروفة ومحددات SKUوحدود تجمع العقدوأوزان تجمع العقد.
الملصقات المعروفة ومحددات SKU
يحدد Kubernetes التسميات المعروفة التي ينفذها Azure. يمكنك تحديد هذه التسميات في spec.requirements قسم واجهة NodePool برمجة التطبيقات. يدعم NAP أيضا التسميات الخاصة ب Azure لجدولة أكثر تقدما.
karpenter.azure.com محددات SKU
يسرد karpenter.azure.com الجدول التالي محددات SKU التي يمكنك استخدامها في spec.requirements قسم واجهة برمجة التطبيقات لتحديد NodePool خصائص الجهاز الظاهري للعقد الخاصة بك:
| Selector | الوصف | مثال |
|---|---|---|
karpenter.azure.com/sku-family |
عائلة VM SKU | د ، و و ، ل ، إلخ. |
karpenter.azure.com/sku-name |
اسم SKU الصريح | Standard_A1_v2 |
karpenter.azure.com/sku-version |
إصدار SKU (بدون "v" ، يمكن استخدام 1) | 1، 2 |
karpenter.sh/capacity-type |
نوع تخصيص الجهاز الظاهري (فوري / عند الطلب) | بقعه |
karpenter.azure.com/sku-cpu |
عدد وحدات المعالجة المركزية في الجهاز الظاهري | 16 |
karpenter.azure.com/sku-memory |
الذاكرة في الجهاز الظاهري في MiB | 131072 |
kubernetes.azure.com/sku-cpu |
عدد وحدات المعالجة المركزية في الجهاز الظاهري | 16 |
kubernetes.azure.com/sku-memory |
الذاكرة في الجهاز الظاهري في MiB | 131072 |
karpenter.azure.com/sku-gpu-name |
اسم وحدة معالجة الرسومات | A100 |
karpenter.azure.com/sku-gpu-manufacturer |
الشركة المصنعة لوحدة معالجة الرسومات | نفيديا |
karpenter.azure.com/sku-gpu-count |
عدد وحدات معالجة الرسومات لكل جهاز ظاهري | 2 |
karpenter.azure.com/sku-networking-accelerated |
ما إذا كان الجهاز الظاهري قد سرع الشبكات | [صحيح ، خطأ] |
karpenter.azure.com/sku-storage-premium-capable |
ما إذا كان الجهاز الظاهري يدعم تخزين الإدخال والإخراج المتميز | [صحيح ، خطأ] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
الحد الأقصى لحجم قرص نظام التشغيل (OS) سريع الزوال بالجيجابايت | 92 |
kubernetes.io ملصقات معروفة
يسرد الجدول التالي التسميات kubernetes.io المعروفة التي يمكنك استخدامها في spec.requirements قسم واجهة برمجة التطبيقات لتحديد NodePool خصائص العقدة للعقد الخاصة بك:
| تسمية | الوصف | مثال |
|---|---|---|
topology.kubernetes.io/zone |
مناطق التوافر | [uksouth-1، uksouth-2، uksouth-3] |
kubernetes.io/os |
نظام التشغيل | لينكس |
kubernetes.io/arch |
بنية وحدة المعالجة المركزية (AMD64 أو ARM64) | [amd64, arm64] |
أمثلة على عائلة SKU
karpenter.azure.com/sku-family يسمح لك المحدد باستهداف عائلات VM محددة.
| العائلة | الوصف |
|---|---|
| D-series | الأجهزة الظاهرية للأغراض العامة مع نسبة متوازنة من وحدة المعالجة المركزية إلى الذاكرة |
| F-series | أجهزة افتراضية محسنة للحوسبة مع نسبة عالية من وحدة المعالجة المركزية إلى الذاكرة |
| السلسلة الإلكترونية | أجهزة ظاهرية محسنة للذاكرة للتطبيقات كثيفة الذاكرة |
| السلسلة L | أجهزة ظاهرية محسنة للتخزين مع معدل نقل قرص مرتفع |
| سلسلة N | الأجهزة الظاهرية التي تدعم وحدة معالجة الرسومات لأحمال العمل كثيفة الحوسبة |
مثال على التكوين باستخدام عائلة SKU:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
أمثلة على اسم SKU
karpenter.azure.com/sku-name يسمح لك المحدد بتحديد نوع مثيل الجهاز الظاهري بالضبط.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
أمثلة على إصدار SKU
karpenter.azure.com/sku-version يستهدف المحدد أجيالا محددة من وحدات SKU للجهاز الظاهري.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
مثال على منطقة التوفر
topology.kubernetes.io/zone يسمح لك المحدد بتحديد مناطق التوفر للعقد الخاصة بك.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Note
يمكنك العثور على المناطق المتوفرة لمنطقتك باستخدام az account list-locations --output table الأمر Azure CLI.
مثال على الهندسة المعمارية
kubernetes.io/arch يسمح لك المحدد بتحديد بنية وحدة المعالجة المركزية للعقد الخاصة بك. يدعم NAP كلا من amd64 العقد arm64 .
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
مثال على نظام التشغيل
يسمح لك kubernetes.io/os المحدد بتحديد نظام التشغيل للعقد الخاصة بك.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
مثال على نوع السعة
يسمح لك karpenter.sh/capacity-type المحدد بتحديد ما إذا كنت تريد استخدام مثيلات Spot أو عند الطلب.
Note
تعطي NAP الأولوية لمثيلات Spot عند تحديد كل من Spot وعند الطلب.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
حدود تجمع العقدة
بشكل افتراضي، تحاول NAP جدولة أحمال العمل الخاصة بك ضمن حصة Azure المتوفرة لديك. يمكنك أيضا تحديد الحد الأعلى للموارد التي يستخدمها تجمع العقدة عن طريق تحديد حدود ضمن مواصفات تجمع العقدة. على سبيل المثال:
spec:
# Resource limits constrain the total size of the cluster.
# Limits prevent Node Auto Provisioning from creating new instances once the limit is exceeded.
limits:
cpu: "1000"
memory: 1000Gi
أوزان تجمع العقدة
عندما يكون لديك تجمعات عقد متعددة محددة، يمكنك تعيين تفضيل للمكان الذي يجب جدولة حمل العمل فيه عن طريق تحديد الوزن النسبي في تعريفات تجمع العقد. على سبيل المثال:
spec:
# Priority given to the node pool when the scheduler considers which to select.
# Higher weights indicate higher priority when comparing node pools.
# Specifying no weight is equivalent to specifying a weight of 0.
weight: 10
الخطوات التالية
لمزيد من المعلومات حول التوفير التلقائي للعقدة في AKS، راجع المقالات التالية: