إدارة pods الخاصة بعُقدة إدارة النظام في Azure Kubernetes Service (AKS)

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

هام

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

توضح هذه المقالة كيفية إدارة تجمعات عقد النظام في AKS. للحصول على معلومات حول كيفية استخدام تجمعات عقد متعددة، راجع استخدام تجمعات عقد متعددة.

قبل البدء

تحتاج إلى الإصدار 2.3.1 من Azure CLI أو أحدث مثبت ومعرف. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

القيود

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

  • راجع الحصص النسبية وقيود حجم الجهاز الظاهري وتوافر المنطقة في AKS.
  • يجب استخدام إصدار API من 2020-03-01 أو أحدث لتعيين وضع تجمع عقدة. تحتوي الكتل التي تم إنشاؤها على إصدارات API الأقدم من 2020-03-01 على تجمعات عقد المستخدم فقط، ولكن يمكن ترحيلها لاحتواء تجمعات عقد النظام باتباع خطوات وضع تجمع التحديث.
  • قد يحتوي اسم تجمع عقدة أحرف أبجدية رقمية صغيرة فقط ويجب أن تبدأ بحرف صغير. بالنسبة لتجمعات عقدة Linux، يجب أن يتراوح الطول بين 1 و12 حرفًا. بالنسبة لتجمعات عقد Windows، يجب أن يتراوح الطول بين حرف واحد وستة أحرف.
  • وضع تجمع عقدة خاصية مطلوبة ويجب تعيينها بشكل صريح عند استخدام قوالب ARM أو استدعاءات API المباشرة.

تجمعات عقد النظام والمستخدم

بالنسبة لتجمع عقدة النظام، تقوم AKS تلقائيًّا بتعيين التسمية kubernetes.azure.com/mode:system إلى العقد الخاصة بها. يؤدي ذلك بمنتج AKS لتفضيل جدولة قرون النظام على مجموعة العقد التي تحتوي على هذه التسمية. لا تمنعك هذه التسمية من جدولة جرابات التطبيقات على تجمعات عقد النظام. ومع ذلك، نوصي بعزل جرابات النظام الهامة من جرابات التطبيق الخاص بك لمنع وحدات جرابات التطبيق التي تم تكوينها بشكل خاطئ أو المارقة من حذف جرابات النظام عن طريق الخطأ.

يمكنك فرض هذا السلوك عن طريق إنشاء مجموعة عقدة نظام مخصصة. استخدم CriticalAddonsOnly=true:NoSchedule taint لمنع قرون التطبيق من الجدولة على مجموعة عقدة النظام.

تحتوي مجموعات عقد النظام على القيود التالية:

  • يجب أن تدعم تجمعات عقد النظام ما لا يقل عن 30 قرنة كما هو موضح في صيغة القيمة الدنيا والأقصى للقرون.
  • يجب أن يكون نظام مجموعة osType هو Linux.
  • قد يكون مجموعة عقد المستخدم osType Linux أو Windows.
  • يجب أن تحتوي تجمعات النظام على عقدتين على الأقل، وقد تحتوي تجمعات عقد المستخدم على صفر أو أكثر من العقد.
  • تتطلب تجمعات عقد النظام وحدة SKU للجهاز الظاهري من 4 وحدات معالجة مركزية ظاهرية على الأقل وذاكرة 4 غيغابايت.
  • لا يتم دعم الأجهزة الظاهرية من السلسلة B لتجمعات عقد النظام.
  • يوصى بثلاث عقد كحد أدنى من 8 وحدات معالجة مركزية ظاهرية أو عقدتين من 16 vCPUs على الأقل (على سبيل المثال، Standard_DS4_v2)، خاصة بالنسبة للمجموعات الكبيرة (النسخ المتماثلة ل Pod CoreDNS المتعددة، 3-4+ الوظائف الإضافية، وما إلى ذلك).
  • تتطلب تجمعات العقد الموضعية تجمعات عقدة المستخدم.
  • إضافة تجمع عقدة نظام آخر أو تغيير تجمع العقدة هو تجمع عقدة النظام لا ينقل تلقائيا pods النظام. يمكن أن تستمر وحدات النظام في التشغيل على نفس تجمع العقدة، حتى إذا قمت بتغييره إلى تجمع عقدة مستخدم. إذا قمت بحذف أو تقليص تجمع عقدة يقوم بتشغيل قرون النظام التي كانت في السابق تجمع عقدة نظام، يتم إعادة توزيع قرون النظام هذه مع الجدولة المفضلة لتجمع عقدة النظام الجديد.

يمكنك القيام بالعمليات التالية باستخدام مجموعة العقد:

  • إنشاء مجموعة عقدة نظام مخصص (تفضل جدولة القرون النظام إلى مجموعة عقدة mode:system من )
  • تغيير مجموعة عقدة نظام لتكون مجموعة عقدة مستخدم، شريطة أن يكون لديك مجموعة عقدة نظام آخر لتأخذ مكانها في نظام المجموعة AKS.
  • تغيير مجموع العقدة للمستخدم ليكون مجموعة عقدة نظام.
  • حذف مجموعات عقدة المستخدم.
  • يمكنك حذف تجمعات عقدة النظام، شريطة أن يكون لديك تجمع عقدة نظام آخر لتأخذ مكانه في نظام المجموعة AKS.
  • قد يكون نظام مجموعة AKS تضاعف مجموعة عقدة نظام ويتطلب تجمع عقدة نظام واحد على الأقل.
  • إذا كنت ترغب في تغيير إعدادات مختلفة غير قابلة للتغيير على مجموعة العقد الموجودة، يمكنك إنشاء مجموعة عقدة جديدة لاستبدالها. مثال واحد هو إضافة مجموعة عقدة جديدة مع إعداد maxPods جديد وحذف مجموعة العقدة القديمة.
  • استخدم ترابط العقدة لطلبالعقد التي يمكن جدولتها استنادا إلى تسميات العقدة أو تفضيلها. يمكنك تعيين key إلى kubernetes.azure.comو operatorInو values أو usersystem إلى YAML الخاص بك، وتطبيق هذا التعريف باستخدام kubectl apply -f yourYAML.yaml.

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

عند إنشاء مجموعة AKS جديدة، يتم تعيين تجمع العقدة الأولي افتراضيا إلى وضع من النوع system. عند إنشاء مجموعات عقد جديدة مع az aks nodepool add، تكون مجموعات العقد هذه مجموعات عقدة المستخدم ما لم تحدد معلمة الوضع بشكل صريح.

في المثال التالي سيتم إنشاء مجموعة موارد تسمى myResourceGroup في منطقة الشرقيين.

az group create --name myResourceGroup --location eastus

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

# Create a new AKS cluster with a single system pool
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys

إضافة تجمع عقدة نظام مخصص إلى مجموعة AKS موجودة

يمكنك إضافة واحد أو أكثر من تجمعات عقدة النظام إلى مجموعات AKS الموجودة. من المستحسن جدولة القرون للتطبيق الخاص بك على مجموعة عقدة المستخدم وتكريس مجموعة عقدة النظام إلى قرون النظام الهامة فقط. وهذا يمنع جرابات التطبيق المارقة من حذف جرابات النظام عن طريق الخطأ. فرض هذا الأسلوب مع CriticalAddonsOnly=true:NoScheduletaint لمجموعة عقدة نظامك.

يضيف الأمر التالي تجمع عقدة مخصصة من نظام نوع الوضع مع عدد افتراضي من ثلاث عقد.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name systempool \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --mode System

إظهار تفاصيل مجموعة العقدة

يمكنك التحقق من تفاصيل تجمع العقدة الخاص بك مع الأمر التالي.

az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name systempool

يتم تعريف وضع من نوع النظام لمجموعة عقدة النظام، ويتم تعريف وضع من النوع المستخدم لتجمعات عقدة المستخدم. بالنسبة لتجمع النظام، تحقق من تعيين لوت إلى CriticalAddonsOnly=true:NoSchedule، والذي سيمنع قرون التطبيق من الكائنات المجدولة على مجموعة العقدة هذه.

{
  "agentPoolType": "VirtualMachineScaleSets",
  "availabilityZones": null,
  "count": 3,
  "enableAutoScaling": null,
  "enableNodePublicIp": false,
  "id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
  "maxCount": null,
  "maxPods": 110,
  "minCount": null,
  "mode": "System",
  "name": "systempool",
  "nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
  "nodeLabels": {},
  "nodeTaints": [
    "CriticalAddonsOnly=true:NoSchedule"
  ],
  "orchestratorVersion": "1.16.10",
  "osDiskSizeGb": 128,
  "osType": "Linux",
  "provisioningState": "Succeeded",
  "proximityPlacementGroupId": null,
  "resourceGroup": "myResourceGroup",
  "scaleSetEvictionPolicy": null,
  "scaleSetPriority": null,
  "spotMaxPrice": null,
  "tags": null,
  "type": "Microsoft.ContainerService/managedClusters/agentPools",
  "upgradeSettings": {
    "maxSurge": null
  },
  "vmSize": "Standard_DS2_v2",
  "vnetSubnetId": null
}

تحديث نظام المجموعة الموجودة ومجموعة عقدة المستخدم

إشعار

يجب استخدام إصدار API من 2020-03-01 أو أحدث لتعيين وضع مجموعة عقدة نظام. تحتوي المجموعات التي تم إنشاؤها على إصدارات API أقدم من 2020-03-01 على مجموعات عقدة المستخدم فقط نتيجة لذلك. لتلقي وظائف مجموعة عقدة النظام والفوائد على المجموعة القديمة، قم بتحديث وضع مجموعة العقد الموجودة مع الأوامر التالية على أحدث إصدار Azure CLI.

يمكنك تغيير الأوضاع لكل من النظام ومجموعة عقدة المستخدم. يمكنك تغيير مجموعة عقدة نظام إلى مجموعة مستخدم فقط إذا كان مجموعة عقدة نظام آخر موجودة مسبقًا على نظام المجموعة AKS.

يغير هذا الأمر مجموعة عقدة نظام إلى مجموعة عقدة مستخدم.

az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode user

يغير هذا الأمر مجموعة عقدة مستخدم إلى مجموعة عقدة نظام.

az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode system

حذف مجموعة عقدة نظام

إشعار

لاستخدام مجموعات عقدة النظام على مجموعات AKS قبل إصدار API 2020-03-02، قم بإضافة مجموعة عقدة نظام جديد، ثم حذف مجموعة العقدة الافتراضية الأصلية.

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

az aks nodepool delete --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool

تنظيف الموارد

لحذف المجموعة، استخدم الأمر az group delete لحذف مجموعة موارد AKS:

az group delete --name myResourceGroup --yes --no-wait

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

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