اقرأ باللغة الإنجليزية

مشاركة عبر


إعداد موازنة تحميل الطبقة 4 متعددة المجموعات عبر مجموعات أعضاء Azure Kubernetes Fleet Manager (معاينة)

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

يمكنك اتباع هذا المستند لإعداد موازنة تحميل الطبقة 4 لمثل هذه التطبيقات متعددة المجموعات.

هام

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

المتطلبات الأساسية

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

نشر حمل عمل عبر مجموعات الأعضاء لمورد Fleet

ملاحظة

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

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

  1. إنشاء مساحة اسم على نظام مجموعة الأسطول:

    KUBECONFIG=fleet kubectl create namespace kuard-demo
    

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

    namespace/kuard-demo created
    
  2. تطبيق عناصر Deployment, Service, ServiceExport:

    KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yaml
    

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

    deployment.apps/kuard created
    service/kuard created
    serviceexport.networking.fleet.azure.com/kuard created
    
  3. قم بإنشاء ما يلي ClusterResourcePlacement في ملف يسمى crp-2.yaml. لاحظ أننا نختار أنظمة المجموعات في eastus المنطقة:

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterResourcePlacement
    metadata:
      name: kuard-demo
    spec:
      resourceSelectors:
        - group: ""
          version: v1
          kind: Namespace
          name: kuard-demo
      policy:
        affinity:
          clusterAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              clusterSelectorTerms:
                - labelSelector:
                    matchLabels:
                      fleet.azure.com/location: eastus
    
  4. ClusterResourcePlacementتطبيق :

    KUBECONFIG=fleet kubectl apply -f crp-2.yaml
    

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

    clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
    
  5. تحقق من ClusterResourcePlacementحالة :

    KUBECONFIG=fleet kubectl get clusterresourceplacements
    

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

    NAME            GEN   SCHEDULED   SCHEDULEDGEN   APPLIED   APPLIEDGEN   AGE
    kuard-demo      1     True        1              True      1            20s
    

إنشاء MultiClusterService لتحميل التوازن عبر نقاط نهاية الخدمة في مجموعات أعضاء متعددة

  1. تحقق مما إذا تم تصدير الخدمة بنجاح لمجموعات الأعضاء في eastus المنطقة:

    KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demo
    

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

    NAME    IS-VALID   IS-CONFLICTED   AGE
    kuard   True       False           25s
    
    KUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demo
    

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

    NAME    IS-VALID   IS-CONFLICTED   AGE
    kuard   True       False           55s
    

    يجب أن ترى أن الخدمة صالحة للتصدير (IS-VALID الحقل هو true) وليس لها تعارضات مع الصادرات الأخرى (IS-CONFLICT هي false).

    ملاحظة

    قد يستغرق نشر ServiceExport دقيقة أو دقيقتين.

  2. إنشاء MultiClusterService على عضو واحد لتحميل التوازن عبر نقاط نهاية الخدمة في هذه المجموعات:

    KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yaml
    

    ملاحظة

    لعرض الخدمة عبر IP الداخلي بدلا من عنوان IP العام، أضف التعليق التوضيحي إلى MultiClusterService:

    apiVersion: networking.fleet.azure.com/v1alpha1
    kind: MultiClusterService
    metadata:
      name: kuard
      namespace: kuard-demo
      annotations:
         service.beta.kubernetes.io/azure-load-balancer-internal: "true"
      ...
    

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

    multiclusterservice.networking.fleet.azure.com/kuard created
    
  3. تحقق من صحة MultiClusterService عن طريق تشغيل الأمر التالي:

    KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demo
    

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

    NAME    SERVICE-IMPORT   EXTERNAL-IP     IS-VALID   AGE
    kuard   kuard            <a.b.c.d>       True       40s
    

    IS-VALID يجب أن يكون true الحقل في الإخراج. تحقق من عنوان IP لموازن التحميل الخارجي (EXTERNAL-IP) في الإخراج. قد يستغرق الأمر بعض الوقت قبل معالجة الاستيراد بالكامل ويصبح عنوان IP متوفرا.

  4. قم بتشغيل الأمر التالي عدة مرات باستخدام عنوان IP لموازن التحميل الخارجي:

    curl <a.b.c.d>:8080 | grep addrs 
    

    لاحظ أن عناوين IP للقرون التي تخدم الطلب تتغير وأن هذه القرون من مجموعات aks-member-1 الأعضاء ومن aks-member-2 eastus المنطقة. يمكنك التحقق من عناوين IP الخاصة بالجراب عن طريق تشغيل الأوامر التالية على المجموعات من eastus المنطقة:

    KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wide
    
    KUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide