Azure Kubernetes Service (AKS) kümesinde etiketleri kullanma

Birden çok düğüm havuzunuz varsa, düğüm havuzu oluşturma işlemi sırasında bir etiket eklemek isteyebilirsiniz. Kubernetes etiketleri düğümler için zamanlama kurallarını işler. İstediğiniz zaman düğüm havuzuna etiket ekleyebilir ve bunları düğüm havuzundaki tüm düğümlere uygulayabilirsiniz.

Bu nasıl yapılır kılavuzunda, Azure Kubernetes Service (AKS) kümesinde etiketleri kullanmayı öğreneceksiniz.

Önkoşullar

Azure CLI sürüm 2.2.0 veya üzerinin yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Etiketli bir AKS kümesi oluşturma

İş yükü zamanlaması için anahtar/değer meta verilerini ayarlamak üzere düğüm etiketleriyle bir AKS kümesi oluşturabilirsiniz.

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

Sonuçlar:

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

Düğüm etiketlerini (örnek: Bilgi Teknolojileri departmanı=BT, maliyet merkezi=9000) belirterek AKS kümesini oluşturun.

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

Sonuçlar:

{
  "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"
}

Etiketlerin ayarlandığını doğrulayın:

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"

Etiketli bir düğüm havuzu oluşturun

Belirli zamanlama gereksinimlerine yönelik etiketlerle ek bir düğüm havuzu oluşturabilirsiniz.

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

Aşağıda az aks nodepool list komutunun çıktı örneği verilmiştir, bu da labelnp düğüm havuzunun belirtilen nodeLabels ile Oluşturma durumunda olduğunu gösteriyor:

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

Sonuçlar:

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

Etiketlerin ayarlandığını doğrulayın:

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

Mevcut düğüm havuzlarındaki etiketleri güncelleştirme

Mevcut düğüm havuzundaki etiketleri güncelleştirebilirsiniz. Etiketleri yenilemenin eski etiketlerin yerini alacağını unutmayın.

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

Yeni etiketlerin ayarlandığını doğrulayın:

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

Kullanılamayan etiketler

Rezerve edilmiş sistem etiketleri

2021-08-19 AKS sürümünden bu yana AKS ayrılmış etiketlerde değişiklik yapma özelliğini durdurdu. Bu etiketlerin değiştirilmesi bir hata iletisiyle sonuçlanır.

Şu etiketler AKS'ye ayrılmış etiketlerdir. Sanal düğüm kullanımı , bu etiketlerin sanal düğümlerde desteklenen bir sistem özelliği olup olmadığını belirtir. Bazı sistem özelliklerinin değiştirdiği bazı ayarlar, konağın değiştirilmesini gerektirdiği için sanal düğümler üzerinde kullanılamaz.

Etiket Değer Örnek/Seçenekler Sanal düğüm kullanımı
kubernetes.azure.com/agentpool <aracı grubu adı> nodepool1 Aynısı
kubernetes.io/arch <çalışma zamanı. GOARCH> amd64 Yok
kubernetes.io/os <İşletim Sistemi Türü> Linux/Windows Aynısı
node.kubernetes.io/instance-type <VM boyutu> Standard_NC6s_v3 Sanal
topology.kubernetes.io/region <Azure bölgesi> westus2 Aynısı
topology.kubernetes.io/zone <Azure bölgesi> 0 Aynısı
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 Aynısı
kubernetes.azure.com/managedby aks aks Yok
kubernetes.azure.com/mode <mod> User veya system Kullanıcı
kubernetes.azure.com/role temsilci Agent Aynısı
kubernetes.azure.com/scalesetpriority (kullanım dışı) <VMSS önceliği> spot (regular normal düğümlere yazılmaz). Bunun yerine tercih et kubernetes.azure.com/priority . Yok
kubernetes.azure.com/priority <VM önceliği> spot veya regular Yok
kubernetes.io/hostname <ana bilgisayar adı> aks-nodepool-00000000-vmss000000 Aynısı
kubernetes.azure.com/storageprofile <İşletim sistemi disk depolama profili> Managed Yok
kubernetes.azure.com/storagetier <İşletim sistemi disk depolama katmanı> Premium_LRS Yok
kubernetes.azure.com/node-image-version <VHD sürümü> AKSUbuntu-1804-2020.03.05 Sanal düğüm sürümü
kubernetes.azure.com/network-name <nodepool sanal ağ adı> vnetName Sanal düğüm ve sanal ağ
kubernetes.azure.com/network-subnet <nodepool alt ağ adı> subnetName Sanal düğüm alt ağ adı
kubernetes.azure.com/ppg <nodepool ppg adı> ppgName Yok
kubernetes.azure.com/encrypted-set <nodepool şifrelenmiş küme adı> encrypted-set-name Yok
kubernetes.azure.com/accelerator <hızlandırıcı> nvidia Yok
kubernetes.azure.com/fips_enabled <FIPS etkin mi?> true Yok
kubernetes.azure.com/os-sku <os/sku> İşletim sistemi SKU'su oluşturma veya güncelleştirme Linux işletim sistemi
kubernetes.azure.com/os-sku-effective <gerçek işletim sistemi SKU'su seçildi> Ubuntu2204 veya benzer (asla Ubuntu değil, her zaman belirtilen sürüm) Yok
kubernetes.azure.com/os-sku-requested <kullanıcı işletim sistemi SKU'su istedi> Ubuntu, Ubuntu2204veya benzeri (API'den istenen sku ile tam olarak eşleşir) Yok
kubernetes.azure.com/sku-cpu <CPU sayısı> 4 Aynısı
kubernetes.azure.com/sku-memory <GB cinsinden bellek> 16 Aynısı
kubernetes.azure.com/nodepool-type <düğüm havuzu türü> VirtualMachineScaleSets Yok
  • Aynı , etiketler için beklenen değerlerin standart düğüm havuzuyla sanal düğüm havuzu arasında farklı olmadığı yerlerde de bulunur. Sanal düğüm podları temel alınan herhangi bir sanal makineyi (VM) göstermediğinden, VM SKU değerleri SKU sanal olarak değiştirilir.
  • Sanal düğüm sürümü , sanal Kubelet-ACI bağlayıcı sürümünün geçerli sürümünü ifade eder.
  • Sanal düğüm alt ağı adı , sanal düğüm podlarının Azure Container Instance'a (ACI) dağıtıldığı alt ağın adıdır.
  • Sanal düğüm sanal ağı , sanal düğüm podlarının ACI üzerinde dağıtıldığı alt ağı içeren sanal ağın adıdır.
  • Düğüm Otomatik Sağlama (Karpenter) düğümlerinin desteklenen seçicilere karşılık gelen ek etiketleri vardır.
  • kubernetes.azure.com/network-name ve kubernetes.azure.com/network-subnet temel alınan kaynak adları 64 karakterden uzunsa kesilir.

Ayrılmış ön ekler

Aşağıdaki ön ekler AKS ayrılmış ön ekleridir ve herhangi bir düğüm için kullanılamaz:

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

Ayrılmış ön ekler hakkında daha fazla bilgi için Kubernetes iyi bilinen etiketler, ek açıklamalar ve noktalama başlığına bakın.

Kullanım dışı bırakılmış etiketler

Kubernetes v1.24 sürümüyle birlikte aşağıdaki etiketlerin kullanımdan kaldırılması planlanmaktadır. Tüm etiket başvurularını önerilen yedekle değiştirmelisiniz.

Etiket Önerilen yedek Bakımcı
failure-domain.beta.kubernetes.io/region topology.kubernetes.io/region Kubernetes
failure-domain.beta.kubernetes.io/zone topology.kubernetes.io/zone Kubernetes
beta.kubernetes.io/arch kubernetes.io/arch Kubernetes
beta.kubernetes.io/instance-type node.kubernetes.io/instance-type Kubernetes
beta.kubernetes.io/os kubernetes.io/os Kubernetes
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
Depolama Profili* kubernetes.azure.com/storageprofile Azure Kubernetes Service
Depolama Katmanı* kubernetes.azure.com/storagetier Azure Kubernetes Service
Hızlandırıcı* kubernetes.azure.com/accelerator Azure Kubernetes Service

*Yeni kullanım dışı bırakıldı. Daha fazla bilgi için bkz . Sürüm Notları.

Sonraki adımlar

Kubernetes etiketleri belgelerinde Kubernetes etiketleri hakkında daha fazla bilgi edinin.