نشر حاوية Windows Server على نظام مجموعة Azure Kubernetes Service (AKS) باستخدام Azure CLI
خدمة Azure Kubernetes (AKS) هي خدمة Kubernetes مُدارة تتيح لك نشر المجموعات وإدارتها بسرعة. في هذه المقالة، يمكنك استخدام Azure CLI لنشر نظام مجموعة AKS الذي يقوم بتشغيل حاويات Windows Server. يمكنك أيضًا نشر تطبيق نموذج ASP.NET في حاوية Windows Server إلى الكتلة.
إشعار
للبدء في توفير نظام مجموعة AKS بسرعة، تتضمن هذه المقالة خطوات لنشر نظام مجموعة بإعدادات افتراضية لأغراض التقييم فقط. قبل نشر نظام مجموعة جاهز للإنتاج، نوصيك بالتعرف على البنية المرجعية الأساسية لدينا للنظر في كيفية توافقها مع متطلبات عملك.
قبل البدء
يضمن هذا التشغيل السريع الفهم الأساسي لمفاهيم Kubernetes. لمزيد من المعلومات، راجع مفاهيم Kubernetes الأساسية الخاصة بخدمة Azure Kubernetes Service (AKS).
- إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
استخدم بيئة 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.
- تتطلب هذه المقالة الإصدار 2.0.64 أو إصدارًا أحدث من واجهة سطر الأوامر من Azure. إذا كنت تستخدم Azure Cloud Shell، فإن أحدث إصدار مثبت بالفعل هناك.
- تأكد من أن الهوية التي تستخدمها لإنشاء نظام المجموعة الخاص بك لديها الحد الأدنى المناسب من الأذونات. لمزيد من التفاصيل حول الهوية وطريقة الوصول إلى AKS، راجع خيارات الوصول والهوية الخاصة بخدمة Azure Kubernetes (AKS).
- إذا كان لديك العديد من اشتراكات Azure، فحدد معرف الاشتراك المناسب الذي يجب فوترة الموارد فيه باستخدام الأمر az account set . لمزيد من المعلومات، راجع كيفية إدارة اشتراكات Azure - Azure CLI.
إنشاء مجموعة موارد
مجموعة موارد Azure هي مجموعة منطقية يمكن من خلالها نشر وإدارة موارد Azure. عند إنشاء مجموعة موارد، سيُطلب منك تحديد موقع. هذا الموقع هو المكان الذي يتم فيه تخزين بيانات تعريف مجموعة الموارد وحيث يتم تشغيل مواردك في Azure إذا لم تحدد منطقة أخرى أثناء إنشاء الموارد.
أنشئ مجموعة موارد مستخدماً الأمر az group create. في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroup في موقع eastus. أدخل هذا الأمر والأوامر الأخرى في هذه المقالة في BASH shell:
az group create --name myResourceGroup --location eastus
يظهر إخراج العينة التالي مجموعة الموارد التي تم إنشاؤها بنجاح:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": null }
إنشاء نظام مجموعة AKS
في هذا القسم، نقوم بإنشاء نظام مجموعة AKS بالتكوين التالي:
- يتم تكوين نظام المجموعة مع عقدتين للتأكد من أنه يعمل بشكل موثوق. العقدة هي جهاز ظاهري Azure (VM) يقوم بتشغيل مكونات عقدة Kubernetes ووقت تشغيل الحاوية.
- تقوم المعلمات
--windows-admin-password
و--windows-admin-username
بتعيين بيانات اعتماد المسؤول لأي عقد Windows Server على الكتلة ويجب أن تفي بمتطلبات كلمة مرور Windows Server. - يستخدم في تجمع العقدة
VirtualMachineScaleSets
.
لإنشاء نظام مجموعة AKS باستخدام Azure CLI، اتبع الخطوات التالية:
قم بإنشاء اسم مستخدم لاستخدامه كبيانات اعتماد مسؤول لعُقد Windows Server على نظام المجموعة الخاص بك. تطالبك الأوامر التالية باسم مستخدم وتعيينه إلى WINDOWS_USERNAME للاستخدام في أمر لاحق.
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
إنشاء كلمة مرور لاسماء مستخدم المسؤول التي قمت بإنشائها في الخطوة السابقة. يجب أن تكون كلمة المرور 14 حرفا كحد أدنى وأن تفي بمتطلبات تعقيد كلمة مرور Windows Server.
echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
قم بإنشاء نظام المجموعة باستخدام الأمر az aks create وحدد
--windows-admin-username
المعلمات و--windows-admin-password
. ينشئ الأمر المثال التالي كتلة باستخدام القيمة من WINDOWS_USERNAMEالتي قمت بتعيينها في الأمر السابق. بدلا من ذلك، يمكنك توفير اسم مستخدم مختلف مباشرة في المعلمة بدلا من استخدام WINDOWS_USERNAME.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --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 مع تجمع عقدة التي يمكن تشغيل حاويات لينكس. يجب إضافة تجمع عقدة آخر يمكنه تشغيل حاويات Windows Server جنبا إلى جنب مع تجمع عقدة Linux.
Windows Server 2022 هو نظام التشغيل الافتراضي لإصدارات Kubernetes 1.25.0 والإصدارات الأحدث. Windows Server 2019 هو نظام التشغيل الافتراضي للإصدارات السابقة. إذا لم تحدد نظام تشغيل SKU معينا، يقوم Azure بإنشاء تجمع عقدة جديد مع SKU الافتراضي لإصدار Kubernetes المستخدم من قبل نظام المجموعة.
لاستخدام نظام التشغيل SKU الافتراضي، قم بإنشاء تجمع العقدة دون تحديد OS SKU. يتم تكوين تجمع العقدة لنظام التشغيل الافتراضي استنادا إلى إصدار Kubernetes من نظام المجموعة.
أضف تجمع عقدة Windows باستخدام az aks nodepool add
الأمر . ينشئ الأمر التالي تجمع عقدة جديد يسمى npwin ويضيفه إلى myAKSCluster. يستخدم الأمر أيضا الشبكة الفرعية الافتراضية في الشبكة الظاهرية الافتراضية التي تم إنشاؤها عند تشغيل az aks create
. لم يتم تحديد وحدة SKU لنظام التشغيل، لذلك يتم تعيين تجمع العقدة إلى نظام التشغيل الافتراضي استنادا إلى إصدار Kubernetes من نظام المجموعة:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
الاتصال بنظام المجموعة
يمكنك استخدام 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 myResourceGroup --name myAKSCluster
تحقق من الاتصال بالمجموعة باستخدام الأمر 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 أن تستند حاويات Windows Server إلى صورWindows Server 2019 أو أحدث. يجب أن يعرف ملف بيان 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
وسيطة.kubectl get service sample --watch
في البداية، يظهر الإخراج EXTERNAL-IP لنموذج الخدمة على أنه معلق:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
بمجرد تغيير عنوان EXTERNAL-IP من معلق إلى عنوان IP عام فعلي، استخدم
CTRL-C
لإيقاف عمليةkubectl
المراقبة. يظهر إخراج العينة التالي عنوان IP عاما صالحا تم تعيينه للخدمة:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
راجع نموذج التطبيق أثناء العمل عن طريق فتح مستعرض ويب على عنوان IP الخارجي للخدمة الخاصة بك.
حذف الموارد
إذا كنت لا تخطط للانتقال من خلال البرنامج التعليمي AKS، يجب حذف مجموعتك لتجنب تكبد رسوم Azure.
احذف مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة باستخدام الأمر az group delete .
az group delete --name myResourceGroup --yes --no-wait
إشعار
تم إنشاء نظام مجموعة AKS بهوية مدارة معينة من قبل النظام (خيار الهوية الافتراضي المستخدم في هذا التشغيل السريع). يدير النظام الأساسي Azure هذه الهوية، لذلك لا يتطلب الإزالة.
الخطوات التالية
في هذا التشغيل السريع، قمت بنشر مجموعة Kubernetes ثم نشر نموذج تطبيق ASP.NET في حاوية Windows Server إليه. هذا التطبيق النموذجي هو لأغراض العرض التوضيحي فقط ولا يمثل جميع أفضل الممارسات لتطبيقات Kubernetes. للحصول على إرشادات حول إنشاء حلول كاملة باستخدام AKS للإنتاج، راجع إرشادات حل AKS.
لمعرفة المزيد حول AKS، وللسير عبر مثال كامل على التعليمات البرمجية للتوزيع، تابع إلى البرنامج التعليمي لنظام مجموعة Kubernetes.
Azure Kubernetes Service