استخدم التسميات في مجموعة خدمة Azure Kubernetes (AKS)

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

في هذا الدليل الإرشادي، ستتعلم كيفية استخدام التسميات في نظام مجموعة خدمة Azure Kubernetes ‏(AKS).

المتطلبات الأساسية

تحتاج إلى الإصدار 2.2.0 من Azure CLI أو تثبيتها وتكوينها لاحقًا. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

إنشاء نظام مجموعة AKS باستخدام تسمية

يمكنك إنشاء نظام مجموعة AKS مع تسميات العقدة لتعيين بيانات تعريف المفتاح/القيمة لجدولة حمل العمل.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export AKS_CLUSTER_NAME="myAKSCluster$RANDOM_SUFFIX"
az group create --name $RESOURCE_GROUP --location $REGION

النتائج:

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx",
  "location": "eastus2",
  "managedBy": null,
  "name": "myResourceGroupxxx",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

إنشاء مجموعة AKS التي تحدد تسميات العقدة (على سبيل المثال، dept=IT، costcenter=9000):

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_CLUSTER_NAME \
    --node-count 2 \
    --nodepool-labels dept=IT costcenter=9000 \
    --generate-ssh-keys --location $REGION

النتائج:

{
  "aadProfile": null,
  "addonProfiles": {},
  "agentPoolProfiles": [
    {
      "count": 2,
      "enableAutoScaling": null,
      "mode": "System",
      "name": "nodepool1",
      "nodeLabels": {
        "costcenter": "9000",
        "dept": "IT"
      }
    }
  ],
  "dnsPrefix": "myaksclusterxxx-dns",
  "fqdn": "myaksclusterxxx-xxxxxxxx.hcp.eastus2.azmk8s.io",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSClusterxxx",
  "location": "eastus2",
  "name": "myAKSClusterxxx",
  "resourceGroup": "myResourceGroupxxx"
}

تحقق من تعيين التسميات:

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER_NAME --overwrite-existing
kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"

إنشاء تجمع عقدة مع تسمية

يمكنك إنشاء تجمع عقدة إضافي مع تسميات لاحتياجات جدولة محددة.

export NODEPOOL_NAME="labelnp"
az aks nodepool add \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $AKS_CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --node-count 1 \
    --labels dept=HR costcenter=5000

فيما يلي مثال الإخراج من الأمر الذي az aks nodepool list يظهر تجمع عقدة labelnp هو إنشاء العقد مع nodeLabels المحددة:

az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME

النتائج:

[
  {
    "count": 2,
    "name": "nodepool1",
    "nodeLabels": {
      "costcenter": "9000",
      "dept": "IT"
    }
  },
  {
    "count": 1,
    "name": "labelnp",
    "nodeLabels": {
      "costcenter": "5000",
      "dept": "HR"
    },
    "provisioningState": "Creating"
  }
]

تحقق من تعيين التسميات:

kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"

تحديث التسميات على تجمعات العقد الموجودة

يمكنك تحديث التسميات على تجمع عقدة موجود. لاحظ أن تحديث التسميات سيستبدل التسميات القديمة.

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $AKS_CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --labels dept=ACCT costcenter=6000

تحقق من تعيين التسميات الجديدة:

kubectl get nodes --show-labels | grep -e "costcenter=6000" -e "dept=ACCT"

التسميات غير المتوفرة

تسميات النظام المحجوزة

منذ إصدار AKS 2021-08-19، أوقفت AKS القدرة على إجراء تغييرات على التسميات المحجوزة ل AKS. تؤدي محاولة تغيير هذه التسميات إلى ظهور رسالة خطأ.

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

تسمية القيمة‬ مثال/خيارات استخدام العقدة الظاهرية
kubernetes.azure.com/agentpool <اسم تجمع العامل> nodepool1 متشابه
kubernetes.io/arch <وقت التشغيل. جوارتش> amd64 ‏‫غير متوفر‬
kubernetes.io/os <نوع نظام التشغيل> Linux/Windows متشابه
node.kubernetes.io/instance-type <حجم الجهاز الظاهري> Standard_NC6s_v3 ظاهري
topology.kubernetes.io/region <منطقة Azure> westus2 متشابه
topology.kubernetes.io/zone <منطقة Azure> 0 متشابه
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 متشابه
kubernetes.azure.com/managedby aks aks ‏‫غير متوفر‬
kubernetes.azure.com/mode <الوضع> User أو system المستخدم
kubernetes.azure.com/role agent Agent متشابه
kubernetes.azure.com/scalesetpriority (مهمل) <أولوية VMSS> spot (regular غير مكتوب على العقد العادية). أفضل kubernetes.azure.com/priority بدلا من ذلك. ‏‫غير متوفر‬
kubernetes.azure.com/priority <أولوية الآلة الافتراضية> spot أو regular ‏‫غير متوفر‬
kubernetes.io/hostname <اسم المضيف> aks-nodepool-00000000-vmss000000 متشابه
kubernetes.azure.com/storageprofile <ملف تعريف تخزين قرص نظام التشغيل> Managed ‏‫غير متوفر‬
kubernetes.azure.com/storagetier <طبقة تخزين قرص نظام التشغيل> Premium_LRS ‏‫غير متوفر‬
kubernetes.azure.com/node-image-version <إصدار VHD> AKSUbuntu-1804-2020.03.05 إصدار العقدة الظاهرية
kubernetes.azure.com/network-name <اسم nodepool vnet> vnetName الشبكة الظاهرية للعقدة الظاهرية
kubernetes.azure.com/network-subnet <اسم الشبكة الفرعية nodepool> subnetName اسم الشبكة الفرعية للعقدة الظاهرية
kubernetes.azure.com/ppg <اسم nodepool ppg> ppgName ‏‫غير متوفر‬
kubernetes.azure.com/encrypted-set <اسم مجموعة مشفرة nodepool> encrypted-set-name ‏‫غير متوفر‬
kubernetes.azure.com/accelerator <مسرع الحل> nvidia ‏‫غير متوفر‬
kubernetes.azure.com/fips_enabled <هل FIPS مفعل؟> true ‏‫غير متوفر‬
kubernetes.azure.com/os-sku <نظام التشغيل/SKU> إنشاء أو تحديث نظام التشغيل SKU Linux
kubernetes.azure.com/os-sku-effective <تم اختيار وحدة SKU الفعلية لنظام التشغيل> Ubuntu2204 أو ما شابه (أبدا أوبونتو، دائما ما يكون الإصدار محددا) ‏‫غير متوفر‬
kubernetes.azure.com/os-sku-requested <وحدة SKU الخاصة بنظام التشغيل التي طلبها المستخدم> Ubuntu، Ubuntu2204، أو ما شابه (تطابق تماما مع SKU المطلوبة من API) ‏‫غير متوفر‬
kubernetes.azure.com/sku-cpu <وحدات معالجة الدماغ NUM> 4 متشابه
kubernetes.azure.com/sku-memory <الذاكرة في GB> 16 متشابه
kubernetes.azure.com/nodepool-type <نوع تجمع العقدة> VirtualMachineScaleSets ‏‫غير متوفر‬
  • يتم تضمين نفس الشيء في الأماكن التي لا تختلف فيها القيم المتوقعة للتسميات بين تجمع عقدة قياسي وتجمع عقدة ظاهرية. نظرا لأن جرابات العقدة الظاهرية لا تعرض أي جهاز ظاهري أساسي (VM)، يتم استبدال قيم SKU للجهاز الظاهري بـ SKU Virtual.
  • يشير إصدار العقدة الظاهرية إلى الإصدار الحالي من إصدار موصل Kubelet-ACI الظاهري.
  • اسم الشبكة الفرعية للعقدة الظاهرية هو اسم الشبكة الفرعية حيث يتم توزيع جرابات العقدة الظاهرية في مثيل حاوية Azure (ACI).
  • الشبكة الظاهرية للعقدة الظاهرية هي اسم الشبكة الظاهرية، والتي تحتوي على الشبكة الفرعية حيث يتم توزيع جرابات العقدة الظاهرية على ACI.
  • عقد العقد التلقائية للتوفير (Karpenter) تحتوي على تسميات إضافية تتوافق مع المحددات المدعومة.
  • kubernetes.azure.com/network-name وسيتم kubernetes.azure.com/network-subnet اختصارها إذا كانت أسماء الموارد الأساسية أكبر من 64 حرفا.

البادئات المحجوزة

البادئات التالية هي بادئات AKS المحجوزة ولا يمكن استخدامها لأي عقدة:

  • kubernetes.azure.com/
  • kubernetes.io/

لمزيد من المعلومات حول البادئات المحجوزة، راجع تسميات Kubernetes المعروفة والتعليقات التوضيحية والملامح.

تسميات مهملة

يتم التخطيط للتسميات التالية للإهمال مع إصدار Kubernetes v1.24. يجب تغيير أي مراجع تسمية إلى البديل الموصى به.

تسمية البديل الموصى به المشرف
failure-domain.beta.kubernetes.io/region topology.kubernetes.io/region كوبرنيتيس
failure-domain.beta.kubernetes.io/zone topology.kubernetes.io/zone كوبرنيتيس
beta.kubernetes.io/arch kubernetes.io/arch كوبرنيتيس
beta.kubernetes.io/instance-type node.kubernetes.io/instance-type كوبرنيتيس
beta.kubernetes.io/os kubernetes.io/os كوبرنيتيس
node-role.kubernetes.io/agent* kubernetes.azure.com/role=agent Azure Kubernetes Service
kubernetes.io/role* kubernetes.azure.com/role=agent Azure Kubernetes Service
Agentpool* kubernetes.azure.com/agentpool Azure Kubernetes Service
StorageProfile* kubernetes.azure.com/storageprofile Azure Kubernetes Service
تعريف التخزين* kubernetes.azure.com/storagetier Azure Kubernetes Service
مسرع الحل* kubernetes.azure.com/accelerator Azure Kubernetes Service

*مهمل حديثا. لمزيد من المعلومات، راجع ملاحظات الإصدار.

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

تعرف على المزيد حول تسميات Kubernetes في وثائق تسميات Kubernetes.