إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
خدمة Azure Kubernetes (AKS) هي خدمة Kubernetes مُدارة تتيح لك نشر المجموعات وإدارتها بسرعة. في هذه المقالة، يمكنك استخدام Azure CLI لنشر نظام مجموعة AKS الذي يقوم بتشغيل حاويات Windows Server. يمكنك أيضًا نشر تطبيق نموذج ASP.NET في حاوية Windows Server إلى الكتلة.
إشعار
للبدء في توفير نظام مجموعة AKS بسرعة، تتضمن هذه المقالة خطوات لنشر نظام مجموعة بإعدادات افتراضية لأغراض التقييم فقط. قبل نشر نظام مجموعة جاهز للإنتاج، نوصيك بالتعرف على البنية المرجعية الأساسية لدينا للنظر في كيفية توافقها مع متطلبات عملك.
قبل البدء
يضمن هذا التشغيل السريع الفهم الأساسي لمفاهيم Kubernetes. لمزيد من المعلومات، راجع مفاهيم Kubernetes الأساسية الخاصة بخدمة Azure Kubernetes Service (AKS).
- إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تتطلب هذه المقالة الإصدار 2.0.64 أو إصدارًا أحدث من واجهة سطر الأوامر من Azure. إذا كنت تستخدم Azure Cloud Shell، فإن أحدث إصدار مثبت بالفعل هناك.
- تأكد من أن الهوية التي تستخدمها لإنشاء نظام المجموعة الخاص بك لديها الحد الأدنى المناسب من الأذونات. لمزيد من المعلومات حول الوصول والهوية ل AKS، راجع خيارات الوصول والهوية لخدمة Azure Kubernetes (AKS).
- إذا كان لديك اشتراكات Azure متعددة، فحدد معرف الاشتراك المناسب الذي يجب فوترة الموارد فيه باستخدام الأمر
az account set. لمزيد من المعلومات، راجع كيفية إدارة اشتراكات Azure - Azure CLI. - إذا كنت تستخدم
--os-sku Windows2025، فأنت بحاجة إلى تثبيت الامتدادaks-previewوتسجيل علامة المعاينة. الحد الأدنى للإصدار هو 18.0.0b40.
تثبيت الملحق aks-preview
مهم
تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:
-
aks-previewتثبيت ملحق Azure CLI باستخدامaz extension addالأمر .
az extension add --name aks-preview
- قم بتحديث إلى أحدث إصدار من الملحق باستخدام
az extension updateالأمر . يتطلب Windows Server 2025 18.0.0b40 كحد أدنى.
az extension update --name aks-preview
تسجيل AksWindows2025Preview العلامات المميزة
- سجل علامة الميزة
AksWindows2025Previewباستخدام الأمر [az feature register][az-feature-register].
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
- تحقق من حالة التسجيل باستخدام الأمر [
az feature show][az-feature-show]. يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل.
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
عندما تعكس الحالة مسجل، قم بتحديث تسجيل موفر موارد Microsoft.ContainerService باستخدام الأمر [
az provider register][az-provider-register].az provider register --namespace Microsoft.ContainerService
إنشاء مجموعة موارد
مجموعة موارد Azure هي مجموعة منطقية يمكن من خلالها نشر وإدارة موارد Azure. عند إنشاء مجموعة موارد، سيُطلب منك تحديد موقع. هذا الموقع هو المكان الذي يتم فيه تخزين بيانات تعريف مجموعة الموارد وحيث يتم تشغيل مواردك في Azure إذا لم تحدد منطقة أخرى أثناء إنشاء الموارد.
إنشاء مجموعة موارد باستخدام
az group createالأمر . ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في موقع WestUS2 .export RANDOM_SUFFIX=$(openssl rand -hex 3) export REGION="canadacentral" export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup$RANDOM_SUFFIX" az group create --name $MY_RESOURCE_GROUP_NAME --location $REGIONالنتائج:
{ "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupxxxxx", "location": "WestUS2", "managedBy": null, "name": "myResourceGroupxxxxx", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
إنشاء نظام مجموعة AKS
في هذا القسم، نقوم بإنشاء نظام مجموعة AKS بالتكوين التالي:
- يتم تكوين نظام المجموعة مع عقدتين للتأكد من أنه يعمل بشكل موثوق. العقدة هي جهاز ظاهري Azure (VM) يقوم بتشغيل مكونات عقدة Kubernetes ووقت تشغيل الحاوية.
- تقوم المعلمات
--windows-admin-passwordو--windows-admin-usernameبتعيين بيانات اعتماد المسؤول لأي عقد Windows Server على الكتلة ويجب أن تفي بمتطلبات كلمة مرور Windows Server. - يستخدم في تجمع العقدة
VirtualMachineScaleSets.
استخدم الخطوات التالية لإنشاء نظام مجموعة AKS باستخدام Azure CLI:
قم بإنشاء اسم مستخدم لاستخدامه كبيانات اعتماد مسؤول لعُقد Windows Server على نظام المجموعة الخاص بك.
export WINDOWS_USERNAME="winadmin"إنشاء كلمة مرور لاسماء مستخدم المسؤول التي قمت بإنشائها في الخطوة السابقة. يجب أن تكون كلمة المرور 14 حرفا كحد أدنى وأن تفي بمتطلبات تعقيد كلمة مرور Windows Server.
export WINDOWS_PASSWORD=$(echo "P@ssw0rd$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9!@#$%^&*()' | cut -c1-6)")قم بإنشاء نظام المجموعة الخاص بك باستخدام
az aks createالأمر وحدد المعلمات--windows-admin-usernameو--windows-admin-password. ينشئ الأمر المثال التالي نظام مجموعة باستخدام القيم منWINDOWS_USERNAMEوقمتWINDOWS_PASSWORDبتعيينها في الأوامر السابقة. يتم إلحاق لاحقة عشوائية باسم نظام المجموعة للتفرد.export MY_AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX" az aks create \ --resource-group $MY_RESOURCE_GROUP_NAME \ --name $MY_AKS_CLUSTER \ --node-count 2 \ --enable-addons monitoring \ --generate-ssh-keys \ --windows-admin-username $WINDOWS_USERNAME \ --windows-admin-password $WINDOWS_PASSWORD \ --vm-set-type VirtualMachineScaleSets \ --network-plugin azureبعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة. في بعض الأحيان، قد يستغرق توفير نظام المجموعة أكثر من بضع دقائق. السماح بما يصل إلى 10 دقائق للتزويد.
إذا تلقيت خطأ في التحقق من صحة كلمة المرور، وكانت كلمة المرور التي قمت بتعيينها تفي بمتطلبات الطول والتعقيد، فحاول إنشاء مجموعة الموارد الخاصة بك في منطقة أخرى. ثم حاول إنشاء الكتلة مع مجموعة الموارد الجديدة.
إذا لم تحدد اسم مستخدم مسؤول وكلمة مرور عند إنشاء تجمع العقدة، يتم تعيين اسم المستخدم إلى azureuser ويتم تعيين كلمة المرور إلى قيمة عشوائية. لمزيد من المعلومات، راجع الأسئلة المتداولة حول Windows Server
لا يمكنك تغيير اسم مستخدم المسؤول، ولكن يمكنك تغيير كلمة مرور المسؤول التي تستخدمها مجموعة AKS لعقد Windows Server باستخدام
az aks update. لمزيد من المعلومات، راجع الأسئلة المتداولة حول Windows Server.لتشغيل مجموعة AKS التي تدعم تجمعات العقد لحاويات Windows Server، تحتاج الكتلة الخاصة بك إلى استخدام نهج الشبكة الذي يستخدم المكون الإضافي للشبكة Azure CNI(متقدم).
--network-plugin azureتحدد المعلمة Azure CNI.
إضافة تجمع عقدة
بشكل افتراضي، يتم إنشاء جميع مجموعات AKS باستخدام تجمع عقدة يمكنه تشغيل حاويات Linux. يجب إضافة تجمع عقدة Windows يمكنه تشغيل حاويات Windows Server جنبا إلى جنب مع تجمع عقدة Linux. للتحقق مما إذا كان لديك تجمع عقدة Windows في نظام المجموعة الخاص بك، يمكنك عرض العقد على نظام المجموعة الخاص بك باستخدام الأمر kubectl get nodes -o wide .
لإنشاء تجمع عقدة Windows، تحتاج إلى تحديد مدعوم OsType و OsSku. استخدم المعلومات الواردة في الجدول التالي لتحديد ما هو مناسب لنظام المجموعة الخاص بك:
OsType |
OsSku |
افترَاضي | إصدارات K8s المدعومة | التفاصيل |
|---|---|---|---|---|
windows |
Windows2025 |
قيد المعاينة حاليًا. ليس افتراضيا. | 1.32+ | الإعدادات الافتراضية المحدثة: containerd 2.0، ويتم استخدام صورة الجيل الثاني بشكل افتراضي. |
windows |
Windows2022 |
الافتراضي في K8s 1.25-1.35 | غير متوفر في K8s 1.36+ | يتقاعد في مارس 2027. الإعدادات الافتراضية المحدثة: يتم تمكين FIPS افتراضيا. |
windows |
Windows2019 |
الافتراضي في K8s 1.24 والإصدارات الأقدم | غير متوفر في K8s 1.33+ | يتقاعد في مارس 2026. |
ويندوز سيرفر 2022 هو نظام التشغيل الافتراضي لإصدارات كوبيرنيتس 1.25-1.35. Windows Server 2019 هو نظام التشغيل الافتراضي للإصدارات السابقة. إذا لم تحدد نظام تشغيل SKU معينا، يقوم Azure بإنشاء تجمع عقدة جديد مع SKU الافتراضي لإصدار Kubernetes المستخدم من قبل نظام المجموعة.
مهم
ابتداء من 1 مارس 2026، لم تعد Azure Kubernetes Service (AKS) تدعم مجموعات عقد Windows Server 2019. تجمعات العقد التي تعمل بإصدار Kubernetes إصدار 1.33+ لا يمكنها استخدام Windows Server 2019. ابتداء من 1 أبريل 2027، ستقوم AKS بإزالة جميع صور العقد الموجودة لنظام ويندوز سيرفر 2019، مما يعني أن عمليات التوسع ستفشل. لمزيد من المعلومات حول هذا التقاعد، راجع مشكلة GitHub للتقاعدوإعلان تقاعد تحديثات Azure. للبقاء على اطلاع بالإعلانات والتحديثات، تابع ملاحظات إصدار AKS.
مهم
ابتداء من 15 مارس 2027، لم تعد خدمة Azure Kubernetes Service (AKS) تدعم مجموعات عقد Windows Server 2022. لا يمكن لتجمع العقد التي تعمل كوبيرنتيز إصدار 1.36+ استخدام ويندوز سيرفر 2022. بدءا من 1 أبريل 2028، ستقوم AKS بإزالة جميع صور العقد الموجودة لنظام Windows Server 2022، مما يعني أن عمليات التوسع ستفشل. لمزيد من المعلومات حول هذا التقاعد، راجع مشكلة GitHub للتقاعدوإعلان تقاعد تحديثات Azure. للبقاء على اطلاع بالإعلانات والتحديثات، تابع ملاحظات إصدار AKS.
أضف تجمع عقدة Windows باستخدام
az aks nodepool addالأمر المحددOsTypeوOsSku. إذا لم تحدد نظام تشغيل SKU معينا، يقوم Azure بإنشاء تجمع عقدة جديد مع SKU الافتراضي لإصدار Kubernetes المستخدم من قبل نظام المجموعة.az aks nodepool add \ --resource-group $MY_RESOURCE_GROUP_NAME \ --cluster-name $MY_AKS_CLUSTER \ --os-type Windows \ --os-sku Windows2022 \ --name npwin \ --node-count 1ينشئ هذا الأمر تجمع عقدة جديد يسمى npwin ويضيفه إلى myAKSCluster. يستخدم الأمر أيضا الشبكة الفرعية الافتراضية في الشبكة الظاهرية الافتراضية التي تم إنشاؤها عند تشغيل
az aks create.
الاتصال بنظام المجموعة
يمكنك استخدام kubectl، عميل سطر أوامر Kubernetes، لإدارة مجموعات Kubernetes الخاصة بك.
kubectl والذي سيكون مثبتًا بالفعل في حال كنت تستخدم Azure Cloud Shell. إذا كنت ترغب في التثبيت والتشغيل kubectl محليا، فاستخدم الأمر az aks install-cli .
قم بتكوين
kubectlللاتصال بنظام مجموعة Kubernetes باستخدام أمرaz aks get-credentials. هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTERتحقق من الاتصال بالمجموعة باستخدام
kubectl getالأمر الذي يقوم بإرجاع قائمة بعقد نظام المجموعة.kubectl get nodes -o wideيعرض إخراج المثال التالي جميع العقد في نظام المجموعة. تأكد من أن حالة جميع العقد جاهزة:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 10.224.0.4 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 10.224.0.33 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aksnpwin000000 Ready agent 20h v1.27.7 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.2159 containerd://1.6.21+azureإشعار
يتم عرض وقت تشغيل الحاوية لكل تجمع عقدة ضمن CONTAINER-RUNTIME. تبدأ قيم وقت تشغيل الحاوية ب
containerd://، ما يعني أن كل منها يستخدمcontainerdلوقت تشغيل الحاوية.
قم بنشر التطبيق
ملف بيان Kubernetes يعرف الحالة المطلوبة للكتلة، مثل ما صور الحاوية لتشغيل. في هذه المقالة، يمكنك استخدام بيان لإنشاء كافة الكائنات اللازمة لتشغيل نموذج التطبيق ASP.NET في حاوية Windows Server. يتضمن هذا البيان نشرKubernetes لتطبيق نموذج ASP.NET وخدمة Kubernetes خارجية للوصول إلى التطبيق من الإنترنت.
يتم توفير تطبيق نموذج ASP.NET كجزء من .NET Framework Samplesويتم تشغيله في حاوية Windows Server. تتطلب AKS أن تكون حاويات ويندوز سيرفر مبنية على صور من ويندوز سيرفر 2022 أو أبعد. يجب أن يعرف ملف بيان Kubernetes أيضًامحدد عقدة لإخبار نظام المجموعة AKS لتشغيل جراب التطبيق الخاص بالعينة ASP.NET على عقدة يمكن تشغيلها Windows حاويات Server.
قم بإنشاء ملف باسم
sample.yamlوانسخه بتعريف YAML التالي:apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sampleللحصول على تصنيف تفصيلي لملفات بيان YAML، راجع عمليات التوزيع وبيانات YAML.
إذا قمت بإنشاء ملف YAML وحفظه محليا، فيمكنك تحميل ملف البيان إلى الدليل الافتراضي في CloudShell عن طريق تحديد الزر تحميل/تنزيل الملفات وتحديد الملف من نظام الملفات المحلي.
انشر التطبيق باستخدام
kubectl applyالأمر وحدد اسم بيان YAML.kubectl apply -f sample.yamlيوضح إخراج المثال التالي النشر والخدمة التي تم إنشاؤها بنجاح:
{ "deployment.apps/sample": "created", "service/sample": "created" }
اختبر التطبيق
عند تشغيل التطبيق، تعرض خدمة Kubernetes واجهة التطبيق الأمامية للإنترنت. قد تستغرق هذه العملية بضع دقائق حتى تكتمل. في بعض الأحيان، قد تستغرق الخدمة أكثر من بضع دقائق لتوفيرها. السماح بما يصل إلى 10 دقائق للتزويد.
تحقق من حالة pods المنشورة
kubectl get podsباستخدام الأمر . تأكد من أن جميع القرونRunningقبل المتابعة.kubectl get podsراقب التقدم باستخدام الأمر
kubectl get service مع الوسيطة--watch.while true; do export EXTERNAL_IP=$(kubectl get service sample -o jsonpath="{.status.loadBalancer.ingress[0].ip}" 2>/dev/null) if [[ -n "$EXTERNAL_IP" && "$EXTERNAL_IP" != "<pending>" ]]; then kubectl get service sample break fi echo "Still waiting for external IP assignment..." sleep 5 doneفي البداية، يظهر الإخراج EXTERNAL-IP لنموذج الخدمة على أنه معلق:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer xx.xx.xx.xx pending xx:xxxx/TCP 2mبمجرد تغيير عنوان EXTERNAL-IP من معلق إلى عنوان IP عام فعلي، استخدم
CTRL-Cلإيقاف عمليةkubectlالمراقبة.يتم استبدال
<public-ip-address>مثال الإخراج التالي بعنوان IP عام صالح مخصص للخدمة:{ "NAME": "sample", "TYPE": "LoadBalancer", "CLUSTER-IP": "10.0.37.27", "EXTERNAL-IP": "<public-ip-address>", "PORT(S)": "80:30572/TCP", "AGE": "2m" }راجع نموذج التطبيق أثناء العمل عن طريق فتح مستعرض ويب على عنوان IP الخارجي للخدمة بعد بضع دقائق.
الخطوات التالية
في هذا التشغيل السريع، قمت بنشر مجموعة Kubernetes ثم نشر نموذج تطبيق ASP.NET في حاوية Windows Server إليه. هذا التطبيق النموذجي هو لأغراض العرض التوضيحي فقط ولا يمثل جميع أفضل الممارسات لتطبيقات Kubernetes. للحصول على إرشادات حول إنشاء حلول كاملة باستخدام AKS للإنتاج، راجع إرشادات حل AKS.
لمعرفة المزيد حول AKS، وللسير عبر مثال كامل على التعليمات البرمجية للتوزيع، تابع إلى البرنامج التعليمي لنظام مجموعة Kubernetes.