نشر حاوية Windows Server على نظام مجموعة Azure Kubernetes Service (AKS) باستخدام PowerShell

خدمة Azure Kubernetes (AKS) هي خدمة Kubernetes مُدارة تتيح لك نشر المجموعات وإدارتها بسرعة. في هذه المقالة، يمكنك استخدام Azure PowerShell لنشر نظام مجموعة AKS الذي يقوم بتشغيل حاويات Windows Server. يمكنك أيضًا نشر تطبيق نموذج ASP.NET في حاوية Windows Server إلى الكتلة.

إشعار

للبدء في توفير نظام مجموعة AKS بسرعة، تتضمن هذه المقالة خطوات لنشر نظام مجموعة بإعدادات افتراضية لأغراض التقييم فقط. قبل نشر نظام مجموعة جاهز للإنتاج، نوصيك بالتعرف على البنية المرجعية الأساسية لدينا للنظر في كيفية توافقها مع متطلبات عملك.

قبل البدء

يضمن هذا التشغيل السريع الفهم الأساسي لمفاهيم Kubernetes. لمزيد من المعلومات، راجع مفاهيم Kubernetes الأساسية الخاصة بخدمة Azure Kubernetes Service (AKS).

إنشاء مجموعة موارد

مجموعة موارد Azure هي مجموعة منطقية يمكن من خلالها نشر وإدارة موارد Azure. عند إنشاء مجموعة موارد، سيُطلب منك تحديد موقع. هذا الموقع هو المكان الذي يتم فيه تخزين بيانات تعريف مجموعة الموارد وحيث يتم تشغيل مواردك في Azure إذا لم تحدد منطقة أخرى أثناء إنشاء الموارد.

لإنشاء مجموعة موارد، استخدم New-AzResourceGroup cmdlet. في المثال التالي سيتم إنشاء مجموعة موارد تسمى myResourceGroup في منطقة الشرقيين.

New-AzResourceGroup -Name myResourceGroup -Location eastus

يظهر إخراج العينة التالي أنه تم إنشاء مجموعة الموارد بنجاح:

ResourceGroupName : myResourceGroup
Location          : eastus
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup

إنشاء نظام مجموعة AKS

في هذا القسم، نقوم بإنشاء نظام مجموعة AKS بالتكوين التالي:

  • يتم تكوين نظام المجموعة مع عقدتين للتأكد من أنه يعمل بشكل موثوق. العقدة هي جهاز ظاهري Azure (VM) يقوم بتشغيل مكونات عقدة Kubernetes ووقت تشغيل الحاوية.
  • تعين -WindowsProfileAdminUserName المعلمات و -WindowsProfileAdminUserPassword بيانات اعتماد المسؤول لأي عقد Windows Server على نظام المجموعة ويجب أن تفي بمتطلبات تعقيد كلمة مرور Windows Server.
  • يستخدم في تجمع العقدةVirtualMachineScaleSets.

لإنشاء نظام مجموعة AKS باستخدام Azure PowerShell، اتبع الخطوات التالية:

  1. إنشاء بيانات اعتماد المسؤول لحاويات Windows Server باستخدام الأمر التالي. يطالبك هذا الأمر بإدخال WindowsProfileAdminUserName و WindowsProfileAdminUserPassword. يجب أن تكون كلمة المرور 14 حرفا كحد أدنى وأن تفي بمتطلبات تعقيد كلمة مرور Windows Server.

    $AdminCreds = Get-Credential `
        -Message 'Please create the administrator credentials for your Windows Server containers'
    
  2. قم بإنشاء نظام المجموعة الخاص بك باستخدام New-AzAksCluster cmdlet وحدد WindowsProfileAdminUserName المعلمات و WindowsProfileAdminUserPassword .

    New-AzAksCluster -ResourceGroupName myResourceGroup `
        -Name myAKSCluster `
        -NodeCount 2 `
        -NetworkPlugin azure `
        -NodeVmSetType VirtualMachineScaleSets `
        -WindowsProfileAdminUserName $AdminCreds.UserName `
        -WindowsProfileAdminUserPassword $secureString `
        -GenerateSshKey
    

    بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة. في بعض الأحيان، قد يستغرق توفير نظام المجموعة أكثر من بضع دقائق. السماح بما يصل إلى 10 دقائق للتزويد.

    إذا تلقيت خطأ في التحقق من صحة كلمة المرور، وكانت كلمة المرور التي قمت بتعيينها تفي بمتطلبات الطول والتعقيد، فحاول إنشاء مجموعة الموارد الخاصة بك في منطقة أخرى. ثم حاول إنشاء الكتلة مع مجموعة الموارد الجديدة.

    إذا لم تحدد اسم مستخدم مسؤول وكلمة مرور عند إنشاء تجمع العقدة، يتم تعيين اسم المستخدم إلى azureuser ويتم تعيين كلمة المرور إلى قيمة عشوائية. لمزيد من المعلومات، راجع كيف أعمل تغيير كلمة مرور المسؤول لعقد Windows Server على نظام مجموعتي؟.

    لا يمكن تغيير اسم مستخدم المسؤول، ولكن يمكنك تغيير كلمة مرور المسؤول التي يستخدمها نظام مجموعة AKS لعقد Windows Server باستخدام az aks update. لمزيد من المعلومات، راجع الأسئلة المتداولة حول تجمعات عقد Windows Server.

    لتشغيل مجموعة AKS التي تدعم تجمعات العقد لحاويات Windows Server، تحتاج مجموعتك إلى استخدام نهج شبكة يستخدم المكون الإضافي لشبكة [Azure CNI (متقدم)][azure-cni]. -NetworkPlugin 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 Server باستخدام New-AzAksNodePool cmdlet. ينشئ الأمر التالي تجمع عقدة جديد يسمى npwin ويضيفه إلى myAKSCluster. يستخدم الأمر أيضا الشبكة الفرعية الافتراضية في الشبكة الظاهرية الافتراضية التي تم إنشاؤها عند تشغيل New-AzAksCluster:

New-AzAksNodePool -ResourceGroupName myResourceGroup `
    -ClusterName myAKSCluster `
    -VmSetType VirtualMachineScaleSets `
    -OsType Windows `
    -Name npwin

الاتصال بنظام المجموعة

يمكنك استخدام kubectl، عميل سطر أوامر Kubernetes، لإدارة مجموعات Kubernetes الخاصة بك. kubectl والذي سيكون مثبتًا بالفعل في حال كنت تستخدم Azure Cloud Shell. إذا كنت ترغب في التثبيت kubectl محليا، يمكنك استخدام Install-AzAzAksCliTool cmdlet.

  1. تكوين kubectl للاتصال بمجموعة Kubernetes الخاصة بك باستخدام الأمر Cmdlet Import-AzAksCredential . هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.

    Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
    
  2. تحقق من الاتصال بالمجموعة باستخدام الأمر kubectl get ، الذي يقوم بإرجاع قائمة بعقد نظام المجموعة.

    kubectl get nodes
    

    يظهر إخراج العينة التالي جميع العقد في نظام المجموعة. تأكد من أن حالة جميع العقد جاهزة:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.27.7
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.27.7
    aksnpwin000000                      Ready    agent   21h   v1.27.7
    

قم بنشر التطبيق

ملف بيان 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.

  1. لنقم بإنشاء ملف باسم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 عن طريق تحديد الزر تحميل/تنزيل الملفات وتحديد الملف من نظام الملفات المحلي.

  2. انشر التطبيق باستخدام الأمر kubectl apply وحدد اسم بيان YAML الخاص بك.

    kubectl apply -f sample.yaml
    

    يظهر إخراج العينة التالي النشر والخدمة التي تم إنشاؤها بنجاح:

    deployment.apps/sample created
    service/sample created
    

اختبر التطبيق

عند تشغيل التطبيق، تعرض خدمة Kubernetes واجهة التطبيق الأمامية للإنترنت. قد تستغرق هذه العملية بضع دقائق حتى تكتمل. في بعض الأحيان، قد تستغرق الخدمة أكثر من بضع دقائق لتوفيرها. السماح بما يصل إلى 10 دقائق للتزويد.

  1. تحقق من حالة pods المنشورة باستخدام الأمر kubectl get pods . جعل جميع الحجيرات قبل Running المتابعة.

    kubectl get pods
    
  2. راقب سير العملية باستخدام أمر 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
    
  3. راجع نموذج التطبيق أثناء العمل عن طريق فتح مستعرض ويب على عنوان IP الخارجي للخدمة الخاصة بك.

    لقطة شاشة لاستعراض تطبيق نموذج ASP.NET.

حذف الموارد

إذا كنت لا تخطط للانتقال إلى البرنامج التعليمي AKS، فاحذف مجموعتك لتجنب تكبد رسوم Azure. اتصل ب Remove-AzResourceGroup cmdlet لإزالة مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة.

Remove-AzResourceGroup -Name myResourceGroup

إشعار

تم إنشاء نظام مجموعة AKS بهوية مدارة معينة من قبل النظام (خيار الهوية الافتراضي المستخدم في هذا التشغيل السريع). يدير النظام الأساسي Azure هذه الهوية، لذلك لا يتطلب الإزالة.

الخطوات التالية

في هذا التشغيل السريع، قمت بنشر مجموعة Kubernetes ثم نشر نموذج تطبيق ASP.NET في حاوية Windows Server إليه. هذا التطبيق النموذجي هو لأغراض العرض التوضيحي فقط ولا يمثل جميع أفضل الممارسات لتطبيقات Kubernetes. للحصول على إرشادات حول إنشاء حلول كاملة باستخدام AKS للإنتاج، راجع إرشادات حل AKS.

لمعرفة المزيد حول AKS، وللسير عبر مثال كامل على التعليمات البرمجية للتوزيع، تابع إلى البرنامج التعليمي لنظام مجموعة Kubernetes.