إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكنك إنشاء موازن تحميل داخلي واستخدامه لتقييد الوصول إلى تطبيقاتك في خدمة Azure Kubernetes (AKS). لا يحتوي موازن التحميل الداخلي على عنوان IP عام ويجعل خدمة Kubernetes متاحة فقط للتطبيقات التي يمكنها الوصول إلى IP الخاص. يمكن أن تكون هذه التطبيقات ضمن نفس الشبكة الافتراضية أو في شبكة افتراضية أخرى من خلال التناظر الافتراضي. توضح لك هذه المقالة كيفية إنشاء موازن تحميل داخلي واستخدامه مع AKS.
هام
ابتداء من 30 سبتمبر 2025، لم تعد خدمة خدمة Azure Kubernetes (AKS) تدعم Load Balancer الأساسي. لتجنب أي اضطرابات محتملة في الخدمة، نوصي باستخدام موازن التحميل القياسي للنشر الجديد وترقية أي عمليات نشر موجودة إلى موازن التحميل القياسي. لمزيد من المعلومات حول هذا التقاعد، راجع مشكلة GitHub للتقاعدوإعلان تقاعد تحديثات Azure. للبقاء على اطلاع بالإعلانات والتحديثات، تابع ملاحظات إصدار AKS.
قبل البدء
- تفترض هذه المقالة أن لديك تجمع AKS قائمًا. إذا كنت بحاجة إلى نظام مجموعة AKS، يمكنك إنشاء مجموعة باستخدام Azure CLI أو Azure PowerShell أو مدخل Azure.
- تحتاج إلى الإصدار 2.0.59 من Azure CLI أو أحدث. قم بتشغيل
az --versionللعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - إذا كنت ترغب في استخدام شبكة فرعية أو مجموعة موارد موجودة، تحتاج هوية نظام مجموعة AKS إلى إذن لإدارة موارد الشبكة. للحصول على معلومات، راجع تكوين شبكة Azure CNI في AKS. إذا كنت تقوم بإعداد موازن التحميل الخاص بك ليستخدم عنوان IP في شبكة فرعية مختلفة، تأكد من أن هوية عنقود AKS لديها
Readأيضا وصول إلى تلك الشبكة الفرعية.- لمزيد من المعلومات حول الأذونات، راجع تفويض وصول AKS إلى موارد Azure الأخرى.
قم بإنشاء موازن تحميل داخلي
إنشاء بيان خدمة باسم
internal-lb.yamlمع نوعLoadBalancerالخدمة والتعليعazure-load-balancer-internalالتوضيحي.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appانشر موازن التحميل الداخلي باستخدام
kubectl applyالأمر . ينشئ هذا الأمر موازن تحميل Azure في مجموعة موارد العقدة المتصلة بنفس الشبكة الظاهرية مثل نظام مجموعة AKS.kubectl apply -f internal-lb.yamlعرض تفاصيل الخدمة باستخدام
kubectl get serviceالأمر .kubectl get service internal-appيظهر عنوان IP لموازن التحميل الداخلي في
EXTERNAL-IPالعمود، كما هو موضح في إخراج المثال التالي. في هذا السياق، يشير External إلى الواجهة الخارجية لموازن التحميل. هذا لا يعني أنه يتلقى عنوان IP خارجي عام. يتم تعيين عنوان IP هذا ديناميكيا من نفس الشبكة الفرعية مثل نظام مجموعة AKS.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.248.59 10.240.0.7 80:30555/TCP 2m
تحديد عنوان IP
عند تحديد عنوان IP لموازن التحميل، يجب أن يتواجد عنوان IP المحدد في نفس الشبكة الظاهرية مثل نظام مجموعة AKS، ولكن لا يمكن تعيينه بالفعل إلى مورد آخر في الشبكة الظاهرية. على سبيل المثال، يجب عدم استخدام عنوان IP في النطاق المخصص لشبكة Kubernetes الفرعية داخل نظام مجموعة AKS. يمكن أن يؤدي استخدام عنوان IP الذي تم تعيينه بالفعل إلى مورد آخر في نفس الشبكة الظاهرية إلى حدوث مشكلات في موازن التحميل.
يمكنك استخدام az network vnet subnet list أمر Azure CLI أو Get-AzVirtualNetworkSubnetConfig PowerShell cmdlet للحصول على الشبكات الفرعية في شبكتك الظاهرية.
لمزيد من المعلومات حول الشبكات الفرعية، راجع إضافة تجمع عقدة مع شبكة فرعية فريدة.
إذا كنت تريد استخدام عنوان IP معين مع موازن التحميل، فلديك خياران: تعيين التعليقات التوضيحية للخدمة أو إضافة الخاصية LoadBalancerIP إلى بيان YAML لموازن التحميل.
هام
يتم إلغاء إضافة LoadBalancerIP الخاصية إلى قائمة الموازن للتحميل YAML بعد كوبيرنتيز في المراحل المتصاعدة. بينما يظل الاستخدام الحالي كما هو ومن المتوقع أن تعمل الخدمات الحالية دون تعديل، نوصي بشدة بتعيين التعليقات التوضيحية للخدمة بدلا من ذلك. لمزيد من المعلومات حول تعليقات الخدمة، راجع موازن تحميل Azure المدعومة التوضيحات.
تعيين التعليقات التوضيحية للخدمة باستخدام
service.beta.kubernetes.io/azure-load-balancer-ipv4لعنوان IPv4 ولعنوانservice.beta.kubernetes.io/azure-load-balancer-ipv6IPv6.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25 service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appعرض تفاصيل الخدمة باستخدام
kubectl get serviceالأمر .kubectl get service internal-appيجب أن يعكس عنوان IP في
EXTERNAL-IPالعمود عنوان IP المحدد، كما هو موضح في إخراج المثال التالي:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
لمزيد من المعلومات حول تكوين موازن التحميل في شبكة فرعية مختلفة، راجع تحديد شبكة فرعية مختلفة.
توصيل خدمة Azure Private Link بموازن التحميل الداخلي
المتطلبات
- تحتاج إلى إصدار Kubernetes 1.22.x أو أحدث.
- تحتاج إلى مجموعة موارد موجودة مع شبكة افتراضية وشبكة فرعية. مجموعة الموارد هذه هي المكان الذي تنشئ فيه نقطة النهاية الخاصة. إذا لم يكن لديك هذه الموارد، فشاهد إنشاء شبكة ظاهرية وشبكة فرعية.
إنشاء اتصال خدمة Private Link
إنشاء بيان خدمة باسم
internal-lb-pls.yamlمع نوعLoadBalancerالخدمة والتعليقاتazure-load-balancer-internalالتوضيحية وazure-pls-create. لمزيد من الخيارات، راجع مستند تصميم تكامل خدمة Azure Private Link.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-pls-create: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appانشر موازن التحميل الداخلي باستخدام
kubectl applyالأمر . ينشئ هذا الأمر موازن تحميل Azure في مجموعة موارد العقدة المتصلة بنفس الشبكة الظاهرية مثل نظام مجموعة AKS. كما أنه ينشئ كائن Private Link Service الذي يتصل بتكوين IP للواجهة الأمامية لموازن التحميل المرتبط بخدمة Kubernetes.kubectl apply -f internal-lb-pls.yamlعرض تفاصيل الخدمة باستخدام
kubectl get serviceالأمر .kubectl get service internal-appيظهر عنوان IP لموازن التحميل الداخلي في
EXTERNAL-IPالعمود، كما هو موضح في إخراج المثال التالي. في هذا السياق، يشير External إلى الواجهة الخارجية لموازن التحميل. هذا لا يعني أنه يتلقى عنوان IP خارجي عام.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64mعرض تفاصيل كائن Private Link Service باستخدام
az network private-link-service listالأمر .# Create a variable for the node resource group AKS_MC_RG=$(az aks show -g myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv) # View the details of the Private Link Service object az network private-link-service list -g $AKS_MC_RG --query "[].{Name:name,Alias:alias}" -o tableيجب أن يبدو الإخراج مشابها لإخراج المثال التالي:
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
إنشاء نقطة نهاية خاصة لخدمة Private Link
تسمح لك نقطة النهاية الخاصة بالاتصال بشكل خاص بكائن خدمة Kubernetes عبر Private Link Service التي أنشأتها.
إنشاء نقطة النهاية الخاصة باستخدام az network private-endpoint create الأمر .
# Create a variable for the private link service
AKS_PLS_ID=$(az network private-link-service list -g $AKS_MC_RG --query "[].id" -o tsv)
# Create the private endpoint
$ az network private-endpoint create \
-g myOtherResourceGroup \
--name myAKSServicePE \
--vnet-name myOtherVNET \
--subnet pe-subnet \
--private-connection-resource-id $AKS_PLS_ID \
--connection-name connectToMyK8sService
تخصيصات PLS عبر التعليقات التوضيحية
يمكنك استخدام التعليقات التوضيحية التالية لتخصيص مورد PLS:
| تعليق توضيحي | قيمة | الوصف | مطلوبة | افتراضي |
|---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
قيمة منطقية تشير إلى ما إذا كان يجب إنشاء PLS. | مطلوبة | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
سلسلة تحدد اسم مورد PLS المراد إنشاؤه. | اختياري | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
السلسلة التي تحدد اسم مجموعة الموارد التي يتم إنشاء مورد PLS فيها | اختياري | MC_resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
السلسلة التي تشير إلى الشبكة الفرعية التي يتم نشر PLS عليها. يجب أن توجد هذه الشبكة الفرعية في نفس الشبكة الافتراضية التي توجد بها مجموعة الواجهة الخلفية. يتم تخصيص عناوين IP ل PLS NAT داخل هذه الشبكة الفرعية. | اختياري | إذا service.beta.kubernetes.io/azure-load-balancer-internal-subnet، يتم استخدام هذه الشبكة الفرعية ILB. وإلا، يتم استخدام الشبكة الفرعية الافتراضية من ملف التكوين. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
إجمالي عدد عناوين NAT IPs الخاصة المراد تخصيصها. | اختياري | 1 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
قائمة مفصولة بمسافة من عناوين IPv4 الثابتة التي سيتم تخصيصها. (IPv6 غير مدعوم حاليا.) يجب ألا يكون إجمالي عدد عناوين IP أكبر من عدد عناوين IP المحددة في service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count. إذا كان هناك عدد أقل من عناوين IP المحددة، يتم تخصيص الباقي ديناميكيا. يتم تعيين عنوان IP الأول في القائمة على أنه Primary. |
اختياري | يتم تخصيص جميع عناوين IP ديناميكيا. |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" أو "false" |
منطقي يشير إلى ما إذا كان يجب تمكين بروتوكول TCP PROXY على PLS لتمرير معلومات الاتصال، بما في ذلك معرف الارتباط وعنوان IP المصدر. يجب أن تدعم خدمة الواجهة الخلفية بروتوكول PROXY وإلا سيفشل الاتصال. | اختياري | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" أو "*" |
قائمة متباعدة بمعرفات اشتراك Azure التي تظهر خدمة الرابط الخاص لها. استخدم "*" لكشف PLS لكافة الأقسام الفرعية (الأقل تقييدا). |
اختياري | قائمة [] فارغة تشير إلى التحكم في الوصول القائم على الأدوار فقط: هذه الخدمة الخاصة متاحة فقط للأفراد الذين لديهم صلاحيات التحكم في الوصول القائم على الأدوار داخل دليلك. (الأكثر تقييدا) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
قائمة منفصلة بمساحات لمعرفات اشتراك Azure. يسمح هذا بالموافقة تلقائيا على طلبات اتصال PE من الاشتراكات المدرجة في PLS. يعمل هذا فقط عندما تكون الرؤية مضبوطة على "*". |
اختياري | [] |
استخدام الشبكات الخاصة
عند إنشاء نظام مجموعة AKS، يمكنك تحديد إعدادات الشبكة المتقدمة. تسمح لك هذه الإعدادات بنشر نظام المجموعة في شبكة Azure الظاهرية والشبكات الفرعية الموجودة. على سبيل المثال، يمكنك نشر نظام مجموعة AKS في شبكة خاصة متصلة بالبيئة المحلية وتشغيل الخدمات التي يمكن الوصول إليها داخليا فقط.
لمزيد من المعلومات، راجع تكوين الشبكات الفرعية للشبكة الظاهرية الخاصة بك باستخدام Kubenet أو باستخدام Azure CNI.
لا تحتاج إلى إجراء أي تغييرات على الخطوات السابقة لنشر موازن تحميل داخلي يستخدم شبكة خاصة في نظام مجموعة AKS. يتم إنشاء موازن التحميل في نفس مجموعة الموارد مثل نظام مجموعة AKS، ولكنه متصل بدلا من ذلك بشبكتك الظاهرية الخاصة والشبكة الفرعية، كما هو موضح في المثال التالي:
$ kubectl get service internal-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
internal-app LoadBalancer 10.1.15.188 10.0.0.35 80:31669/TCP 1m
إشعار
يجب أن يكون لهوية نظام المجموعة المستخدمة من قبل مجموعة AKS على الأقل دور مساهم الشبكة على مورد الشبكة الظاهرية. يمكنك عرض هوية نظام المجموعة باستخدام az aks show الأمر ، مثل az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity". يمكنك تعيين دور "مساهم الشبكة" باستخدام az role assignment create الأمر ، مثل az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor".
إذا كنت تريد تعريف دور مخصص بدلا من ذلك، فأنت بحاجة إلى الأذونات التالية:
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/read
لمزيد من المعلومات، راجع إضافة شبكة فرعية للشبكة الظاهرية أو تغييرها أو حذفها.
تحديد شبكة فرعية مختلفة
أضف التعليق التوضيحي azure-load-balancer-internal-subnet إلى الخدمة لتحديد شبكة فرعية لموازن التحميل الخاص بك. يجب أن تكون الشبكة الفرعية المحددة في نفس الشبكة الظاهرية مثل نظام المجموعة AKS. عند النشر، يكون عنوان موازن EXTERNAL-IP التحميل جزءا من الشبكة الفرعية المحددة.
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
حذف موازن التحميل
يتم حذف موازن التحميل عند حذف جميع خدماته.
كما هو الحال مع أي مورد Kubernetes، يمكنك حذف خدمة مباشرة، مثل kubectl delete service internal-app، والتي تحذف أيضا موازن تحميل Azure الأساسي.
الخطوات التالية
لمعرفة المزيد حول خدمات Kubernetes، راجع وثائق خدمات Kubernetes.