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

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

قبل البدء

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

قوالب Azure Resource Manager ومناطق التوفر

ضع التفاصيل التالية في الاعتبار عند إنشاء مجموعة AKS مع مناطق التوفر باستخدام قالب Azure Resource Manager:

  • إذا قمت بتعريف قيمة خالية بشكل صريح في قالب، على سبيل المثال، "availabilityZones": null، يعامل القالب الخاصية كما لو أنها غير موجودة. وهذا يعني أن نظام المجموعة لا يتم نشره في منطقة توفر.
  • إذا لم تقم بتضمين الخاصية "availabilityZones": في القالب، فلن يتم نشر نظام المجموعة في منطقة توفر.
  • لا يمكنك تحديث إعدادات مناطق التوفر على مجموعة موجودة، حيث يختلف السلوك عند تحديث نظام مجموعة AKS باستخدام قوالب Azure Resource Manager. إذا قمت بتعيين قيمة فارغة بشكل صريح في القالب الخاص بك لمناطق التوفر وتحديث نظام المجموعة الخاص بك، فإنه لا يحدث نظام المجموعة لمناطق التوفر. ومع ذلك، إذا حذفت خاصية مناطق التوفر باستخدام صيغة مثل "availabilityZones": []، فإن النشر يحاول تعطيل مناطق التوفر على أنظمة مجموعات AKS الحالية ويفشل.

إنشاء نظام مجموعة AKS عبر مناطق التوفر

عند إنشاء نظام مجموعة باستخدام az aks create الأمر ، --zones تحدد المعلمة مناطق التوفر لنشر عقد العامل فيها. لا يتم التحكم في مناطق التوفر التي يتم نشر مكونات وحدة التحكم المدارة فيها بواسطة هذه المعلمة. يتم نشرها تلقائيا عبر جميع مناطق التوفر (إذا كانت موجودة) في المنطقة أثناء نشر نظام المجموعة.

توضح أوامر المثال التالي كيفية إنشاء مجموعة موارد ومجموعة AKS بإجمالي ثلاث عقد. عقدة عامل واحدة في المنطقة 1، وواحدة في 2، ثم واحدة في 3.

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

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

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

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

    عند تحديد المنطقة التي يجب أن تنتمي إليها عقدة جديدة، يستخدم تجمع عقدة AKS المحدد موازنة منطقة أفضل جهد تقدمها مجموعات مقياس الجهاز الظاهري Azure الأساسية. تجمع عقدة AKS "متوازن" عندما يكون لكل منطقة نفس عدد الأجهزة الظاهرية أو +- جهاز ظاهري واحد في جميع المناطق الأخرى لمجموعة المقياس.

التحقق من نشر العُقد عبر المناطق

عندما تكون المجموعة جاهزة، قم بإدراج منطقة التوفر التي توجد بها عقد العامل في مجموعة التحجيم.

  1. احصل على بيانات اعتماد نظام مجموعة AKS باستخدام az aks get-credentials الأمر :

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. سرد العقد في نظام المجموعة باستخدام kubectl describe الأمر وتصفية القيمة topology.kubernetes.io/zone .

    kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
    

    يُظهر مثال الناتج التالي العُقد الثلاثة الموزعة عبر المنطقة المحددة ومناطق التوفر، مثل eastus2-1 لمنطقة التوفر الأولى وeastus2-2 لمنطقة التوفر الثانية:

    Name:       aks-nodepool1-28993262-vmss000000
                topology.kubernetes.io/zone=eastus2-1
    Name:       aks-nodepool1-28993262-vmss000001
                topology.kubernetes.io/zone=eastus2-2
    Name:       aks-nodepool1-28993262-vmss000002
                topology.kubernetes.io/zone=eastus2-3
    

أثناء إضافة المزيد من العقد إلى تجمع عامل، يقوم النظام الأساسي Azure تلقائيا بتوزيع الأجهزة الظاهرية الأساسية عبر مناطق التوفر المحددة.

باستخدام إصدارات Kubernetes 1.17.0 والإصدارات الأحدث، تستخدم AKS التسمية topology.kubernetes.io/zone والمهملة failure-domain.beta.kubernetes.io/zone. يمكنك الحصول على نفس النتيجة من تشغيل kubectl describe nodes الأمر في المثال السابق باستخدام الأمر التالي:

kubectl get nodes -o custom-columns=NAME:'{.metadata.name}',REGION:'{.metadata.labels.topology\.kubernetes\.io/region}',ZONE:'{metadata.labels.topology\.kubernetes\.io/zone}'

يشبه المثال التالي الإخراج بمزيد من التفاصيل المطولة:

NAME                                REGION   ZONE
aks-nodepool1-34917322-vmss000000   eastus   eastus-1
aks-nodepool1-34917322-vmss000001   eastus   eastus-2
aks-nodepool1-34917322-vmss000002   eastus   eastus-3

التحقق من نشر الجراب عبر المناطق

كما هو موثق في الملصقات المعروفة والتعليقات التوضيحية والعيوب، تستخدم Kubernetes الملصق topology.kubernetes.io/zone لنشر الجرابات تلقائياً في خدمة أو وحدة تحكم النسخ المتماثل عبر المناطق المختلفة المتاحة. في هذا المثال، يمكنك اختبار التسمية وتوسيع نطاق مجموعتك من 3 إلى 5 عقد للتحقق من انتشار الجراب بشكل صحيح.

  1. قم بتحجيم نظام مجموعة AKS من 3 إلى 5 عقد باستخدام az aks scale الأمر مع --node-count تعيين إلى 5.

    az aks scale \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --node-count 5
    
  2. عند اكتمال عملية المقياس، تحقق من توزيع الجراب عبر المناطق باستخدام الأمر التالي kubectl describe :

    kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
    

    يظهر إخراج المثال التالي العقد الخمس الموزعة عبر المنطقة المحددة ومناطق التوفر، مثل eastus2-1 لمنطقة التوفر الأولى و eastus2-2 لمنطقة التوفر الثانية:

    Name:       aks-nodepool1-28993262-vmss000000
                topology.kubernetes.io/zone=eastus2-1
    Name:       aks-nodepool1-28993262-vmss000001
                topology.kubernetes.io/zone=eastus2-2
    Name:       aks-nodepool1-28993262-vmss000002
                topology.kubernetes.io/zone=eastus2-3
    Name:       aks-nodepool1-28993262-vmss000003
                topology.kubernetes.io/zone=eastus2-1
    Name:       aks-nodepool1-28993262-vmss000004
                topology.kubernetes.io/zone=eastus2-2
    
  3. نشر تطبيق NGINX مع ثلاث نسخ متماثلة kubectl create deployment باستخدام الأوامر التالية و kubectl scale :

    kubectl create deployment nginx --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    kubectl scale deployment nginx --replicas=3
    
  4. تحقق من توزيع الجراب عبر المناطق باستخدام الأمر التالي kubectl describe :

    kubectl describe pod | grep -e "^Name:" -e "^Node:"
    

    يظهر إخراج المثال التالي القرون الثلاثة الموزعة عبر المنطقة المحددة ومناطق التوفر، مثل eastus2-1 لمنطقة التوفر الأولى و eastus2-2 لمنطقة التوفر الثانية:

    Name:         nginx-6db489d4b7-ktdwg
    Node:         aks-nodepool1-28993262-vmss000000/10.240.0.4
    Name:         nginx-6db489d4b7-v7zvj
    Node:         aks-nodepool1-28993262-vmss000002/10.240.0.6
    Name:         nginx-6db489d4b7-xz6wj
    Node:         aks-nodepool1-28993262-vmss000004/10.240.0.8
    

    كما ترى من الإخراج السابق، يتم تشغيل أول جراب على العقدة 0 الموجودة في منطقة eastus2-1التوفر . يتم تشغيل الجراب الثاني على العقدة 2، المقابلة ل eastus2-3، والثالثة في العقدة 4، في eastus2-2. دون أي تكوين إضافي، ينشر Kubernetes القرون بشكل صحيح عبر جميع مناطق التوفر الثلاث.

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

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