إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تمكن العقد الظاهرية اتصال الشبكة بين pods التي تعمل في مثيلات حاوية Azure (ACI) ومجموعات AKS. لتوفير هذا الاتصال، يمكنك إنشاء شبكة فرعية للشبكة الظاهرية وتعيين الأذونات المفوضة. تعمل العُقد الظاهرية فقط مع مجموعات AKS التي تم إنشاؤها باستخدام شبكة متقدمة (Azure CNI). بشكل افتراضي، يتم إنشاء مجموعات AKS مع الشبكات الأساسية (kubenet). توضح لك هذه المقالة كيفية إنشاء شبكة افتراضية وشبكات فرعية، ثم نشر مجموعة AKS التي تستخدم الشبكات المتقدمة.
توضح هذه المقالة كيفية استخدام Azure CLI لإنشاء موارد الشبكة الظاهرية وتكوينها ومجموعة AKS الممكنة مع العقد الظاهرية.
قبل البدء
هام
قبل استخدام العُقد الظاهرية مع AKS، راجع كلّاً من قيود العقد الظاهرية لـ AKS وقيود الشبكات الظاهرية لـ ACI. تؤثر هذه القيود على الموقع وتكوين الشبكة وتفاصيل التكوين الأخرى لكل من مجموعة AKS والعُقد الظاهرية.
تحتاج إلى موفر خدمة ACI مسجل مع اشتراكك. يمكنك التحقق من حالة تسجيل موفر ACI باستخدام
az provider listالأمر .az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o tableيجب على موفر Microsoft.ContainerInstance الإبلاغ على أنه مسجل، كما هو موضح في المثال التالي الناتج:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequiredإذا ظهر الموفر على أنه NotRegistered، فقم بتسجيل الموفر باستخدام
az provider register.az provider register --namespace Microsoft.ContainerInstanceإذا كنت تستخدم Azure CLI، تتطلب هذه المقالة الإصدار 2.0.49 من Azure CLI أو أحدث. قم بتشغيل
az --versionللعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. يمكنك أيضا استخدام Azure Cloud Shell.
إطلاق Azure Cloud Shell
Azure Cloud Shell هو shell تفاعلي مجاني يمكنك استخدامه لتشغيل الخطوات الواردة في هذه المقالة. يحتوي على أدوات Azure الشائعة المثبتة مسبقا والمكونة.
لفتح Cloud Shell، حدد Try it من الزاوية اليمنى العليا لقالب التعليمات البرمجية. يمكنك أيضًا تشغيل Cloud Shell في علامة تبويب مستعرض منفصلة بالانتقال إلى https://shell.azure.com/bash. حدد "Copy" لنسخ كتل التعليمة البرمجية، ولصقها في Cloud Shell، ثم اضغط على "enter" لتشغيلها.
إنشاء مجموعة موارد
مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها.
إنشاء مجموعة موارد باستخدام
az group createالأمر .az group create --name myResourceGroup --location eastus
إنشاء شبكة ظاهرية
هام
تتطلب العقدة الظاهرية شبكة ظاهرية مخصصة وشبكة فرعية مقترنة. لا يمكن إقرانه بنفس الشبكة الظاهرية مثل نظام مجموعة AKS.
إنشاء شبكة ظاهرية
az network vnet createباستخدام الأمر . ينشئ المثال التالي شبكة ظاهرية تسمى myVnet ببادئة عنوان 10.0.0.0/8 وشبكة فرعية تسمى myAKSSubnet. بادئة العنوان لهذه الشبكة الفرعية افتراضيا إلى 10.240.0.0/16.az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --address-prefixes 10.0.0.0/8 \ --subnet-name myAKSSubnet \ --subnet-prefix 10.240.0.0/16إنشاء شبكة فرعية إضافية للعقد الظاهرية
az network vnet subnet createباستخدام الأمر . ينشئ المثال التالي شبكة فرعية تسمى myVirtualNodeSubnet ببادئة عنوان 10.241.0.0/16.az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myVirtualNodeSubnet \ --address-prefixes 10.241.0.0/16
إنشاء نظام مجموعة AKS مع الهوية المُدارة
احصل على معرف الشبكة الفرعية
az network vnet subnet showباستخدام الأمر .az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsvإنشاء نظام مجموعة AKS باستخدام
az aks createالأمر واستبدال<subnetId>بالمعرف الذي تم الحصول عليه في الخطوة السابقة. ينشئ المثال التالي مجموعة تسمى myAKSCluster مع خمس عقد.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5 \ --network-plugin azure \ --vnet-subnet-id <subnetId> \ --generate-ssh-keysبعد عدة دقائق، يكمل الأمر ويعيد معلومات بتنسيق JSON حول نظام المجموعة.
لمزيد من المعلومات حول الهويات المدارة، راجع استخدام الهويات المدارة.
تمكين الوظيفة الإضافية للعقد الظاهرية
إشعار
إذا كان لديك نظام مجموعة خدمة Azure Kubernetes موجود تم إنشاؤه يستخدم Azure CNI للشبكات المتقدمة، فيجب أن تكون قادرا على تمكين العقد الظاهرية كوظيفة إضافية باستخدام CLI.
تمكين العقد الظاهرية
az aks enable-addonsباستخدام الأمر . يستخدم المثال التالي الشبكة الفرعية المسماة myVirtualNodeSubnet التي تم إنشاؤها في خطوة سابقة.az aks enable-addons \ --resource-group myResourceGroup \ --name myAKSCluster \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet
منح الإذن للهوية المدارة
امنح دور مساهم الشبكة على الشبكة الفرعية المستخدمة من قبل العقد الافتراضية للهوية المدارة لإضافة العقدة الافتراضية المسماة aciconnectorlinux-aks-cluster-name<>.
NODE_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
PRINCIPAL_ID=$(az identity show --resource-group $NODE_RG --name aciconnectorlinux-myAKSCluster --query principalId -o tsv)
VIRTUAL_NODE_SUBNET_ID=$(az network vnet subnet show --resource-group myResourceGroup --vnet-name <VNET_NAME> --name myVirtualNodeSubnet --query id -o tsv)
az role assignment create --assignee $PRINCIPAL_ID --role "Network Contributor" --scope $VIRTUAL_NODE_SUBNET_ID
الاتصال بنظام المجموعة
قم بتكوين
kubectlللاتصال بنظام مجموعة Kubernetes باستخدام أمرaz aks get-credentials. تقوم هذه الخطوة بتنزيل بيانات الاعتماد وتكوين Kubernetes CLI لاستخدامها.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterتحقق من الاتصال بالمجموعة باستخدام
kubectl getالأمر الذي يقوم بإرجاع قائمة بعقد نظام المجموعة.kubectl get nodesيظهر إخراج المثال التالي عقدة الجهاز الظاهري الفردية التي تم إنشاؤها والعقدة الظاهرية ل Linux، virtual-node-aci-linux:
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
نشر تطبيق نموذج
قم بإنشاء ملف باسم
virtual-node.yamlوانسخه في YAML التالي. يقوم YAML بجدولة الحاوية على العقدة عن طريق تعريف nodeSelector والتسامح.apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists - key: azure.com/aci effect: NoScheduleقم بتشغيل التطبيق باستخدام
kubectl applyالأمر .kubectl apply -f virtual-node.yamlاحصل على قائمة بالقرون والعقدة المجدولة
kubectl get podsباستخدام الأمر مع الوسيطة-o wide.kubectl get pods -o wideتتم جدولة الجراب على العقدة الظاهرية virtual-node-aci-linux، كما هو موضح في إخراج المثال التالي:
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linuxيتم تعيين عنوان IP داخلي للحجرة من الشبكة الفرعية لشبكة Azure الظاهرية المفوضة للاستخدام مع العُقد الظاهرية.
إشعار
إذا كنت تستخدم صورًا مخزنة في Azure Container Registry، فقم بتكوين سر Kubernetes واستخدمه. القيد الحالي للعقد الظاهرية هو أنه لا يمكنك استخدام المصادقة الأساسية لخدمة Microsoft Entra المتكاملة. إذا كنت لا تستخدم سرّاً، فإن pods المجدولة على العُقد الظاهرية تفشل في البدء والإبلاغ عن الخطأ HTTP response status code 400 error code "InaccessibleImage".
اختبار pod العُقدة الظاهرية
اختبر الجراب الذي يعمل على العقدة الظاهرية عن طريق التصفح إلى التطبيق التجريبي مع عميل ويب. نظراً لأنه يتم تعيين عنوان IP داخلي لـ pod، يمكنك اختبار هذا الاتصال بسرعة من pod آخر على مجموعة AKS.
إنشاء حاوية اختبار وإرفاق جلسة طرفية بها باستخدام الأمر التالي
kubectl run -it.kubectl run -it --rm testvk --image=mcr.microsoft.com/dotnet/runtime-deps:6.0تثبيت
curlفي جراب باستخدامapt-get.apt-get update && apt-get install -y curlالوصول إلى عنوان الجراب الخاص بك باستخدام
curl، مثل http://10.241.0.4. قم بتوفير عنوان IP الداخلي الخاص بك الموضح في الأمر السابقkubectl get pods.curl -L http://10.241.0.4يتم عرض التطبيق التجريبي، كما هو موضح في إخراج المثال المكثف التالي:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]أغلق جلسة المحطة إلى حجرة الاختبار الخاصة بك باستخدام
exit. عند انتهاء جلسة العمل الخاصة بك، يتم حذف الجراب.
قم بإزالة العُقد الظاهرية
احذف الجراب الذي
aci-helloworldيعمل على العقدة الظاهريةkubectl deleteباستخدام الأمر .kubectl delete -f virtual-node.yamlتعطيل العقد الظاهرية
az aks disable-addonsباستخدام الأمر .az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-nodeقم بإزالة موارد الشبكة الظاهرية ومجموعة الموارد باستخدام الأوامر التالية.
# Change the name of your resource group, cluster and network resources as needed RES_GROUP=myResourceGroup AKS_CLUSTER=myAKScluster AKS_VNET=myVnet AKS_SUBNET=myVirtualNodeSubnet # Get AKS node resource group NODE_RES_GROUP=$(az aks show --resource-group $RES_GROUP --name $AKS_CLUSTER --query nodeResourceGroup --output tsv) # Get network profile ID NETWORK_PROFILE_ID=$(az network profile list --resource-group $NODE_RES_GROUP --query "[0].id" --output tsv) # Delete the network profile az network profile delete --id $NETWORK_PROFILE_ID -y # Grab the service association link ID SAL_ID=$(az network vnet subnet show --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --query id --output tsv)/providers/Microsoft.ContainerInstance/serviceAssociationLinks/default # Delete the service association link for the subnet az resource delete --ids $SAL_ID --api-version 2021-10-01 # Delete the subnet delegation to Azure Container Instances az network vnet subnet update --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --remove delegations
الخطوات التالية
في هذه المقالة، قمت بجدولة جراب على العقدة الظاهرية وتعيين عنوان IP داخلي خاص. يمكنك بدلاً من ذلك إنشاء نشر خدمة وتوجيه نسبة استخدام الشبكة إلى pod الخاص بك من خلال موازن التحميل أو وحدة التحكم في الدخول. لمزيد من المعلومات، راجع إنشاء وحدة تحكم أساسية في الدخول في AKS.
غالبًا ما تكون العقد الظاهرية عبارة عن مكوّن واحد من حل التحجيم في AKS. لمزيد من المعلومات حول حلول التحجيم، راجع المقالات التالية: