Azure Kubernetes Service (AKS)'de sistem düğümü havuzlarını yönetme

Azure Kubernetes Service'te (AKS), aynı yapılandırmadaki düğümler birlikte düğüm havuzları halinde gruplandırılır. Düğüm havuzları, uygulamalarınızı çalıştıran temel vm'leri içerir. Sistem düğümü havuzları ve kullanıcı düğümü havuzları, AKS kümeleriniz için iki farklı düğüm havuzu modudır. Sistem düğümü havuzları ve metrics-servergibi CoreDNS kritik sistem podlarını barındırmanın birincil amacına hizmet eder. Kullanıcı düğümü havuzları, uygulama podlarınızı barındırmanın birincil amacına hizmet eder. Ancak AKS kümenizde yalnızca bir havuz olmasını istiyorsanız uygulama podları sistem düğümü havuzlarında zamanlanabilir. Her AKS kümesi en az iki düğüme sahip en az bir sistem düğümü havuzu içermelidir.

Önemli

AKS kümeniz için bir üretim ortamında tek bir sistem düğümü havuzu çalıştırıyorsanız, düğüm havuzu için en az üç düğüm kullanmanızı öneririz.

Bu makalede AKS'de sistem düğümü havuzlarının nasıl yönetileceğini açıklanmaktadır. Birden çok düğüm havuzunu kullanma hakkında bilgi için bkz . Birden çok düğüm havuzu kullanma.

Başlamadan önce

Azure CLI sürüm 2.3.1 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.

Sınırlamalar

Sistem düğümü havuzlarını destekleyen AKS kümelerini oluşturur ve yönetirken aşağıdaki sınırlamalar geçerlidir.

  • Bkz. AKS'de kotalar, VM boyutu kısıtlamaları ve bölge kullanılabilirliği.
  • Düğüm havuzu modunu ayarlamak için 2020-03-01 veya üzeri bir API sürümü kullanılmalıdır. 2020-03-01'den eski API sürümlerinde oluşturulan kümeler yalnızca kullanıcı düğümü havuzlarını içerir, ancak güncelleştirme havuzu modu adımları izlenerek sistem düğümü havuzlarını içerecek şekilde geçirilebilir.
  • Düğüm havuzunun adı yalnızca küçük harfli alfasayısal karakterler içerebilir ve küçük harfle başlamalıdır. Linux düğüm havuzları için uzunluk 1 ile 12 karakter arasında olmalıdır. Windows düğüm havuzları için uzunluk bir ile altı karakter arasında olmalıdır.
  • Düğüm havuzunun modu gerekli bir özelliktir ve ARM şablonları veya doğrudan API çağrıları kullanılırken açıkça ayarlanmalıdır.

Sistem ve kullanıcı düğümü havuzları

Bir sistem düğümü havuzu için AKS, düğümlerine kubernetes.azure.com/mode: sistem etiketini otomatik olarak atar. Bu, AKS'nin bu etiketi içeren düğüm havuzlarında sistem podlarını zamanlamayı tercih etmesine neden olur. Bu etiket, sistem düğümü havuzlarında uygulama podlarını zamanlamanızı engellemez. Ancak, hatalı yapılandırılmış veya hatalı uygulama podlarının sistem podlarını yanlışlıkla silmesini önlemek için kritik sistem podlarını uygulama podlarınızdan yalıtmanızı öneririz.

Ayrılmış bir sistem düğümü havuzu oluşturarak bu davranışı zorunlu kılabilirsiniz. Uygulama podlarının CriticalAddonsOnly=true:NoSchedule sistem düğümü havuzlarında zamanlanmasını önlemek için taint'i kullanın.

Sistem düğümü havuzları aşağıdaki kısıtlamalara sahiptir:

  • Sistem düğümü havuzları, podlar için en düşük ve en yüksek değer formülüyle açıklandığı gibi en az 30 pod desteklemelidir.
  • OsType sistem havuzları Linux olmalıdır.
  • Kullanıcı düğümü havuzları osType Linux veya Windows olabilir.
  • Sistem havuzları en az iki düğüm içermelidir ve kullanıcı düğümü havuzları sıfır veya daha fazla düğüm içerebilir.
  • Sistem düğümü havuzları için en az 4 vCPU ve 4 GB bellek içeren bir VM SKU'su gerekir.
  • B serisi VM'ler sistem düğümü havuzları için desteklenmez.
  • Özellikle büyük kümeler (Çoklu CoreDNS Pod çoğaltmaları, 3-4+ eklentiler vb.) için en az 8 vCPU veya en az 16 vCPU içeren iki düğüm (örneğin, Standard_DS4_v2) önerilir.
  • Spot düğüm havuzları için kullanıcı düğümü havuzları gerekir.
  • Başka bir sistem düğümü havuzu eklemek veya hangi düğüm havuzunun sistem düğümü havuzu olduğunu değiştirmek, sistem podlarını otomatik olarak taşımaz . Sistem podları, kullanıcı düğümü havuzuna değiştirseniz bile aynı düğüm havuzunda çalışmaya devam edebilir. Daha önce sistem düğümü havuzu olan sistem podlarını çalıştıran bir düğüm havuzunu siler veya daraltırsanız, bu sistem podları yeni sistem düğümü havuzuna tercih edilen zamanlamayla yeniden dağıtılır.

Düğüm havuzlarıyla aşağıdaki işlemleri yapabilirsiniz:

  • Ayrılmış bir sistem düğümü havuzu oluşturun (sistem podlarının düğüm havuzlarına mode:systemzamanlamasını tercih edin)
  • AKS kümesindeki yerini alacak başka bir sistem düğümü havuzunuz olması koşuluyla sistem düğümü havuzunu kullanıcı düğümü havuzu olarak değiştirin.
  • Kullanıcı düğümü havuzunu sistem düğümü havuzu olarak değiştirin.
  • Kullanıcı düğümü havuzlarını silin.
  • AKS kümesindeki yerini alacak başka bir sistem düğümü havuzunuz olması koşuluyla sistem düğümü havuzlarını silebilirsiniz.
  • AKS kümesinin birden çok sistem düğümü havuzu olabilir ve en az bir sistem düğümü havuzu gerektirir.
  • Mevcut düğüm havuzlarında çeşitli sabit ayarları değiştirmek istiyorsanız, bunları değiştirmek için yeni düğüm havuzları oluşturabilirsiniz. Örneklerden biri, yeni maxPods ayarına sahip yeni bir düğüm havuzu eklemek ve eski düğüm havuzunu silmektir.
  • Düğüm etiketlerine göre hangi düğümlerin zamanlanabileceğini istemek veya tercih etmek için düğüm benzini kullanın. kullanarak bu tanımı uygulayarak ya da systemuser YAML'niz için , olarak ve values olarak ayarlayabilirsiniz operatorInkeykubernetes.azure.com.kubectl apply -f yourYAML.yaml

Sistem düğümü havuzuyla yeni bir AKS kümesi oluşturma

Yeni bir AKS kümesi oluşturduğunuzda, ilk düğüm havuzu varsayılan olarak türünde systembir moda geçer. ile az aks nodepool addyeni düğüm havuzları oluşturduğunuzda, mode parametresini açıkça belirtmediğiniz sürece bu düğüm havuzları kullanıcı düğümü havuzlarıdır.

Aşağıdaki örnek, eastus bölgesinde myResourceGroup adlı bir kaynak grubu oluşturur.

az group create --name myResourceGroup --location eastus

AKS kümesi oluşturmak için az aks create komutunu kullanın. Aşağıdaki örnek, iki düğüm içeren bir ayrılmış sistem havuzuna sahip myAKSCluster adlı bir küme oluşturur. Üretim iş yükleriniz için en az üç düğüme sahip sistem düğümü havuzları kullandığınızdan emin olun. Bu işlemin tamamlanması birkaç dakika sürebilir.

# Create a new AKS cluster with a single system pool
az aks create -g myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys

Mevcut AKS kümesine ayrılmış bir sistem düğümü havuzu ekleme

Mevcut AKS kümelerine bir veya daha fazla sistem düğümü havuzu ekleyebilirsiniz. Uygulama podlarınızı kullanıcı düğümü havuzlarında zamanlamanız ve sistem düğümü havuzlarını yalnızca kritik sistem podlarına ayırmanız önerilir. Bu, sahte uygulama podlarının sistem podlarını yanlışlıkla silmesini önler. Sistem düğümü havuzlarınız için taint ile CriticalAddonsOnly=true:NoSchedulebu davranışı zorunlu kılın.

Aşağıdaki komut, varsayılan sayısı üç düğüm olan mod türü sistem ayrılmış bir düğüm havuzu ekler.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name systempool \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --mode System

Düğüm havuzunuzun ayrıntılarını gösterme

Aşağıdaki komutla düğüm havuzunuzun ayrıntılarını de kontrol edebilirsiniz.

az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n systempool

Sistem düğümü havuzları için Sistem türünde bir mod ve kullanıcı düğümü havuzları için Kullanıcı türünde bir mod tanımlanır. Sistem havuzu için, taint değerinin olarak ayarlandığını CriticalAddonsOnly=true:NoScheduledoğrulayın. Bu, uygulama podlarının bu düğüm havuzunda zamanlanmış varlık olmasını engeller.

{
  "agentPoolType": "VirtualMachineScaleSets",
  "availabilityZones": null,
  "count": 3,
  "enableAutoScaling": null,
  "enableNodePublicIp": false,
  "id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
  "maxCount": null,
  "maxPods": 110,
  "minCount": null,
  "mode": "System",
  "name": "systempool",
  "nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
  "nodeLabels": {},
  "nodeTaints": [
    "CriticalAddonsOnly=true:NoSchedule"
  ],
  "orchestratorVersion": "1.16.10",
  "osDiskSizeGb": 128,
  "osType": "Linux",
  "provisioningState": "Succeeded",
  "proximityPlacementGroupId": null,
  "resourceGroup": "myResourceGroup",
  "scaleSetEvictionPolicy": null,
  "scaleSetPriority": null,
  "spotMaxPrice": null,
  "tags": null,
  "type": "Microsoft.ContainerService/managedClusters/agentPools",
  "upgradeSettings": {
    "maxSurge": null
  },
  "vmSize": "Standard_DS2_v2",
  "vnetSubnetId": null
}

Mevcut küme sistemini ve kullanıcı düğümü havuzlarını güncelleştirme

Not

Sistem düğümü havuz modunu ayarlamak için 2020-03-01 veya üzeri bir API sürümü kullanılmalıdır. 2020-03-01'den eski API sürümlerinde oluşturulan kümeler sonuç olarak yalnızca kullanıcı düğümü havuzları içerir. Eski kümelerde sistem düğümü havuzu işlevselliğini ve avantajlarını almak için mevcut düğüm havuzlarının modunu en son Azure CLI sürümünde aşağıdaki komutlarla güncelleştirin.

Hem sistem hem de kullanıcı düğümü havuzlarının modlarını değiştirebilirsiniz. Bir sistem düğümü havuzunu yalnızca AKS kümesinde zaten başka bir sistem düğümü havuzu varsa kullanıcı havuzu olarak değiştirebilirsiniz.

Bu komut, sistem düğümü havuzunu kullanıcı düğümü havuzuna değiştirir.

az aks nodepool update -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode user

Bu komut, kullanıcı düğümü havuzunu sistem düğümü havuzuna değiştirir.

az aks nodepool update -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode system

Sistem düğümü havuzunu silme

Not

API 2020-03-02 sürümünden önce AKS kümelerinde sistem düğümü havuzlarını kullanmak için yeni bir sistem düğümü havuzu ekleyin ve özgün varsayılan düğüm havuzunu silin.

Bunlardan birini silebilmeniz için aks kümenizde en az iki sistem düğümü havuzu olmalıdır.

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

Kaynakları temizleme

Kümeyi silmek için az group delete komutunu kullanarak AKS kaynak grubunu silin:

az group delete --name myResourceGroup --yes --no-wait

Sonraki adımlar

Bu makalede, AKS kümesinde sistem düğümü havuzları oluşturmayı ve yönetmeyi öğrendiniz. AKS düğüm havuzlarını başlatma ve durdurma hakkında bilgi için bkz . AKS düğüm havuzlarını başlatma ve durdurma.