إنشاء وتكوين مجموعة Azure Kubernetes Services (AKS) لاستخدام العقد الظاهرية باستخدام Azure CLI
تمكن العقد الظاهرية اتصال الشبكة بين 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
الاتصال بنظام المجموعة
قم بتكوين
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 beta.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. لمزيد من المعلومات حول حلول التحجيم، راجع المقالات التالية:
Azure Kubernetes Service