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

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

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

إشعار

تتيح هذه الميزة المزيد من التحكم في إنشاء مجموعات عقد متعددة وإدارتها وتتطلب أوامر منفصلة لعمليات الإنشاء/التحديث/الحذف (CRUD). سابقا، كانت عمليات نظام المجموعة من خلال az aks create أو az aks update تستخدم واجهة برمجة تطبيقات ManagedCluster وكانت الخيارات الوحيدة لتغيير مستوى التحكم وتجمع عقدة واحدة. تعرض هذه الميزة مجموعة عمليات منفصلة لتجمعات الوكلاء من خلال واجهة برمجة تطبيقات agentPool وتتطلب استخدام az aks nodepool مجموعة الأوامر لتنفيذ العمليات على تجمع عقدة فردي.

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

قبل البدء

القيود

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

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

إنشاء نظام مجموعة AKS

هام

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

  1. إنشاء مجموعة موارد Azure باستخدام az group create الأمر .

    az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
    
  2. إنشاء نظام مجموعة AKS مع تجمع عقدة واحدة باستخدام az aks create الأمر .

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --generate-ssh-keys \
        --load-balancer-sku standard
    

    يستغرق بضع دقائق لإنشاء المجموعة.

  3. عندما تكون المجموعة جاهزة، احصل على بيانات اعتماد نظام المجموعة باستخدام az aks get-credentials الأمر .

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

إضافة تجمع عقدة

يحتوي نظام المجموعة التي تم إنشاؤها في الخطوة السابقة على تجمع عقدة واحدة. في هذا القسم، نضيف تجمع عقدة ثان إلى نظام المجموعة.

  1. إنشاء تجمع عقدة جديد باستخدام az aks nodepool add الأمر . ينشئ المثال التالي تجمع عقدة يسمى mynodepool الذي يقوم بتشغيل ثلاث عقد:

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3
    
  2. تحقق من حالة تجمعات العقد باستخدام az aks node pool list الأمر وحدد مجموعة الموارد واسم نظام المجموعة.

    az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
    

    يظهر إخراج المثال التالي أنه تم إنشاء mynodepool بنجاح بثلاث عقد. عندما تم إنشاء كتلة AKS في الخطوة السابقة، تم إنشاء nodepool1 افتراضية مع عدد عقدة من 2.

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

تجمعات عقد ARM64

يوفر معالج ARM64 حساب طاقة منخفض لأحمال عمل Kubernetes. لإنشاء تجمع عقدة ARM64، تحتاج إلى اختيار الجهاز الظاهري لسلسلة Dpsv5 أو Dplsv5 أو Epsv5 .

القيود

  • لا يتم دعم تجمعات عقد ARM64 على المجموعات التي تدعم Defender مع إصدار Kubernetes أقل من 1.29.0.
  • تجمعات العقد التي تدعم FIPS غير مدعومة مع وحدات ARM64 SKUs.

إضافة تجمع عقدة ARM64

  • أضف تجمع عقدة ARM64 إلى نظام المجموعة الحالي باستخدام az aks nodepool add.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $ARM_NODE_POOL_NAME \
        --node-count 3 \
        --node-vm-size Standard_D2pds_v5
    

تجمعات عقدة Azure Linux

مضيف حاوية Azure Linux ل AKS هو توزيع Linux مفتوح المصدر متاح كمضيف حاوية AKS. يوفر موثوقية وأمان وتناسقا عاليا. وهو يتضمن فقط الحد الأدنى من مجموعة الحزم اللازمة لتشغيل أحمال عمل الحاوية، والتي تحسن أوقات التمهيد والأداء العام.

إضافة تجمع عقدة Azure Linux

  • أضف تجمع عقدة Azure Linux إلى نظام المجموعة الحالي باستخدام az aks nodepool add الأمر وحدد --os-sku AzureLinux.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $AZ_LINUX_NODE_POOL_NAME \
        --os-sku AzureLinux
    

ترحيل عقد Ubuntu إلى عقد Azure Linux

يمكنك ترحيل عقد Ubuntu الموجودة إلى Azure Linux باستخدام إحدى الطرق التالية:

تجمعات العقد مع شبكات فرعية فريدة

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

إشعار

تأكد من استخدام إصدار 2.35.0 Azure CLI أو أحدث.

القيود

  • يجب أن تنتمي كافة الشبكات الفرعية المعينة إلى nodepools إلى نفس الشبكة الظاهرية.
  • يجب أن يكون لدى pods النظام حق الوصول إلى جميع العقد والقرون في نظام المجموعة لتوفير وظائف مهمة، مثل تحليل DNS ونفق سجلات kubectl/exec/port-forward proxy.
  • إذا قمت بتوسيع VNET بعد إنشاء نظام المجموعة، يجب تحديث نظام المجموعة قبل إضافة شبكة فرعية خارج كتلة CIDR الأصلية. بينما تضيف أخطاء AKS في تجمع الوكلاء، aks-preview فإن ملحق Azure CLI (الإصدار 0.5.66 والإصدارات الأحدث) يدعم الآن تشغيل az aks update الأمر مع الوسيطات المطلوبة -g <resourceGroup> -n <clusterName> فقط. ينفذ هذا الأمر عملية تحديث دون إجراء أي تغييرات، والتي يمكن أن تسترد مجموعة عالقة في حالة فشل.
  • في المجموعات التي تحتوي على إصدار Kubernetes أقل من 1.23.3، نسبة استخدام شبكة SNATs لوكيل kube من الشبكات الفرعية الجديدة، ما قد يتسبب في إسقاط نهج شبكة Azure للحزم.
  • حركة مرور SNAT لعقد Windows إلى الشبكات الفرعية الجديدة حتى يتم إعادة تصور تجمع العقدة.
  • موازنات التحميل الداخلية افتراضيا إلى إحدى الشبكات الفرعية لتجمع العقدة.

إضافة تجمع عقدة مع شبكة فرعية فريدة

  • أضف تجمع عقدة مع شبكة فرعية فريدة إلى نظام المجموعة الحالي باستخدام az aks nodepool add الأمر وحدد --vnet-subnet-id.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 3 \
        --vnet-subnet-id $SUBNET_RESOURCE_ID
    

تجمعات العقد الممكنة بواسطة FIPS

لمزيد من المعلومات حول تمكين معيار عملية المعلومات الفيدرالية (FIPS) لنظام مجموعة AKS، راجع تمكين معيار عملية المعلومات الفيدرالية (FIPS) لتجمعات عقد Azure Kubernetes Service (AKS).

تجمعات عقد Windows Server مع containerd

بدءا من الإصدار 1.20 من Kubernetes والإصدارات الأحدث، يمكنك تحديد containerd وقت تشغيل الحاوية لتجمعات عقد Windows Server 2019. بدءا من Kubernetes 1.23، containerd هو وقت تشغيل الحاوية الافتراضي والوحوي لنظام التشغيل Windows.

هام

عند الاستخدام containerd مع تجمعات عقد Windows Server 2019:

  • يجب أن يستخدم كل من مستوى التحكم ومجموعات عقد Windows Server 2019 الإصدار 1.20 أو إصدار أحدث من Kubernetes.
  • عند إنشاء تجمع عقدة أو تحديثه لتشغيل حاويات Windows Server، تكون القيمة الافتراضية Standard_D2s_v3--node-vm-size، والتي كانت الحد الأدنى للحجم الموصى به لتجمعات عقد Windows Server 2019 قبل إصدار Kubernetes 1.20. الحد الأدنى للحجم الموصى به لتجمعات عقد Windows Server 2019 containerdهو Standard_D4s_v3. عند تعيين المعلمة --node-vm-size ، تحقق من قائمة أحجام الأجهزة الظاهرية المقيدة.
  • نوصي باستخدام العيوب أو التسميات مع مجموعات عقد Windows Server 2019 قيد التشغيل containerd والتفاوتات أو محددات العقدة مع عمليات النشر لضمان جدولة أحمال العمل بشكل صحيح.

إضافة تجمع عقدة خادم Windows بواسطة containerd

  • أضف تجمع عقدة Windows Server مع containerd إلى نظام المجموعة الحالي باستخدام az aks nodepool add.

    إشعار

    إذا لم تحدد WindowsContainerRuntime=containerd العنوان المخصص، فإن تجمع العقدة لا يزال يستخدم containerd كوقت تشغيل الحاوية بشكل افتراضي.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --os-type Windows \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

ترقية تجمع عقدة Windows Server موجود معين إلى containerd

  • ترقية تجمع عقدة معين من Docker إلى containerd استخدام az aks nodepool upgrade الأمر .

    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $CONTAINER_D_NODE_POOL_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

ترقية كافة تجمعات عقد Windows Server الموجودة إلى containerd

  • ترقية كافة تجمعات العقد من Docker إلى containerd استخدام az aks nodepool upgrade الأمر .

    az aks nodepool upgrade \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

تجمعات العقد مع أقراص نظام التشغيل المؤقتة

  • أضف تجمع عقدة يستخدم أقراص نظام التشغيل سريعة الزوال إلى مجموعة موجودة باستخدام az aks nodepool add الأمر مع تعيين العلامة --node-osdisk-type إلى Ephemeral.

    إشعار

    • يمكنك تحديد أقراص نظام التشغيل المؤقتة أثناء إنشاء نظام المجموعة باستخدام العلامة --node-osdisk-typeaz aks create مع الأمر .
    • إذا كنت ترغب في إنشاء تجمعات العقد باستخدام أقراص نظام تشغيل متصلة بالشبكة، فيمكنك القيام بذلك عن طريق تحديد --node-osdisk-type Managed.
    az aks nodepool add --name $EPHEMERAL_NODE_POOL_NAME --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME -s Standard_DS3_v2 --node-osdisk-type Ephemeral
    

هام

باستخدام نظام التشغيل المؤقت، يمكنك نشر الأجهزة الظاهرية وصور المثيل حتى حجم ذاكرة التخزين المؤقت للجهاز الظاهري. يستخدم تكوين قرص نظام التشغيل للعقدة الافتراضية في AKS 128 غيغابايت، ما يعني أنك تحتاج إلى حجم جهاز ظاهري يحتوي على ذاكرة تخزين مؤقت أكبر من 128 غيغابايت. يبلغ حجم ذاكرة التخزين المؤقت في Standard_DS2_v2 الافتراضي 86 غيغابايت، وهو حجم غير كبير بما فيه الكفاية. يحتوي Standard_DS3_v2 VM SKU على حجم ذاكرة تخزين مؤقت يبلغ 172 جيجابايت، وهو كبير بما يكفي. يمكنك أيضا تقليل الحجم الافتراضي لقرص نظام التشغيل باستخدام --node-osdisk-size، ولكن ضع في اعتبارك أن الحد الأدنى لحجم صور AKS هو 30 غيغابايت.

قم بحذف تجمع عقدة

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

تنبيه

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

  • احذف تجمع عقدة az aks nodepool delete باستخدام الأمر وحدد اسم تجمع العقدة.

    az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
    

    يستغرق بضع دقائق لحذف العقد وتجمع العقدة.

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

في هذه المقالة، تعلمت كيفية إنشاء تجمعات عقد متعددة في نظام مجموعة AKS. للتعرف على كيفية إدارة تجمعات عقد متعددة، راجع إدارة تجمعات عقد متعددة لنظام مجموعة في خدمة Azure Kubernetes (AKS).