إدارة تجمعات العقد لنظام مجموعة في خدمة Azure Kubernetes (AKS)

في خدمة Azure Kubernetes Service (AKS) يتم تجميع العقد من نفس التكوين معًا في تجمعات العقد. تحتوي تجمعات العقد هذه على VMs الأساسي الذي يقوم بتشغيل التطبيقات الخاصة بك. عند إنشاء نظام مجموعة AKS، يمكنك تحديد العدد الأولي للعقد وحجمها (SKU). مع تغير متطلبات التطبيق، قد تحتاج إلى تغيير الإعدادات على تجمعات العقد. على سبيل المثال، قد تحتاج إلى قياس عدد العقد في تجمع عقدة أو ترقية إصدار Kubernetes من تجمع عقدة.

توضح هذه المقالة كيفية إدارة تجمع عقدة واحد أو أكثر في مجموعة AKS.

قبل البدء

القيود

تنطبق القيود التالية عند إنشاء وإدارة الكتل AKS التي تدعم تجمعات عقد متعددة:

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

ترقية تجمع عقدة واحدة

إشعار

يتم ربط إصدار نسخة تجمع عقدة OS إلى إصدار Kubernetes من الكتلة. يمكنك فقط الحصول على ترقيات صورة نظام التشغيل، بعد ترقية نظام المجموعة.

في هذا المثال، نقوم بترقية تجمع عقدة mynodepool . نظرا لوجود تجمعين للعقدة، يجب علينا استخدام الأمر للترقية az aks nodepool upgrade .

  1. تحقق من وجود أي ترقيات متوفرة باستخدام az aks get-upgrades الأمر .

    az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
    
  2. ترقية تجمع عقدة mynodepool باستخدام az aks nodepool upgrade الأمر .

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --kubernetes-version KUBERNETES_VERSION \
        --no-wait
    
  3. سرد حالة تجمعات العقد باستخدام az aks nodepool list الأمر .

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
    

    يظهر إخراج المثال التالي أن mynodepool في حالة الترقية:

    [
      {
        ...
        "count": 3,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "KUBERNETES_VERSION",
        ...
        "provisioningState": "Upgrading",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Succeeded",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

    يستغرق بضع دقائق لترقية العقد إلى الإصدار المحدد.

للحصول على أفضل ممارسة، يجب ترقية كافة تجمعات العقد في كتلة AKS إلى نفس إصدار Kubernetes. السلوك الافتراضي az aks upgrade هو ترقية كافة تجمعات العقدة مع مستوى عنصر التحكم لتحقيق هذه المحاذاة. تتيح لك القدرة على ترقية تجمعات العقد الفردية إجراء ترقية متدرجة وجدولة القرون بين تجمعات العقد للحفاظ على وقت تشغيل التطبيق ضمن القيود المذكورة أعلاه.

قم بترقية مستوى عنصر تحكم نظام المجموعة مع تجمعات عقد متعددة

إشعار

يستخدم Kubernetes نظام تعيين إصدار قياسي الإصدار الدلالي لكل إصدار. يتم التعبير عن رقم الإصدار كـ x.y.z، حيث x هو الإصدار الرئيسي، و y هو الإصدار الثانوي، و z هو إصدار التصحيح. على سبيل المثال، في الإصدار 1.12.6، 1 هو الإصدار الرئيسي، 12 هو الإصدار الثانوي، و 6 هو إصدار التصحيح. يتم تعيين إصدار Kubernetes من مستوى التحكم وتجمع العقدة الأولية أثناء إنشاء الكتلة. تحتوي تجمعات العقد الأخرى على مجموعة إصدارات Kubernetes الخاصة بها عند إضافتها إلى نظام المجموعة. قد تختلف إصدارات Kubernetes بين تجمعات العقد وبين تجمع عقدة ولوحة التحكم.

يحتوي نظام مجموعة AKS على كائنين لمورد نظام المجموعة مع إصدارات Kubernetes المقترنة بهما:

  1. إصدار Kubernetes لمستوى التحكم في نظام المجموعة، و
  2. تجمع عقدة مع إصدار Kubernetes.

يتم تعيين وحدة التحكم إلى تجمع عقدة واحد أو عدة تجمعات. يعتمد سلوك عملية الترقية على أمر Azure CLI الذي تستخدمه.

  • az aks upgrade ترقية مستوى التحكم وجميع تجمعات العقد في نظام المجموعة إلى نفس إصدار Kubernetes.
  • az aks upgrade مع العلامة --control-plane-only ترقيات مستوى التحكم في نظام المجموعة فقط ويترك كافة تجمعات العقد دون تغيير.
  • az aks nodepool upgrade ترقية تجمع العقدة الهدف فقط مع إصدار Kubernetes المحدد.

قواعد التحقق من الصحة للترقيات

يتم التحقق من صحة ترقيات Kubernetes لمستوى التحكم في نظام المجموعة وتجمعات العقد باستخدام مجموعات القواعد التالية:

  • قواعد الإصدارات الصالحة لترقية تجمعات العقد:

    • يجب أن يكون إصدار تجمع العقدة نفس الإصدار الرئيسي مثل لوحة التحكم.
    • يجب أن يكون الإصدار الثانوي لتجمع العقدة ضمن إصدارين ثانويين من إصدار لوحة التحكم.
    • لا يمكن أن يكون إصدار تجمع العقدة أكبر من إصدار عنصر major.minor.patch التحكم.
  • قواعد إرسال عملية ترقية:

    • لا يمكنك تخفيض مستوى لوحة التحكم أو عقدة تجمع Kubernetes الإصدار.
    • إذا لم يتم تحديد إصدار Kubernetes لتجمع العقدة، يعتمد السلوك على العميل. في قوالب Resource Manager، يعود الإعلان إلى الإصدار الحالي المحدد لتجمع العقدة. إذا لم يتم تعيين أي شيء، فإنه يستخدم إصدار وحدة التحكم للرجوع إليه.
    • لا يمكنك إرسال عمليات متعددة في نفس الوقت على وحدة تحكم واحدة أو مورد تجمع عقدة. يمكنك إما ترقية أو توسيع نطاق وحدة تحكم أو تجمع عقدة في وقت معين.

قم بتغيير سعة تجمع عقدة يدويًّا

كما يتطلب تغيير حمل العمل التطبيق الخاص بك، قد تحتاج إلى تغيير عدد العقد في تجمع عقدة. يمكن تحجيم عدد العقد لأعلى أو لأسفل.

  1. تحجيم عدد العقد في تجمع عقدة باستخدام az aks node pool scale الأمر .

    az aks nodepool scale \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 5 \
        --no-wait
    
  2. سرد حالة تجمعات العقد باستخدام az aks node pool list الأمر .

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
    

    يظهر إخراج المثال التالي أن mynodepool في حالة التحجيم مع عدد جديد من خمس عقد:

    [
      {
        ...
        "count": 5,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Scaling",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Succeeded",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

    يستغرق بضع دقائق لإكمال عملية المقياس.

تحجيم تجمع عقدة معين تلقائيا باستخدام مقياس المجموعة التلقائي

تقدم AKS ميزة منفصلة لتوسيع نطاق تجمعات العقد تلقائيًّا باستخدام ميزة تسمى مقياس الكتلة التلقائي. يمكنك تمكين هذه الميزة مع الحد الأدنى والحد الأقصى الفريد لعدد المقياس لكل تجمع عقدة.

لمزيد من المعلومات، راجع استخدام مقياس المجموعة التلقائي.

إزالة أجهزة ظاهرية معينة في تجمع العقدة الموجود (معاينة)

هام

تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:

  1. تسجيل الملحق أو تحديثه 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
    
  2. سرد العقد الموجودة باستخدام kubectl get nodes الأمر .

    kubectl get nodes
    

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    NAME                                 STATUS   ROLES   AGE   VERSION
    aks-mynodepool-20823458-vmss000000   Ready    agent   63m   v1.21.9
    aks-mynodepool-20823458-vmss000001   Ready    agent   63m   v1.21.9
    aks-mynodepool-20823458-vmss000002   Ready    agent   63m   v1.21.9
    
  3. احذف الأجهزة الظاهرية المحددة باستخدام az aks nodepool delete-machines الأمر . تأكد من استبدال العناصر النائبة بقيمك الخاصة.

    az aks nodepool delete-machines \
        --resource-group <resource-group-name> \
        --cluster-name <cluster-name> \
        --name <node-pool-name>
        --machine-names <vm-name-1> <vm-name-2>
    
  4. تحقق من حذف الأجهزة الظاهرية بنجاح باستخدام kubectl get nodes الأمر .

    kubectl get nodes
    

    يجب ألا يتضمن الإخراج الأجهزة الظاهرية التي حددتها في az aks nodepool delete-machines الأمر.

إقران مجموعات حجز السعة بتجمعات العقد

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

المتطلبات الأساسية لاستخدام مجموعات حجز السعة مع AKS

  • استخدم إصدار CLI 2.56 أو أعلى وإصدار واجهة برمجة التطبيقات 2023-10-01 أو أعلى.

  • يجب أن تكون مجموعة حجز السعة موجودة بالفعل ويجب أن تحتوي على حجز سعة واحد على الأقل، وإلا تتم إضافة تجمع العقدة إلى المجموعة مع تحذير ولا يتم إقران مجموعة حجز السعة. لمزيد من المعلومات، راجع مجموعات حجز السعة.

  • تحتاج إلى إنشاء هوية مدارة معينة من قبل المستخدم لمجموعة الموارد التي تحتوي على مجموعة حجز السعة (CRG). لن تعمل الهويات المدارة المعينة من قبل النظام لهذه الميزة. في المثال التالي، استبدل متغيرات البيئة بالقيم الخاصة بك.

    IDENTITY_NAME=myID
    RG_NAME=myResourceGroup
    CLUSTER_NAME=myAKSCluster
    VM_SKU=Standard_D4s_v3
    NODE_COUNT=2
    LOCATION=westus2
    az identity create --name $IDENTITY_NAME --resource-group $RG_NAME  
    IDENTITY_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RG_NAME --query identity.id -o tsv)
    
  • تحتاج إلى تعيين Contributor الدور إلى الهوية المعينة من قبل المستخدم التي تم إنشاؤها أعلاه. لمزيد من التفاصيل، راجع خطوات تعيين دور Azure.

  • إنشاء مجموعة جديدة وتعيين الهوية التي تم إنشاؤها حديثا.

      az aks create \
          --resource-group $RG_NAME \
          --name $CLUSTER_NAME \
          --location $LOCATION \
          --node-vm-size $VM_SKU --node-count $NODE_COUNT \
          --assign-identity $IDENTITY_ID \
          --generate-ssh-keys 
    
  • يمكنك أيضا تعيين الهوية المدارة من قبل المستخدم على مجموعة مدارة موجودة مع أمر التحديث.

    az aks update \
        --resource-group $RG_NAME \
        --name $CLUSTER_NAME \
        --location $LOCATION \
        --node-vm-size $VM_SKU \
        --node-count $NODE_COUNT \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID         
    

إقران مجموعة حجز سعة موجودة بتجمع عقدة

إقران مجموعة حجز سعة موجودة بتجمع عقدة az aks nodepool add باستخدام الأمر وتحديد مجموعة حجز السعة بالعلامة --crg-id . يفترض المثال التالي أن لديك CRG يسمى "myCRG".

RG_NAME=myResourceGroup
CLUSTER_NAME=myAKSCluster
NODEPOOL_NAME=myNodepool
CRG_NAME=myCRG
CRG_ID=$(az capacity reservation group show --capacity-reservation-group $CRG_NAME --resource-group $RG_NAME --query id -o tsv)
az aks nodepool add --resource-group $RG_NAME --cluster-name $CLUSTER_NAME --name $NODEPOOL_NAME --crg-id $CRG_ID

إقران مجموعة حجز سعة موجودة بتجمع عقدة نظام

لربط مجموعة حجز سعة موجودة بتجمع عقدة نظام، قم بإقران المجموعة بالهوية المعينة من قبل المستخدم بدور المساهم على CRG الخاص بك وCRG نفسه أثناء إنشاء نظام المجموعة. az aks create استخدم الأمر مع --assign-identity علامات و--crg-id.

IDENTITY_NAME=myID
RG_NAME=myResourceGroup
CLUSTER_NAME=myAKSCluster
NODEPOOL_NAME=myNodepool
CRG_NAME=myCRG
CRG_ID=$(az capacity reservation group show --capacity-reservation-group $CRG_NAME --resource-group $RG_NAME --query id -o tsv)
IDENTITY_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RG_NAME --query identity.id -o tsv)

az aks create \
    --resource-group $RG_NAME \
    --cluster-name $CLUSTER_NAME \
    --crg-id $CRG_ID \
    --assign-identity $IDENTITY_ID \
    --generate-ssh-keys

إشعار

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

إشعار

لا يمكنك تحديث تجمع عقدة موجود مع مجموعة حجز سعة. النهج الموصى به هو إقران مجموعة حجز السعة أثناء إنشاء تجمع العقدة.

قم بتحديد حجم VM لتجمع عقدة

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

في المثال التالي، نقوم بإنشاء تجمع عقدة يستند إلى وحدة معالجة الرسومات يستخدم حجم الجهاز الظاهري Standard_NC6s_v3 . يتم تشغيل هذه VMs بواسطة بطاقة NVIDIA Tesla K80. للحصول على معلومات، راجع الأحجام المتوفرة لأجهزة Linux الظاهرية في Azure.

  1. إنشاء تجمع عقدة az aks node pool add باستخدام الأمر . حدد اسم gpunodepool واستخدم المعلمة --node-vm-size لتحديد حجم Standard_NC6 .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunodepool \
        --node-count 1 \
        --node-vm-size Standard_NC6s_v3 \
        --no-wait
    
  2. تحقق من حالة تجمع العقدة az aks nodepool list باستخدام الأمر .

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
    

    يظهر إخراج المثال التالي تجمع عقدة gpunodepool هو إنشاء العقد باستخدام VmSize المحدد:

    [
      {
        ...
        "count": 1,
        ...
        "name": "gpunodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "vmSize": "Standard_NC6s_v3",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Succeeded",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

    يستغرق بضع دقائق لـ gpunodepool أن يتم إنشاؤه بنجاح.

قم بتحديد ملوث أو تسمية أو علامة لتجمع عقدة

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

هام

إضافة ملونات أو التسميات أو علامات إلى العقد يجب أن يتم لتجمع العقدة بأكمله باستخدام az aks nodepool. لا نوصي باستخدام kubectl لتطبيق العيوب أو التسميات أو العلامات على العقد الفردية في تجمع عقدة.

تعيين تلوث تجمع العقدة

يدعم AKS نوعين من تلوثات العقدة: تلوثات العقدة وملامح تهيئة العقدة (معاينة). لمزيد من المعلومات، راجع استخدام تشوهات العقدة في نظام مجموعة Azure Kubernetes Service (AKS).

لمزيد من المعلومات حول كيفية استخدام ميزات Kubernetes المجدولة المتقدمة، راجع أفضل الممارسات لميزات المجدول المتقدمة في AKS

تعيين تفاوتات تجمع العقدة

في الخطوة السابقة، قمت بتطبيق sku=gpu:NoSchedule taint عند إنشاء تجمع العقدة. يستخدم مثال بيان YAML التالي تفاوتا للسماح لجدولة Kubernetes بتشغيل جراب NGINX على عقدة في تجمع العقدة هذا.

  1. إنشاء ملف مسمى nginx-toleration.yaml ونسخ YAML في المثال التالي:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
     - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
        name: mypod
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 1
            memory: 2G
      tolerations:
     - key: "sku"
        operator: "Equal"
        value: "gpu"
        effect: "NoSchedule"
    
  2. جدولة الجراب باستخدام kubectl apply الأمر .

    kubectl apply -f nginx-toleration.yaml
    

    يستغرق بضع ثوان لجدولة جراب وسحب نسخة NGINX.

  3. تحقق من الحالة باستخدام kubectl describe pod الأمر .

    kubectl describe pod mypod
    

    يظهر إخراج المثال المكثف التالي تسامح sku =gpu:NoSchedule. في قسم الأحداث، قام المجدول بتعيين الجراب إلى عقدة aks-taintnp-28993262-vmss000000:

    [...]
    Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                     node.kubernetes.io/unreachable:NoExecute for 300s
                     sku=gpu:NoSchedule
    Events:
      Type    Reason     Age    From                Message
      ----    ------     ----   ----                -------
      Normal  Scheduled  4m48s  default-scheduler   Successfully assigned default/mypod to aks-taintnp-28993262-vmss000000
      Normal  Pulling    4m47s  kubelet             pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
      Normal  Pulled     4m43s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
      Normal  Created    4m40s  kubelet             Created container
      Normal  Started    4m40s  kubelet             Started container
    

    يمكن جدولة القرون فقط التي لديها هذا التسامح تطبيقها على العقد في taintnp. تتم جدولة أي pods أخرى في تجمع عقدة nodepool1 . إذا قمت بإنشاء المزيد من تجمعات العقد، يمكنك استخدام العيوب والتفاوتات للحد من الجرابات التي يمكن جدولتها على موارد العقدة هذه.

تعيين تسميات تجمع العقدة

لمزيد من المعلومات، راجع استخدام التسميات في نظام مجموعة Azure Kubernetes Service (AKS).

تعيين علامات Azure لتجمع العقدة

لمزيد من المعلومات، راجع استخدام علامات Azure في خدمة Azure Kubernetes (AKS).

إدارة تجمعات العقد باستخدام قالب إدارة الموارد

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

  1. إنشاء قالب، مثل aks-agentpools.json، ولصق في بيان المثال التالي. تأكد من تحرير القيم حسب الحاجة. تكوين قالب المثال هذا الإعدادات التالية:

    • قم بتحديث تجمع عقدة Linux المسمى myagentpool لتشغيل ثلاث عقد.
    • تعيين العقد في تجمع عقدة لتشغيل Kubernetes الإصدار 1.15.7.
    • قم بتعريف حجم العقدة على أنه Standard_DS2_v2.
    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "clusterName": {
                "type": "string",
                "metadata": {
                    "description": "The name of your existing AKS cluster."
                }
            },
            "location": {
                "type": "string",
                "metadata": {
                    "description": "The location of your existing AKS cluster."
                }
            },
            "agentPoolName": {
                "type": "string",
                "defaultValue": "myagentpool",
                "metadata": {
                    "description": "The name of the agent pool to create or update."
                }
            },
            "vnetSubnetId": {
                "type": "string",
                "defaultValue": "",
                "metadata": {
                    "description": "The Vnet subnet resource ID for your existing AKS cluster."
                }
            }
        },
        "variables": {
            "apiVersion": {
                "aks": "2020-01-01"
            },
            "agentPoolProfiles": {
                "maxPods": 30,
                "osDiskSizeGB": 0,
                "agentCount": 3,
                "agentVmSize": "Standard_DS2_v2",
                "osType": "Linux",
                "vnetSubnetId": "[parameters('vnetSubnetId')]"
            }
        },
        "resources": [
            {
                "apiVersion": "2020-01-01",
                "type": "Microsoft.ContainerService/managedClusters/agentPools",
                "name": "[concat(parameters('clusterName'),'/', parameters('agentPoolName'))]",
                "location": "[parameters('location')]",
                "properties": {
                    "maxPods": "[variables('agentPoolProfiles').maxPods]",
                    "osDiskSizeGB": "[variables('agentPoolProfiles').osDiskSizeGB]",
                    "count": "[variables('agentPoolProfiles').agentCount]",
                    "vmSize": "[variables('agentPoolProfiles').agentVmSize]",
                    "osType": "[variables('agentPoolProfiles').osType]",
                    "type": "VirtualMachineScaleSets",
                    "vnetSubnetID": "[variables('agentPoolProfiles').vnetSubnetId]",
                    "orchestratorVersion": "1.15.7"
                }
            }
        ]
    }
    
  2. انشر القالب باستخدام az deployment group create الأمر .

    az deployment group create \
        --resource-group myResourceGroup \
        --template-file aks-agentpools.json
    

    تلميح

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

    ...
    "resources": [
    {
      ...
      "properties": {
        ...
        "tags": {
          "name1": "val1"
        },
        ...
      }
    }
    ...
    

    قد يستغرق الأمر بضع دقائق لتحديث نظام المجموعة AKS استنادًا إلى إعدادات تجمع العقد والعمليات التي تحددها في قالب إدارة الموارد.

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