Migrate existing nodes to Azure Container Linux (ACL) for خدمة Azure Kubernetes ‏(AKS)

في هذا المقال، ستتعلم كيفية نقل مجموعات عقد AKS الحالية إلى Azure Container Linux (ACL) لصالح AKS. يمكنك ترحيل العقد الحالية باستخدام إحدى الطرق التالية:

  • ترحيل وحدة تخزين نظام التشغيل في مكانها: غير وحدة تخزين نظام التشغيل في مجموعات العقد الحالية إلى ACL، الذي يعيد تصوير العقد تلقائيا.
  • إزالة مجموعات العقد الحالية وإضافة مجموعات عقد ACL جديدة: أنشئ مجموعات عقد ACL جديدة، نقل أعباء العمل، وإزالة مجموعات العقد القديمة.

مهم

إذا كنت تستخدم Azure Container Linux (ACL) على AKS، تأكد من مراجعة الاعتبارات والقيود التالية:

قيود ترحيل وحدات SKU في نظام التشغيل في مكانها

بالإضافة إلى القيود العامة لوحدة الربط، تنطبق ما يلي تحديدا على ترحيل وحدات تخزين نظام التشغيل في المكان:

  • لا تتوفر ميزة ترحيل نظام التشغيل SKU من خلال PowerShell أو مدخل Microsoft Azure.
  • لا تدعم ميزة ترحيل رمز SKU لنظام التشغيل إعادة تسمية تجمعات العقد الموجودة.
  • مجموعات العقد مع UseGPUDedicatedVHD تفعيل لا يمكنها تنفيذ ترحيل وحدة تخزين نظام التشغيل.
  • ترحيل Windows OS SKU غير مدعوم.

المتطلبات المسبقه

  • عنقود AKS موجود مع تجمع عقد واحد على الأقل في لينكس.
  • Azure CLI الإصدار 2.86.0 أو أحدث. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى تثبيت أو ترقية، راجع تثبيت Azure CLI.
  • نوصي بالتحقق من تشغيل أحمال العمل بنجاح على ACL من خلال نشر عنقود ACL في بيئة تطوير أو مرحلة قبل ترحيل عناقيد الإنتاج.
  • تأكد من أن ميزة الترحيل تعمل لك في الاختبار/التطوير قبل استخدام العملية على مجموعة إنتاج.
  • تأكد من أن بوداتك لديها ميزانية كافية لتعطيل الكبسولات (PDB) تسمح ل AKS بنقل الكبسولات بين الأجهزة الافتراضية أثناء الانتقال.

إضافة تجمعات عقد ACL وإزالة مجموعات العقد الموجودة

  1. أضف مجموعة عقد ACL جديدة باستخدام az aks nodepool add الأمر. استخدم --mode System حتى يكون التجمع الجديد بمثابة تجمع وكلاء النظام، مما يسمح لك بحذف تجمع العقد الأصلي في الخطوة التالية.

    az aks nodepool add \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <new-node-pool-name> \
        --os-sku AzureContainerLinux \
        --mode System \
        --node-count 3
    

    مثال على الإخراج:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/myNewNodePool",
      "name": "myNewNodePool",
      "osSku": "AzureContainerLinux",
      "provisioningState": "Succeeded"
    }
    
  2. قم بإزالة مجموعة العقد الحالية باستخدام az aks nodepool delete الأمر.

    az aks nodepool delete \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --name <existing-node-pool-name>
    

ترحيل نظام التشغيل SKU الموضعي

يمكنك نقل مجموعات عقد لينكس الحالية إلى ACL عن طريق تغيير وحدة SKU الخاصة بنظام التشغيل في تجمع العقد، الذي يمرر الكتلة عبر عملية ترقية صورة العقدة القياسية. هذه الطريقة لا تتطلب إنشاء مجموعات عقد جديدة؛ بدلا من ذلك، يتم إعادة تصوير مجموعات العقد الحالية تلقائيا.

إجراء ترحيل SKU لنظام التشغيل الموضعي

مهم

يتطلب ACL التشغيل الموثوق. يجب عليك تضمين --enable-secure-boot وعند --enable-vtpm الانتقال إلى وحدة SKU الخاصة بنظام AzureContainerLinux التشغيل. يجب أن يدعم حجم الجهاز الافتراضي (VM) لمجموعة العقد الخاص بك أيضا التشغيل الموثوق. إذا كان حجم الآلة الافتراضية الحالي لا يدعم ذلك، عليك إعادة تكبير أو إعادة إنشاء مجموعة العقد التي تحتوي على حجم مدعم للجهاز الافتراضي قبل الانتقال.

قم بترحيل وحدة SKU الخاصة بنظام التشغيل الخاص بمجموعة العقد الخاصة بك إلى ACL باستخدام az aks nodepool update الأمر. يقوم هذا الأمر بإعادة تصوير مجموعة العقد لديك، وتحديث وحدة SKU الخاصة بنظام التشغيل إلى AzureContainerLinux. يؤدي تغيير نظام التشغيل SKU إلى تشغيل عملية ترقية فورية، والتي تستغرق عدة دقائق لإكمالها.

az aks nodepool update \
    --resource-group <resource-group> \
    --cluster-name <cluster-name> \
    --name <existing-node-pool-name> \
    --os-sku AzureContainerLinux \
    --enable-secure-boot \
    --enable-vtpm

مثال على الإخراج:

{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureContainerLinux",
  "provisioningState": "Succeeded"
}

ملاحظة

إذا واجهت مشكلات أثناء ترحيل نظام التشغيل SKU، يمكنك العودة إلى نظام التشغيل SKU السابق.

تحقق من ترحيل نظام التشغيل SKU

تلميح

نوصي بمراقبة صحة خدمتك لبضعة أسابيع قبل نقل مجموعات الإنتاج الخاصة بك.

بمجرد اكتمال الترحيل على مجموعات الاختبار الخاصة بك، نوصي بمراقبة العنقود وأعباء العمل لبضعة أسابيع للتأكد من أن كل شيء يعمل كما هو متوقع قبل نقل عناقيد الإنتاج. استخدم الأوامر التالية للتحقق من الترحيل ومراقبة مجموعتك:

  1. تأكد من أن العقد الجديدة تعمل بنظام ACL باستخدام kubectl get nodes -o wide الأمر. يجب أن يظهر المخرج صورة نظام ACL OS.

    kubectl get nodes -o wide
    
  2. تحقق من أن جميع الكبسولات ومجموعات الشياطين تعمل على مجموعة العقد الجديدة باستخدام kubectl get pods -o wide -A الأمر.

    kubectl get pods -o wide -A
    
  3. تحقق من أن جميع تسميات العقد في مجموعة العقد المطورة هي ما تتوقعه باستخدام الأمر kubectl get nodes --show-labels .

    kubectl get nodes --show-labels
    
  4. تحقق من نسخة صورة العقدة باستخدام az aks nodepool list الأمر.

    az aks nodepool list \
        --resource-group <resource-group> \
        --cluster-name <cluster-name> \
        --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'
    

    مثال على الإخراج:

    [
      {
        "name": "myNodePool",
        "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0",
        "osSku": "AzureContainerLinux"
      }
    ]
    

الرجوع إلى SKU لنظام التشغيل السابق

إذا واجهت مشكلات أثناء ترحيل نظام التشغيل SKU، يمكنك العودة إلى نظام التشغيل SKU السابق. للقيام بذلك، قم بتغيير حقل وحدة تخزين نظام التشغيل إلى القيمة السابقة وإعادة تقديم النشر، مما يؤدي إلى عملية ترقية أخرى ويعيد تصوير مجموعة العقد إلى وحدة SKU السابقة لنظام التشغيل. إذا عدت من ACL إلى وحدة تشغيل النظام السابقة، فإن مجموعة العقد تستخدم نسخة صورة Trusted Launch (Gen2) افتراضيا ما لم يتم تعطيل Trusted Launch Launch.

العودة إلى نظام التشغيل SKU السابق باستخدام az aks nodepool update الأمر . هذا المثال يرجع من ACL إلى Azure Linux:

az aks nodepool update \
    --resource-group <resource-group> \
    --cluster-name <cluster-name> \
    --name <existing-node-pool-name> \
    --os-sku AzureLinux

لمزيد من المعلومات حول ACL، راجع ما هو لينكس الحاويات Azure (ACL) ل خدمة Azure Kubernetes ‏(AKS)؟