تكوين موارد AKSNodeClass للتزويد التلقائي للعقدة (NAP) في خدمة Azure Kubernetes ‏(AKS)

تشرح هذه المقالة كيفية تكوين موارد AKSNodeClass لتعريف إعدادات Azure خاصة بالتوفير التلقائي للعقد (NAP) في خدمة Azure Kubernetes ‏(AKS) باستخدام Karpenter. AKSNodeClass يسمح لك بتخصيص جوانب مختلفة من العقد التي يوفرها Karpenter، مثل صورة الجهاز الظاهري (VM) وحجم قرص نظام التشغيل (OS) والحد الأقصى للجراب لكل عقدة وتكوينات kubelet.

Important

ابتداء من 30 نوفمبر 2025، لم يعد خدمة Azure Kubernetes ‏(AKS) يدعم أو يوفر تحديثات الأمان ل Azure Linux 2.0. صورة عقدة لينكس 2.0 Azure متجمدة عند إصدار 202512.06.0. ابتداء من 31 مارس 2026، سيتم إزالة صور العقد، ولن تتمكن من توسيع مجموعات العقد الخاصة بك. انتقل إلى نسخة مدعومة Azure لينكس عن طريق ترقية مجموعات العقد إلى نسخة Kubernetes مدعومة أو الانتقال إلى osSku AzureLinux3. لمزيد من المعلومات، راجع Retirement GitHub issue وتحديث Azure إعلان التقاعد. للبقاء على اطلاع بالإعلانات والتحديثات، تابع ملاحظات الإصدار AKS.

نظرة عامة على موارد AKSNodeClass

موارد AKSNodeClass تتيح لك تكوين إعدادات Azure الخاصة ب NAP. يجب أن يشير كل NodePool مورد إلى AKSNodeClass استخدام spec.template.spec.nodeClassRef. يمكنك أن يكون لديك عدة NodePools تشير إلى نفس AKSNodeClass، مما يسمح لك بمشاركة تكوينات Azure مشتركة عبر مجموعات عقد مختلفة.

تكوين عائلة الصور

يحدد imageFamily الحقل صورة الآلة الافتراضية ومنطق الإقلاع للعقد التي يتم تخصيصها عبر .AKSNodeClass إذا لم تحدد عائلة صور، يتم استخدام نسخة نظام التشغيل الافتراضية وفقا لإصدار Kubernetes الخاص بك. يتم دعم وحدات معالجة الرسومات مع كلتا عائلات الصور على أحجام الأجهزة الظاهرية المتوافقة. لمزيد من المعلومات حول النسخة الافتراضية لنظام التشغيل حسب إصدار Kubernetes، راجع وثائق إصدار نظام التشغيل AKS.

عائلات الصور المدعومة

  • Ubuntu: أوبونتو هو التوزيع الافتراضي للينكس لعقد AKS.
    • تتغير إعدادات إصدار OS بناء على نسخة Kubernetes الخاصة بك. أوبونتو 22.04 هو الافتراضي لإصدارات كوبيرنتيز من 1.25 إلى 1.33. أوبونتو 24.04 هو الافتراضي لإصدارات كوبرنيتس 1.34 وما بعدها.
  • AzureLinux: Azure Linux هو التوزيع البديل للينكس Microsoft لأحمال عمل AKS. لمزيد من المعلومات، راجع وثائق Azure Linux.

مثال على تكوين عائلة الصور

يقوم المثال التالي بتكوين مجموعة AKSNodeClass الصور لاستخدامها AzureLinux :

spec:
  imageFamily: AzureLinux

تكوين صورة العقدة المتوافق مع FIPS

يمكنك أيضا تفعيل صور العقد المتوافقة مع معايير معالجة المعلومات الفيدرالية (FIPS). لمزيد من المعلومات حول FIPS في AKS، راجع توثيق FIPS.

يتم تعيين الحقل fipsMode افتراضيا على "معطل"، ويمكن تعيينه على الخيارات التالية:

  • FIPS - اختيار صور العقد المتوافقة مع FIPS
  • معطلة - لا تستخدم صور العقد المتوافقة مع FIPS

المثال التالي يضبط 'AKSNodeClass' لاختيار صور العقد المتوافقة مع FIPS عن طريق التعيين fipsMode إلى FIPS:

spec:
  fipsMode: FIPS

تدفق القطع الأثرية

يسمح لك Artifact Streaming ببث صور الحاوية من Azure Container Registry (ACR) إلى خدمة Azure Kubernetes ‏(AKS). تسحب AKS الطبقات الضرورية فقط لبدء تشغيل pod الأولي، ما يقلل من الوقت المستغرق لتوزيع أحمال العمل الخاصة بك.

المتطلبات المسبقه

  • يتطلب تدفق البيانات الاصطناعية أن يكون لديك ACR الطبقة المتميزة المتكاملة مع مجموعة AKS الخاصة بك.
  • يجب تمكين تدفق البيانات الاصطناعية في ACR.

راجع وثائق Artifact Streaming للحصول على إرشادات حول تمكين Artifact Streaming في ACR.

تمكين تدفق البيانات الاصطناعية في مجموعات NAP

يمكن للمجموعات التي تم تمكين التزويد التلقائي للعقدة (NAP) تمكين تدفق البيانات الاصطناعية باستخدام spec.artifactStreaming.enabled حقل AKSNodeClass CRD. قم بتعيين هذا الحقل إلى true لتمكين تدفق البيانات الاصطناعية لأي عقد جديدة أو موجودة مدارة بواسطة NAP مقترنة ب AKSNodeClass CRD هذا.

apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
  name: my-node-class
spec:
  # Enables artifact streaming; To use this feature container images must also enable artifact streaming on ACR
  # Valid values: true, false; defaults to false if not specified
  artifactStreaming:
    enabled: 
      true

ملحوظة

لاستخدام تدفق البيانات الاصطناعية على العقد المدارة AKS NAP، يجب عليك أيضا تمكين تدفق البيانات الاصطناعية في Azure Container Registry (ACR). إذا لم تقم بتعيين هذا الخيار في ACR، فسيتم تعيين الحقل افتراضيا إلى خطأ.

تكوين الشبكة الفرعية للشبكة الظاهرية (VNet)

يحدد حقل vnetSubnetID أي شبكة فرعية Azure VNet يجب استخدامها لتوفير واجهات شبكة العقد. هذا الحقل اختياري. إذا لم تحدد شبكة فرعية، تستخدم NAP الشبكة الفرعية الافتراضية التي تم تكوينها أثناء تثبيت Karpenter. لمزيد من المعلومات، راجع تكوينات الشبكة الفرعية ل NAP.

مثال على تكوين الشبكة الفرعية

يجب أن يكون معرف الشبكة الفرعية بصيغة Azure Resource Manager (ARM) الكاملة، كما هو موضح في المثال التالي:

spec:
  vnetSubnetID: "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/virtualNetworks/{vnet-name}/subnets/{subnet-name}"

تكوين حجم قرص نظام التشغيل

يحدد الحقل osDiskSizeGB حجم قرص نظام التشغيل بالجيجابايت. القيمة الافتراضية هي 128 جيجابايت، والحد الأدنى للقيمة هو 30 غيغابايت.

ضع في اعتبارك أحجام أقراص نظام التشغيل الأكبر لأحمال العمل التي:

  • تخزين البيانات المهمة محليا.
  • تتطلب مساحة إضافية لصور الحاوية.
  • لديك متطلبات إدخال / إخراج عالية للقرص.

مثال على تكوين حجم قرص نظام التشغيل

spec:
  osDiskSizeGB: 256  # 256 GB OS disk

تكوين قرص نظام التشغيل سريع الزوال

تستخدم NAP تلقائيا أقراص نظام التشغيل سريعة الزوال عندما تكون متوفرة ومناسبة لحجم القرص المطلوب. توفر أقراص نظام التشغيل سريعة الزوال أداء أفضل وتكلفة أقل مقارنة بالأقراص المدارة.

معايير اختيار القرص سريع الزوال

يختار النظام تلقائيا الأقراص سريعة الزوال في السيناريوهات التالية:

  • يدعم نوع مثيل الجهاز الظاهري أقراص نظام التشغيل سريع الزوال.
  • سعة القرص سريع الزوال أكبر من أو تساوي المطلوب osDiskSizeGB.
  • يتمتع الجهاز الظاهري بسعة تخزين سريعة الزوال كافية.

إذا لم يتم استيفاء هذه الشروط، فسيعود النظام إلى استخدام الأقراص المدارة.

أنواع الأقراص سريعة الزوال وتحديد الأولويات

يمكن أن تحتوي أجهزة Azure الافتراضية على أنواع مختلفة من التخزين المؤقت. يستخدم النظام ترتيب الأولوية التالي:

  • أقراص NVMe (أعلى أداء)
  • أقراص ذاكرة التخزين المؤقت (أداء متوازن)
  • أقراص الموارد (الأداء الأساسي)

مثال على تكوين القرص سريع الزوال

يمكنك استخدام متطلبات تجمع العقد للتأكد من أن العقد لديها سعة قرص سريعة الزوال كافية، كما هو موضح في المثال التالي:

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: ephemeral-disk-pool
spec:
  template:
    spec:
      requirements:
        - key: karpenter.azure.com/sku-storage-ephemeralos-maxsize
          operator: Gt
          values: ["128"]  # Require ephemeral disk larger than 128 GB
      nodeClassRef:
        group: karpenter.azure.com
        kind: AKSNodeClass
        name: my-node-class
---
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
  name: my-node-class
spec:
  osDiskSizeGB: 128  # This will use ephemeral disk if available and large enough

يضمن هذا التكوين تحديد أنواع مثيلات الجهاز الظاهري فقط ذات الأقراص سريعة الزوال التي يزيد حجمها عن 128 غيغابايت، مما يضمن استخدام القرص سريع الزوال لحجم قرص نظام التشغيل المحدد.

الحد الأقصى لتكوين الجرابونات

يحدد الحقل maxPods الحد الأقصى لعدد الجرابات التي يمكن جدولتها على عقدة. يؤثر هذا الإعداد على كل من كثافة نظام المجموعة وتكوين الشبكة.

الحد الأدنى لقيمة ل maxPods هو 10، والحد الأقصى للقيمة هو 250.

السلوك الافتراضي ل maxPods

يعتمد السلوك الافتراضي ل maxPods على تكوين المكون الإضافي للشبكة. يلخص الجدول التالي الإعدادات الافتراضية:

تكوين المكون الإضافي للشبكة الافتراضي maxPods لكل عقدة
Azure CNI مع الشبكات القياسية (v1 أو NodeSubnet) 30
Azure CNI مع شبكات التراكيب 250
لا شيء (لا يوجد مكون إضافي للشبكة) 250
تكوينات أخرى 110 (الإعداد الافتراضي القياسي ل Kubernetes)

مثال على تكوين الحد الأقصى للجراب

spec:
  maxPods: 50  # Allow up to 50 pods per node

تكوين LocalDNS

يقوم LocalDNS بنشر وكيل DNS على مستوى العقدة الذي يحل استعلامات DNS بالقرب من أعباء العمل، مما يقلل من زمن استجابة الاستعلام ويحسن المرونة أثناء الاضطرابات المؤقتة في DNS. لمزيد من المعلومات، راجع وثائق LocalDNS. افتراضيا، يتم تعيين LocalDNS على معطل ويمكن تكوينه على الخيارات التالية:

  • Disabled (الافتراضي) - يعطل ميزة LocalDNS. استفسارات DNS لا تحل محليا على العقدة.
  • Preferred - تدير AKS تمكين LocalDNS بناء على نسخة Kubernetes من تجمع العقد. يتم التحقق من صحة التكوين وتضمينه دائما، ولكن لا يتم تمكين LocalDNS ما لم يتم استخدام إصدار Kubernetes الصحيح.
  • Required - يتم تطبيق LocalDNS على تجمع العقد إذا تم استيفاء جميع المتطلبات المسبقة. إذا لم يتم استيفاء المتطلبات، يفشل النشر.

مثال على تكوين LocalDNS

يمكنك تخصيص تكوينات LocalDNS مثل vnetDNSOverrides و kubeDNSOverrides. لمزيد من التفاصيل حول الإضافات المدعومة، راجع تخصيص LocalDNS.

spec:
  LocalDNS:
    mode: Required
    vnetDNSOverrides:
      - zone: "."
        cacheDuration: "3600s"
        forwardDestination: VnetDNS
        forwardPolicy: Sequential
        maxConcurrent: 1000
        protocol: PreferUDP
        queryLogging: Error
        serveStale: Immediate
        serveStaleDuration: "3600s"
      - zone: "cluster.local"
        cacheDuration: "3600s"
        forwardDestination: ClusterCoreDNS
        forwardPolicy: Sequential
        maxConcurrent: 1000
        protocol: ForceTCP
        queryLogging: Error
        serveStale: Immediate
        serveStaleDuration: "3600s"
    kubeDNSOverrides:
      - zone: "."
        cacheDuration: "3600s"
        forwardDestination: ClusterCoreDNS
        forwardPolicy: Sequential
        maxConcurrent: 1000
        protocol: PreferUDP
        queryLogging: Error
        serveStale: Immediate
        serveStaleDuration: "3600s"
      - zone: "cluster.local"
        cacheDuration: "3600s"
        forwardDestination: ClusterCoreDNS
        forwardPolicy: Sequential
        maxConcurrent: 1000
        protocol: ForceTCP
        queryLogging: Error
        serveStale: Immediate
        serveStaleDuration: "3600s"

تكوين Kubelet

يسمح لك القسم kubelet بتكوين معلمات kubelet المختلفة التي تؤثر على سلوك العقدة. هذه المعاملات هي حجج kubelet نموذجية، لذا يقوم مزود Azure ببساطة بتمريرها إلى kubelet على العقدة.

Important

قم بتكوين إعدادات kubelet بعناية، واختبر أي تغييرات في البيئات غير الإنتاجية أولا.

إدارة وحدة المعالجة المركزية

تتحكم الإعدادات التالية في سلوك إدارة وحدة المعالجة المركزية ل kubelet:

spec:
  kubelet:
    cpuManagerPolicy: "static"  # or "none"
    cpuCFSQuota: true
    cpuCFSQuotaPeriod: "100ms"
  • cpuManagerPolicyيتحكم في كيفية تخصيص kubelet لموارد وحدة المعالجة المركزية.: قم بالتعيين إلى "static" تثبيت وحدة المعالجة المركزية في أحمال العمل الحساسة لزمن الانتقال.
  • cpuCFSQuotaتمكين فرض الحصة النسبية للجدولة العادلة تماما لوحدة المعالجة المركزية (CFS) للحاويات التي تحدد حدود وحدة المعالجة المركزية.:
  • cpuCFSQuotaPeriodلتعيين فترة الحصة النسبية لوحدة المعالجة المركزية CFS.:

مجموعة البيانات المهملة للصور

تتحكم الإعدادات التالية في سلوك جمع البيانات المهملة للصور ل kubelet:

spec:
  kubelet:
    imageGCHighThresholdPercent: 85
    imageGCLowThresholdPercent: 80

تتحكم هذه الإعدادات عندما يقوم kubelet بتجميع البيانات المهملة لصور الحاوية:

  • imageGCHighThresholdPercentالنسبة المئوية لاستخدام القرص التي تؤدي إلى تجميع البيانات المهملة للصور.:
  • imageGCLowThresholdPercentالنسبة المئوية المستهدفة لاستخدام القرص بعد جمع البيانات المهملة.:

إدارة المخطط

يتحكم الإعداد التالي في نهج مدير المخطط ل kubelet:

spec:
  kubelet:
    topologyManagerPolicy: "best-effort"  # none, restricted, best-effort, single-numa-node

يساعد مدير المخطط في تنسيق تخصيص الموارد لأحمال العمل الحساسة لزمن الانتقال عبر موارد وحدة المعالجة المركزية والجهاز (مثل وحدة معالجة الرسومات).

تكوين النظام

تسمح لك الإعدادات التالية بتكوين معلمات نظام إضافية ل kubelet:

spec:
  kubelet:
    allowedUnsafeSysctls:
      - "kernel.msg*"
      - "net.ipv4.route.min_pmtu"
    containerLogMaxSize: "50Mi"
    containerLogMaxFiles: 5
    podPidsLimit: 4096
  • allowedUnsafeSysctlsقائمة بأجهزة sysctls غير الآمنة المسموح بها التي يمكن أن تستخدمها الكبسولات .:
  • containerLogMaxSizeالحد الأقصى لحجم ملفات سجل الحاوية قبل التدوير.:
  • containerLogMaxFilesالحد الأقصى لعدد ملفات سجل الحاوية المطلوب الاحتفاظ بها.:
  • podPidsLimitالحد الأقصى لعدد العمليات المسموح بها في أي جراب.:

إعدادات تكوين نظام التشغيل المخصص لنظام التشغيل Linux

يسمح لك القسم LinuxOSConfig بتكوين معلمات kubelet المختلفة التي تؤثر على سلوك العقدة. هذه المعاملات هي وسيط نظام تشغيل مخصصة نموذجية، لذا يقوم NAP ببساطة بتمريرها إلى الكوبليت على العقدة.

لمزيد من المعلومات حول إعدادات تكوين نظام التشغيل Linux المخصصة والقيم الافتراضية والاعتبارات، راجع مرجع معلمات تكوين العقدة المخصصة.

Important

قم بضبط إعدادات نظام تشغيل لينكس بعناية، واختبر أي تغييرات في بيئات غير إنتاجية أولا.

مقبض ملفات لينكس يحد من الإعدادات

استخدم الإعدادات التالية لضبط إعدادات نظام الملفات.

spec:
  linuxOSConfig: 
    # Sysctl Settings  
    sysctls:  
      # File System Settings  
      fsFileMax: 2000000               # Range: 8192-12000500  Default: Max of available range
      fsInotifyMaxUserWatches: 1000000 # Range: 781250-2097152 Default: 1048576
      fsAioMaxNr: 1000000              # Range: 65536-6553500  Default: 65536
      fsNrOpen: 1000000                # Range: 8192-20000500  Default: 1048576

إعدادات منفذ لينكس وضبط الشبكة

استخدم الإعدادات التالية لضبط TCP وإعداد الشبكة.

spec:
  linuxOSConfig:
      # Network Settings  
      netCoreSomaxconn: 65535          # Range: 4096-3240000  Default: 16384
      netCoreNetdevMaxBacklog: 5000    # Range: 1000-3240000  Default: 1000
      netCoreRmemMax: 134217728        # Range: 212992-134217728  Default: 1048576
      netCoreOptmemMax: 102400         # Range: 20480-4194304     Default: 131072 
      netCoreWmemMax: 134217728        # Range: 212992-134217728  Default: 212992
      netCoreRmemDefault: 212992       # Range: 212992-134217728  
      netCoreWmemDefault: 212992       # Range: 212992-134217728  
      netIPv4IPLocalPortRange: "1024 65535" # Format: "first last", first: 1024-60999, last: 32768-65535  

      # Neighbor Table GC Thresholds  
      netIPv4NeighDefaultGcThresh1: 1024   # Range: 128-80000  Default: 4096
      netIPv4NeighDefaultGcThresh2: 2048   # Range: 512-80000  Default: 8192
      netIPv4NeighDefaultGcThresh3: 4096   # Range: 1024-80000  Default: 16384
      # Note: thresh1 <= thresh2 <= thresh3  

      # Connection Tracking  
      netNetfilterNfConntrackBuckets: 131072  # Range: 65536-524288   Default: dynamically calculated 
      netNetfilterNfConntrackMax: 262144       # Range: 131072-2097152 Default: dynamically calculated 

إعدادات حد موظفي لينكس

استخدم الإعدادات التالية لضبط إعداد النواة.

spec:
  linuxOSConfig:
      # Kernel Settings  
      kernelThreadsMax: 100000         # Range: 20-513785  Default: Dynamically calculated

إعدادات الذاكرة الافتراضية للينكس

استخدم الخيارات التالية لضبط تشغيل نظام الذاكرة الافتراضية في لينكس لنواة لينكس وكتابة البيانات الملوثة على القرص.

spec:
  linuxOSConfig:
      # Memory Management  
      vmMaxMapCount: 262144          # Range: 65530-262144 Default: Max of available range
      vmVfsCachePressure: 100        # Range: 0-100  Default: 100
      vmSwappiness: 60               # Range: 0-100  Default: 60

      # Swap File Configuration  
      swapFileSize: "2Gi"             # Default: (not set) | Pattern: quantity with units Note: Requires kubelet.failSwapOn: false  

      # Transparent Huge Pages  
      transparentHugePageEnabled: "madvise"    # Values: [always, madvise, never]  Default: always
      transparentHugePageDefrag: "defer+madvise" # Values: [always, defer, defer+madvise, madvise, never]  Default: madvise

إعدادات وحدة معالجة الرسوميات

استخدم الحقل التالي لتمكين تثبيت برنامج تشغيل GPU المخصص، مثل مع عامل تشغيل NVIDIA GPU.

spec:
  gpu:
    mode: 
      # acceptable values: [driver, none] default(or if not specified): driver
      # none skips gpu driver installation, driver has NAP manage the GPU driver installation  
      none

إعدادات الأمان

التشفير على المضيف

يحدد الحقل التالي ما إذا كان يتم تمكين التشفير على مستوى المضيف للعقد المتوفرة. عند تعيين هذا الحقل إلى true، يتضمن NAP خيارات المثيل التي تدعم التشفير في المضيف فقط.

spec:
  security:
    encryptionatHost: 
      # acceptable values: [true, false] default(or if not specified): false  
      false

لمزيد من المعلومات حول التشفير المستند إلى المضيف، راجع التشفير في وثائق المضيف.

المفاتيح المدارة المخصصة ومجموعات تشفير القرص

يدعم NAP المجموعات التي تستخدم المفاتيح المدارة من قبل العميل ومجموعات تشفير القرص. تمكين هذه الخيارات على مستوى نظام المجموعة. ليس لديهم AKSNodeClass حقول تحتاج إلى تعيينها. تأكد من أن هوية نظام المجموعة الخاصة بك لديها التحكم المناسب في الوصول استنادا إلى الدور (RBAC):

  • لدى Reader هوية نظام المجموعة حق الوصول إلى مجموعة تشفير القرص.
  • يمكن Key Vault Crypto Service Encryption User لمورد مجموعة تشفير القرص الوصول إلى Azure Key Vault.

للحصول على معلومات حول المفاتيح المدارة بواسطة العميل ومجموعات تشفير القرص التي تم تمكينها أثناء إنشاء نظام المجموعة، راجع Customer-Managed وثائق المفاتيح.

تكوين علامات الموارد Azure

يمكنك تحديد Azure علامات الموارد التي تنطبق على جميع حالات الآلات الافتراضية التي تم إنشاؤها باستخدام مورد معين AKSNodeClass. العلامات مفيدة لتتبع التكلفة وتنظيم الموارد ومتطلبات الامتثال.

قيود العلامات

  • علامات الموارد في Azure لها حد أقصى يبلغ 50 علامة لكل مورد.
  • أسماء العلامات غير حساسة لحالة الأحرف ولكن قيم العلامات حساسة لحالة الأحرف.
  • Azure يحتفظ ببعض أسماء الوسوم التي لا يمكن استخدامها. لمزيد من المعلومات، راجع إرشادات العلامة والحدود.

مثال على تكوين العلامات

spec:
  tags:
    Environment: "production"
    Team: "platform"
    Application: "web-service"
    CostCenter: "engineering"

مثال التكوين الشامل AKSNodeClass

يوضح المثال التالي تكوينا شاملا AKSNodeClass يتضمن جميع الإعدادات التي تمت مناقشتها في هذه المقالة:

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: default
spec:
  template:
    spec:
      nodeClassRef:
        group: karpenter.azure.com
        kind: AKSNodeClass
        name: comprehensive-example
---
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
  name: comprehensive-example
spec:
  # Image family configuration
  # Default: Ubuntu
  # Valid values: Ubuntu, AzureLinux, AzureContainerLinux
  imageFamily: Ubuntu

  # FIPS compliant mode - allows support for FIPS-compliant node images
  # Default: Disabled
  # Valid values: FIPS, Disabled
  fipsMode: Disabled

  # Artifact Streaming- allows use of artifact streaming feature; To use this feature container images must also enable artifact streaming on ACR
  # Valid values: true, false; defaults to false if not specified
  artifactStreaming:
    enabled: true

  # LocalDNS mode - allows use of LocalDNS feature
  # Default: Disabled
  # Valid values: Preferred, Required, Disabled
  LocalDNS:
    mode: Disabled
    # additional details on vnetDNSOverrides and kubeDNSOverrides can be added here

  # Virtual network subnet configuration (optional)
  # If not specified, uses the default --vnet-subnet-id from Karpenter installation
  vnetSubnetID: "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet/subnets/my-subnet"

  # OS disk size configuration
  # Default: 128 GB
  # Minimum: 30 GB
  osDiskSizeGB: 128

  # Maximum pods per node configuration
  # Default behavior depends on network plugin:
  # - Azure CNI with standard networking: 30 pods
  # - Azure CNI with overlay networking: 250 pods
  # - Other configurations: 110 pods
  # Range: 10-250
  maxPods: 30

  # GPU driver installation (optional)
  # Default: driver - NAP manages gpu driver installation
  # none skips gpu driver installation
  # Valid values: driver, none
  gpu:
    mode: 
      driver

  # Azure resource tags (optional)
  # Applied to all VM instances created with this AKSNodeClass
  tags:
    Environment: "production"
    Team: "platform-team"
    Application: "web-service"
    CostCenter: "engineering"

  # Kubelet configuration (optional)
  # All fields are optional with sensible defaults
  kubelet:
    # CPU management policy
    # Default: "none"
    # Valid values: none, static
    cpuManagerPolicy: "static"

    # CPU CFS quota enforcement
    # Default: true
    cpuCFSQuota: true

    # CPU CFS quota period
    # Default: "100ms"
    cpuCFSQuotaPeriod: "100ms"

    # Image garbage collection thresholds
    # imageGCHighThresholdPercent must be greater than imageGCLowThresholdPercent
    # Range: 0-100
    imageGCHighThresholdPercent: 85
    imageGCLowThresholdPercent: 80

    # Topology manager policy
    # Default: "none"
    # Valid values: none, restricted, best-effort, single-numa-node
    topologyManagerPolicy: "best-effort"

    # Allowed unsafe sysctls (optional)
    # Comma-separated list of unsafe sysctls or patterns
    allowedUnsafeSysctls:
      - "kernel.msg*"
      - "net.ipv4.route.min_pmtu"

    # Container log configuration
    # containerLogMaxSize default: "50Mi"
    containerLogMaxSize: "50Mi"
    
    # containerLogMaxFiles default: 5, minimum: 2
    containerLogMaxFiles: 5

    # Pod process limits
    # Default: -1 (unlimited)
    podPidsLimit: 4096

الخطوات التالية

لمزيد من المعلومات حول التوفير التلقائي للعقدة في AKS، راجع المقالات التالية: