إعداد موازنة تحميل الطبقة 4 متعددة المجموعات عبر مجموعات أعضاء Azure Kubernetes Fleet Manager (معاينة)
بالنسبة للتطبيقات المنشورة عبر مجموعات متعددة، غالبا ما يرغب المسؤولون في توجيه نسبة استخدام الشبكة الواردة إليها عبر المجموعات.
يمكنك اتباع هذا المستند لإعداد موازنة تحميل الطبقة 4 لمثل هذه التطبيقات متعددة المجموعات.
هام
تتوفر ميزات معاينة Azure Kubernetes Fleet Manager على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات Azure Kubernetes Fleet Manager جزئيا من خلال دعم العملاء على أساس أفضل جهد. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
اقرأ النظرة العامة المفاهيمية لهذه الميزة، والتي توفر شرحا للكائنات
ServiceExport
المشارMultiClusterService
إليها في هذا المستند.يجب أن يكون لديك مورد Fleet مع نظام مجموعة المركز ومجموعات الأعضاء. إذا لم يكن لديك هذا المورد، فاتبع التشغيل السريع: إنشاء مورد Fleet والانضمام إلى مجموعات الأعضاء.
يجب أن تكون مجموعات خدمة Azure Kubernetes (AKS) المستهدفة التي يتم توزيع أحمال العمل عليها موجودة إما على نفس الشبكة الظاهرية أو على الشبكات الظاهرية النظيرة.
- يجب إضافة هذه المجموعات المستهدفة كتجمعات أعضاء إلى مورد Fleet.
- يجب أن تستخدم هذه المجموعات المستهدفة شبكة Azure CNI (واجهة شبكة الحاوية).
يجب أن تحصل على حق الوصول إلى واجهة برمجة تطبيقات Kubernetes لنظام مجموعة المركز باتباع الخطوات الواردة في واجهة برمجة تطبيقات Kubernetes لنظام مجموعة مركز Access Fleet.
تعيين متغيرات البيئة التالية والحصول على kubeconfigs للأسطول وجميع مجموعات الأعضاء:
export GROUP=<resource-group> export FLEET=<fleet-name> export MEMBER_CLUSTER_1=aks-member-1 export MEMBER_CLUSTER_2=aks-member-2 az fleet get-credentials --resource-group ${GROUP} --name ${FLEET} --file fleet az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_1} --file aks-member-1 az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_2} --file aks-member-2
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
ملاحظة
تشير الخطوات الواردة في هذا الدليل الإرشادي إلى نموذج تطبيق لأغراض العرض التوضيحي فقط. يمكنك استبدال حمل العمل هذا بأي من عناصر التوزيع والخدمة الموجودة لديك.
تنشر هذه الخطوات نموذج حمل العمل من نظام مجموعة Fleet إلى مجموعات الأعضاء باستخدام نشر تكوين Kubernetes. بدلا من ذلك، يمكنك اختيار توزيع تكوينات Kubernetes هذه على كل مجموعة عضو بشكل منفصل، كل على حدة.
إنشاء مساحة اسم على نظام مجموعة الأسطول:
KUBECONFIG=fleet kubectl create namespace kuard-demo
يبدو الإخراج مشابها للمثال التالي:
namespace/kuard-demo created
تطبيق عناصر 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
قم بإنشاء ما يلي
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
ClusterResourcePlacement
تطبيق :KUBECONFIG=fleet kubectl apply -f crp-2.yaml
إذا نجحت، يبدو الإخراج مشابها للمثال التالي:
clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
تحقق من
ClusterResourcePlacement
حالة :KUBECONFIG=fleet kubectl get clusterresourceplacements
إذا نجحت، يبدو الإخراج مشابها للمثال التالي:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE kuard-demo 1 True 1 True 1 20s
تحقق مما إذا تم تصدير الخدمة بنجاح لمجموعات الأعضاء في
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 دقيقة أو دقيقتين.
إنشاء
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
تحقق من صحة 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 متوفرا.قم بتشغيل الأمر التالي عدة مرات باستخدام عنوان 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
ملاحظات Azure Kubernetes Service
Azure Kubernetes Service هو مشروع مصدر مفتوح. حدد رابطًا لتقديم الملاحظات: