مشاركة عبر


تكوين تجمعات العقد للتوفير التلقائي للعقدة (NAP) في Azure Kubernetes Service (AKS)

توضح هذه المقالة كيفية تكوين تجمعات العقد للتوفير التلقائي للعقدة (NAP) في خدمة Azure Kubernetes (AKS)، بما في ذلك محددات SKU وحدود الموارد وأوزان الأولوية. كما يوفر أمثلة لمساعدتك على البدء.

نظرة عامة على تجمعات العقد في NAP

تستخدم NAP متطلبات SKU للجهاز الظاهري (VM) لتحديد أفضل الأجهزة الظاهرية لأحمال العمل المعلقة. يمكنك تكوين:

  • عائلات SKU وأنواع مثيلات محددة.
  • حدود الموارد والأولويات.
  • مثيلات فورية أو عند الطلب.
  • متطلبات الهندسة المعمارية والقدرات.

NodePool يقوم المورد بتعيين قيود على العقد التي ينشئها NAP والقرون التي تعمل على تلك العقد. عند تثبيت NAP لأول مرة ، فإنه يقوم بإنشاء ملف .NodePool يمكنك تعديل تجمع العقد هذا أو إنشاء تجمعات عقد إضافية لتناسب متطلبات حمل العمل الخاصة بك.

السلوكيات NodePools الرئيسية في NAP

عند تكوين NodePools NAP، ضع السلوكيات التالية في الاعتبار:

  • يتطلب NAP واحدا NodePool على الأقل لتعمل.
  • تقوم NAP بتقييم كل تكوين NodePool.
  • يتخطى NodePools NAP مع التلوث التي لا تتسامح معها الكبسولة.
  • تطبق 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، راجع المقالات التالية: