Azure Kubernetes Service (AKS) ile bir küme için birden çok düğüm havuzu oluşturma ve yönetme

Azure Kubernetes hizmeti 'nde (AKS), aynı yapılandırmanın düğümleri düğüm havuzlarında birlikte gruplandırılır. Bu düğüm havuzları, uygulamalarınızı çalıştıran temel VM 'Leri içerir. Bir sistem düğüm havuzuoluşturan bir aks kümesi oluşturduğunuzda, ilk düğüm sayısı ve boyutu (SKU) tanımlanmıştır. Farklı işlem veya depolama taleplerine sahip uygulamaları desteklemek için ek Kullanıcı düğümü havuzları oluşturabilirsiniz. Sistem düğüm havuzları, CoreDNS ve tunnelfront gibi kritik sistem yığınlarını barındırmanın birincil amacını sunar. Kullanıcı düğümü havuzları, uygulama yığınlarınızı barındırmanın birincil amacını sunar. Ancak, aks kümenizde yalnızca bir havuza sahip olmak istiyorsanız, uygulama Pod 'leri sistem düğüm havuzlarında zamanlanabilir. Kullanıcı düğümü havuzları, uygulamaya özgü yığınlarınızı yerleştirdiğiniz yerdir. Örneğin, işlem yoğunluklu uygulamalar için GPU veya yüksek performanslı SSD depolamaya erişim sağlamak için bu ek Kullanıcı düğümü havuzlarını kullanın.

Not

Bu özellik, birden çok düğüm havuzunun oluşturulması ve yönetilmesi üzerinde daha yüksek denetim sağlar. Sonuç olarak, oluşturma/güncelleştirme/silme için ayrı komutlar gerekir. Daha önce az aks create az aks update , MANAGEDCLUSTER API 'yi aracılığıyla veya kullanarak işlem yapın ve denetim düzlemini ve tek bir düğüm havuzunu değiştirmek için tek seçenektir. Bu özellik, agentPool API 'SI aracılığıyla aracı havuzları için ayarlanan ayrı bir işlem sunar ve az aks nodepool tek bir düğüm havuzunda işlemleri yürütmek için komut kümesinin kullanılmasını gerektirir.

Bu makalede bir AKS kümesinde birden çok düğüm havuzu oluşturma ve yönetme konusu gösterilmektedir.

Başlamadan önce

Azure CLı sürüm 2.2.0 veya sonraki bir sürümün 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

Birden çok düğüm havuzunu destekleyen AKS kümelerini oluşturup yönetirken aşağıdaki sınırlamalar geçerlidir:

  • Azure Kubernetes Service (AKS) Içindeki kotalar, sanal makine boyutu kısıtlamaları ve bölge kullanılabilirliğikonusuna bakın.
  • Sistem düğüm havuzlarını, kendi AKS kümesindeki yerini almak için başka bir sistem düğüm havuzunuz olması şartıyla silebilirsiniz.
  • Sistem havuzlarının en az bir düğüm içermesi ve Kullanıcı düğüm havuzlarının sıfır veya daha fazla düğüm içermesi gerekir.
  • AKS kümesi birden çok düğüm havuzu kullanmak için standart SKU yük dengeleyiciyi kullanmalıdır, özellik temel SKU yük dengeleyicilerle desteklenmez.
  • AKS kümesinin düğümlerin sanal makine ölçek kümelerini kullanması gerekir.
  • Bir düğüm havuzunun VM boyutunu oluşturduktan sonra değiştiremezsiniz.
  • 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 node havuzları için uzunluk 1 ila 6 karakter arasında olmalıdır.
  • Tüm düğüm havuzları aynı sanal ağda bulunmalıdır.
  • Küme oluşturma zamanında birden çok düğüm havuzu oluştururken, düğüm havuzları tarafından kullanılan tüm Kubernetes sürümlerinin denetim düzlemi için ayarlanan sürüm kümesiyle eşleşmesi gerekir. Bu, küme, düğüm başına havuz işlemleri kullanılarak sağlandıktan sonra güncelleştirilebilen olabilir.

AKS kümesi oluşturma

Önemli

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

Başlamak için, tek düğümlü havuz ile bir AKS kümesi oluşturun. Aşağıdaki örnek, eastus bölgesinde myresourcegroup adlı bir kaynak grubu oluşturmak için az Group Create komutunu kullanır. Myakscluster adlı bir aks kümesi daha sonra az aks Create komutu kullanılarak oluşturulur.

Not

Birden çok düğüm havuzu kullanılırken temel yük dengeleyici SKU 'su desteklenmez . Varsayılan olarak, AKS kümeleri, Azure CLı ve Azure portal Standart yük dengeleyici SKU 'su ile oluşturulur.

# Create a resource group in East US
az group create --name myResourceGroup --location eastus

# Create a basic single-node AKS cluster
az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 2 \
    --generate-ssh-keys \
    --load-balancer-sku standard

Kümenin oluşturulması birkaç dakika sürer.

Not

Kümenizin güvenilir bir şekilde çalışmasını sağlamak için, bu düğüm havuzunda önemli sistem hizmetleri çalıştığı için varsayılan düğüm havuzunda en az 2 (iki) düğüm çalıştırmalısınız.

Küme kullanıma hazırsa, şu ile kullanılacak küme kimlik bilgilerini almak için az aks Get-Credentials komutunu kullanın kubectl :

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Düğüm havuzu ekleme

Önceki adımda oluşturulan kümenin tek bir düğüm havuzu vardır. Az aks nodepool Add komutunu kullanarak ikinci bir düğüm havuzu ekleyelim. Aşağıdaki örnek 3 düğümleri çalıştıran mynodepool adlı bir düğüm havuzu oluşturur:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3

Not

Düğüm havuzunun adı küçük harfle başlamalı ve yalnızca alfasayısal karakterler içerebilir. Linux düğüm havuzları için uzunluk 1 ile 12 karakter arasında olmalıdır, Windows node havuzları için uzunluk 1 ila 6 karakter arasında olmalıdır.

Düğüm havuzlarınızın durumunu görmek için az aks node Pool List komutunu kullanın ve kaynak grubunuzu ve küme adınızı belirtin:

az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster

Aşağıdaki örnek çıktı, düğüm havuzundaki üç düğüm ile mynodepool başarıyla oluşturulduğunu gösterir. Önceki adımda AKS kümesi oluşturulduğunda, düğüm sayısı 2 olan varsayılan bir nodepool1 oluşturulmuştur.

[
  {
    ...
    "count": 3,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

İpucu

bir düğüm havuzu eklediğinizde hiçbir vmsize belirtilmemişse, varsayılan boyut Windows düğüm havuzları ve Linux düğüm havuzlarının Standard_DS2_v2 için Standard_D2s_v3 . Bir Orchestratorversion belirtilmemişse, varsayılan olarak denetim düzlemi ile aynı sürüme ayarlanır.

Benzersiz alt ağa sahip bir düğüm havuzu ekleme (Önizleme)

Bir iş yükü, kümenin düğümlerini mantıksal yalıtım için ayrı havuzlara bölmeyi gerektirebilir. Bu yalıtım, kümedeki her düğüm havuzuna ayrılmış ayrı alt ağlarda desteklenebilir. Bu, düğüm havuzlarına bölünecek bitişik olmayan sanal ağ adres alanı gibi gereksinimleri ele alabilir.

Sınırlamalar

  • Nodepools öğesine atanan tüm alt ağlar aynı sanal ağa ait olmalıdır.
  • DNS çözümlemesi ve tünel kubectl günlükleri/exec/bağlantı noktası-iletme proxy 'si gibi kritik işlevler sağlamak için, sistem kimliklerinin kümedeki tüm düğümlere/yığınlara erişimi olmalıdır.
  • Kümeyi oluşturduktan sonra VNET 'i genişletirseniz, özgün CIDR dışında bir alt ağ eklemeden önce kümenizi güncelleştirmeniz gerekir (yönetilen küme işlemini gerçekleştirin ancak düğüm havuzu işlemleri sayılmaz). Bu durumda, ilk olarak izin verdiğimiz halde, aracı havuzunda hata dışarı çıkar. Küme dosyanızı bir destek bileti ile nasıl mutabık kılınabileceğinizi bilmiyorsanız.
  • Calıco ağ Ilkesi desteklenmiyor.
  • Azure ağ Ilkesi desteklenmiyor.
  • Kuin-proxy, tek bir bitişik CIDR bekler ve bunu üç optmizations için kullanır. Bu K.E.P. bakın ve--daha fazla bilgi için burada CIDR. Azure CNI 'de, ilk düğüm havuzunuzun alt ağı Kube-proxy ' ye verilecek.

Ayrılmış bir alt ağa sahip bir düğüm havuzu oluşturmak için, düğüm havuzu oluştururken alt ağ kaynak KIMLIĞINI ek bir parametre olarak geçirin.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3 \
    --vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>

Düğüm havuzunu yükseltme

Not

Bir küme veya düğüm havuzundaki yükseltme ve ölçeklendirme işlemleri, bir hata döndürülürse, aynı anda gerçekleşemez. Bunun yerine, her işlem türünün aynı kaynaktaki bir sonraki istekten önce hedef kaynakta tamamlaması gerekir. Sorun giderme kılavuzumuzdanbu konuda daha fazla bilgi edinin.

Bu bölümdeki komutlar, tek bir belirli düğüm havuzunun nasıl yükseltileceğini açıklamaktadır. Denetim düzlemi ve düğüm havuzunun Kubernetes sürümünü yükseltme arasındaki ilişki aşağıdaki bölümdeaçıklanmıştır.

Not

Düğüm havuzu işletim sistemi görüntüsü sürümü, kümenin Kubernetes sürümüne bağlıdır. Yalnızca bir küme yükseltmesini izleyerek işletim sistemi görüntüsü yükseltmelerini alacaksınız.

Bu örnekte iki düğüm havuzu olduğundan, bir düğüm havuzunu yükseltmek için az aks nodepool Upgrade kullanmanız gerekir. Kullanılabilir yükseltmeleri görmek için az aks Get-yükseltmeleri kullanın

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

Mynodepool'yi yükseltelim. Aşağıdaki örnekte gösterildiği gibi, düğüm havuzunu yükseltmek için az aks nodepool Upgrade komutunu kullanın:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --kubernetes-version KUBERNETES_VERSION \
    --no-wait

Az aks düğüm havuzu listesi komutunu kullanarak düğüm havuzlarınızın durumunu yeniden listeleyin. Aşağıdaki örnek, mynodepool KUBERNETES_VERSION için yükseltme durumunda olduğunu gösterir:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 3,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "KUBERNETES_VERSION",
    ...
    "provisioningState": "Upgrading",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Düğümlerin belirtilen sürüme yükseltilmesi birkaç dakika sürer.

En iyi uygulama olarak, bir AKS kümesindeki tüm düğüm havuzlarını aynı Kubernetes sürümüne yükseltmeniz gerekir. Varsayılan davranışı, az aks upgrade Bu hizalamayı başarmak için tüm düğüm havuzlarını denetim düzlemesiyle birlikte yükseltmekte. Tek tek düğüm havuzlarını yükseltebilme özelliği, yukarıdaki kısıtlamalar dahilinde uygulama çalışma süresini korumak için sıralı yükseltme gerçekleştirmenize ve düğüm havuzları arasında dizin zamanlamauygulamanıza olanak tanır.

Birden çok düğümlü havuzlarla küme denetim düzlemi 'ni yükseltme

Not

Kubernetes, standart anlamsal sürüm oluşturma düzenini kullanır. Sürüm numarası x. y. z olarak ifade edilir; burada x ana sürümdür, y ise ikincil sürümdür ve z , yama sürümüdür. Örneğin, sürüm 1.12.6' de, 1 ana sürümdür, 12 ise ikincil sürümdür ve 6 Düzeltme Eki sürümüdür. Denetim düzlemi ve ilk düğüm havuzunun Kubernetes sürümü küme oluşturma sırasında ayarlanır. Tüm ek düğüm havuzlarının, kümeye eklendiğinde Kubernetes sürümü ayarlanmış olmalıdır. Kubernetes sürümleri, düğüm havuzlarının yanı sıra düğüm havuzu ile denetim düzlemi arasında farklılık gösterebilir.

AKS kümesi, Kubernetes sürümleriyle ilişkili iki küme kaynak nesnesine sahiptir.

  1. Küme denetim düzlemi Kubernetes sürümü.
  2. Kubernetes sürümüne sahip bir düğüm Havuzu.

Denetim düzlemi bir veya daha fazla düğüm havuzlarıyla eşlenir. Bir yükseltme işleminin davranışı, hangi Azure CLı komutunun kullanıldığına bağlıdır.

AKS denetim düzleminin yükseltilmesi için kullanılması gerekir az aks upgrade . Bu komut, denetim düzlemi sürümünü ve kümedeki tüm düğüm havuzlarını yükseltir.

az aks upgradeKomutun --control-plane-only bayrağıyla verilmesi yalnızca küme denetim düzlemini yükseltir. Kümedeki ilişkili düğüm havuzlarının hiçbiri değiştirilmez.

Tek tek düğüm havuzlarının yükseltilmesi için kullanılması gerekir az aks nodepool upgrade . Bu komut yalnızca hedef düğüm havuzunu belirtilen Kubernetes sürümüyle yükseltir

Yükseltmeler için doğrulama kuralları

Bir kümenin denetim düzlemi ve düğüm havuzları için geçerli Kubernetes yükseltmeleri, aşağıdaki kural kümeleri tarafından onaylanır.

  • Düğüm havuzlarını yükseltmek için geçerli sürümlerin kuralları:

    • Düğüm havuzu sürümü, denetim düzlemi ile aynı ana sürüme sahip olmalıdır.
    • Düğüm havuzu İkincil sürümü, denetim düzlemi sürümünün iki alt sürümü içinde olmalıdır.
    • Düğüm havuzu sürümü, denetim sürümünden daha büyük olamaz major.minor.patch .
  • Yükseltme işlemi gönderme kuralları:

    • Denetim düzlemi veya düğüm havuzu Kubernetes sürümü indirgeyemezsiniz.
    • Düğüm havuzu Kubernetes sürümü belirtilmemişse, davranış kullanılan istemciye bağlıdır. Kaynak Yöneticisi şablonlarındaki bildirim, kullanılıyorsa düğüm havuzu için tanımlanan mevcut sürüme geri döner, yoksa, hiçbir değer ayarlanmamışsa denetim düzlemi sürümü kullanılır.
    • Belirli bir zamanda bir denetim düzlemi veya düğüm havuzu yükseltebilir ya da ölçeklendirebilirsiniz, tek bir denetim düzlemine veya düğüm havuzu kaynağına aynı anda birden çok işlem gönderemezsiniz.

Düğüm havuzunu el ile ölçeklendirme

Uygulama iş yükünüz değiştikçe, bir düğüm havuzundaki düğüm sayısını ölçeklendirmeniz gerekebilir. Düğüm sayısı yukarı veya aşağı ölçeklendirilebilirler.

Düğüm havuzundaki düğüm sayısını ölçeklendirmek için az aks node Pool Scale komutunu kullanın. Aşağıdaki örnek, mynodepool içindeki düğüm sayısını 5 olarak ölçeklendirir:

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 5 \
    --no-wait

Az aks düğüm havuzu listesi komutunu kullanarak düğüm havuzlarınızın durumunu yeniden listeleyin. Aşağıdaki örnek, mynodepool 'in yeni sayısı 5 düğüm olan ölçekleme durumunda olduğunu gösterir:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 5,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Scaling",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Ölçek işleminin tamamlanabilmesi birkaç dakika sürer.

Küme otomatik Scaler 'ı etkinleştirerek belirli bir düğüm havuzunu otomatik olarak ölçeklendirin

AKS, düğüm havuzlarını kümeotomatik olarak ölçeklendirme adlı bir özellik ile otomatik olarak ölçeklendirmeye yönelik ayrı bir özellik sunar. Bu özellik, düğüm havuzu başına benzersiz ve en fazla ölçek sayısı olan düğüm havuzu başına etkinleştirilebilir. Düğüm havuzu başına küme otomatik Scaler 'ı kullanmayıöğrenin.

Düğüm havuzunu silme

Artık havuz gerekmiyorsa, onu silebilir ve temel alınan VM düğümlerini kaldırabilirsiniz. Bir düğüm havuzunu silmek için az aks node Pool Delete komutunu kullanın ve düğüm havuzu adını belirtin. Aşağıdaki örnekte, önceki adımlarda oluşturulan mynoodepool silinir:

Dikkat

Bir düğüm havuzunu sildiğinizde oluşabilecek veri kaybı için kurtarma seçeneği yoktur. Diğer düğüm havuzlarında Eğer Pod zamanlanamaz, bu uygulamalar kullanılamaz. Kullanımda olan uygulamalarda veri yedeklemeleri olmadığında veya kümenizdeki diğer düğüm havuzlarında çalıştırma yeteneğine sahip olmayan bir düğüm havuzunu silmemenizi unutmayın.

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait

Az aks düğüm havuzu List komutundan alınan aşağıdaki örnek çıktı, mynodepool 'in silme durumunda olduğunu gösterir:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 5,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Deleting",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Düğümlerin ve düğüm havuzunun silinmesi birkaç dakika sürer.

Düğüm havuzu için VM boyutu belirtme

Önceki örneklerde, bir düğüm havuzu oluşturmak için, kümede oluşturulan düğümler için varsayılan bir VM boyutu kullanıldı. Daha yaygın bir senaryo, farklı VM boyutları ve özellikleri olan düğüm havuzları oluşturmanıza yöneliktir. Örneğin, büyük miktarlarda CPU veya belleğe sahip düğümleri veya GPU desteği sağlayan bir düğüm havuzunu içeren düğüm havuzu oluşturabilirsiniz. Sonraki adımda, Kubernetes Scheduler 'a bu düğümlerde çalışabilecek düğüm erişimini nasıl sınırlayacağınızı bildirmek için tatları ve toleransı kullanırsınız .

Aşağıdaki örnekte, Standard_NC6 VM boyutunu kullanan GPU tabanlı bir düğüm havuzu oluşturun. Bu VM 'Ler NVıDıA Tesla K80 kartı tarafından desteklenir. Kullanılabilir VM boyutları hakkında daha fazla bilgi için bkz. Azure 'Da Linux sanal makineleri Için boyutlar.

Az aks düğüm havuzu Add komutunu yeniden kullanarak bir düğüm havuzu oluşturun. Bu kez, gpunodepool adını belirtin ve --node-vm-size Standard_NC6 boyutunu belirtmek için parametresini kullanın:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

Az aks düğüm havuzu List komutundan aşağıdaki örnek çıktı, Gpunodepool belirtilen VMSize sahip düğümleri oluşturuyor olduğunu gösterir:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "gpunodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "vmSize": "Standard_NC6",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Gpunodepool 'nin başarıyla oluşturulması birkaç dakika sürer.

Düğüm havuzu için bir taınt, etiket veya etiket belirtme

Düğüm havuzu oluştururken, bu düğüm havuzuna litre, Etiketler veya Etiketler ekleyebilirsiniz. Bir taınt, etiket veya etiket eklediğinizde, bu düğüm havuzundaki tüm düğümler o taınt, etiket veya etiketi de alır.

Önemli

Düğümler, Etiketler ya da Etiketler, kullanarak tüm düğüm havuzu için yapılmalıdır az aks nodepool . Kullanarak bir düğüm havuzundaki düğümlere, etiketlere veya etiketlere tek tek uygulama uygulanması kubectl önerilmez.

Nodepool izleri ayarlama

Taint ile bir düğüm havuzu oluşturmak için az aks nodepool Addkullanın. Container TNP adını belirtin ve bu parametreyi, --node-taints Taint için SKU = GPU: NoSchedule belirtmek üzere kullanın.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name taintnp \
    --node-count 1 \
    --node-taints sku=gpu:NoSchedule \
    --no-wait

Not

Bir Taint, düğüm havuzu oluşturma sırasında yalnızca düğüm havuzları için ayarlanabilir.

Az aks nodepool List komutundan alınan aşağıdaki örnek çıktı, Container TNP 'nin belirtilen hatalarla düğüm oluşturmasını göstermektedir:

$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster

[
  {
    ...
    "count": 1,
    ...
    "name": "taintnp",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "nodeTaints":  [
      "sku=gpu:NoSchedule"
    ],
    ...
  },
 ...
]

Taint bilgileri, düğümlerin zamanlama kurallarını işlemek için Kubernetes içinde görülebilir. Kubernetes Zamanlayıcı, düğümlerde hangi iş yüklerinin çalıştırılacağını kısıtlamak için tatları ve toleranları kullanabilir.

  • Yalnızca belirli yığınların zamanlanabileceğini gösteren bir düğüme bir taınt uygulanır.
  • Daha sonra bir tolerans , düğümün Taint 'e kabul etmesine izin veren bir pod öğesine uygulanır.

Gelişmiş Kubernetes zamanlanmış özelliklerini kullanma hakkında daha fazla bilgi için bkz. AKS 'de gelişmiş Zamanlayıcı özellikleri Için en iyi yöntemler

Önceki adımda, düğüm havuzunuzu oluştururken SKU = GPU: NoSchedule Taint ' i uyguladınız. Aşağıdaki temel örnek YAML bildirimi, Kubernetes Scheduler ' ın bu düğüm havuzundaki bir düğümde NGıNX Pod çalıştırmasına izin vermek için bir toleranation kullanır.

Adlı bir dosya oluşturun nginx-toleration.yaml ve aşağıdaki örnekteki YAML 'yi kopyalayın:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
    name: mypod
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 1
        memory: 2G
  tolerations:
  - key: "sku"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Şu komutu kullanarak Pod 'u zamanlayın kubectl apply -f nginx-toleration.yaml :

kubectl apply -f nginx-toleration.yaml

Pod 'u zamanlamak ve NGıNX görüntüsünü çekmek birkaç saniye sürer. Pod durumunu görüntülemek için kubectl betimleyen Pod komutunu kullanın. Aşağıdaki sıkıştırılmış örnek çıktı SKU = GPU: NoSchedule toleranation ' ı gösterir. Olaylar bölümünde Zamanlayıcı, Pod 'yi aks-Container TNP-28993262-vmss000000 düğümüne atamıştır:

kubectl describe pod mypod
[...]
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
                 sku=gpu:NoSchedule
Events:
  Type    Reason     Age    From                Message
  ----    ------     ----   ----                -------
  Normal  Scheduled  4m48s  default-scheduler   Successfully assigned default/mypod to aks-taintnp-28993262-vmss000000
  Normal  Pulling    4m47s  kubelet             pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Pulled     4m43s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Created    4m40s  kubelet             Created container
  Normal  Started    4m40s  kubelet             Started container

Yalnızca bu toleranlama uygulanmış olan FID 'ler, Container of 'lar içindeki düğümlerde zamanlanabilir. Diğer Pod 'lar nodepool1 düğüm havuzunda zamanlanır. Ek düğüm havuzları oluşturursanız, bu düğüm kaynakları üzerinde hangi yığınların zamanlanabileceği ile ilgili ek litre ve toleransyonlar kullanabilirsiniz.

Nodepool etiketlerini ayarlama

Düğüm havuzu oluşturma sırasında düğüm havuzuna de etiket ekleyebilirsiniz. Düğüm havuzunda ayarlanan Etiketler düğüm havuzundaki her bir düğüme eklenir. Bu Etiketler, düğümlerin zamanlama kurallarını işlemek için Kubernetes içinde görülebilir .

Etiketli bir düğüm havuzu oluşturmak için az aks nodepool Addkullanın. Labelnp adını belirtin ve --labels Bu parametreyi kullanarak Bölüm = It ve costcenter = 9999 etiketlerini belirtin.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name labelnp \
    --node-count 1 \
    --labels dept=IT costcenter=9999 \
    --no-wait

Not

Etiket, düğüm havuzu oluşturma sırasında yalnızca düğüm havuzları için ayarlanabilir. Etiketler Ayrıca bir anahtar/değer çifti olmalıdır ve geçerli bir sözdiziminesahip olmalıdır.

Az aks nodepool List komutundan alınan aşağıdaki örnek çıktı, labelnp 'in belirtilen nodelabels düğümleri oluşturmasını göstermektedir:

$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster

[
  {
    ...
    "count": 1,
    ...
    "name": "labelnp",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "nodeLabels":  {
      "dept": "IT",
      "costcenter": "9999"
    },
    ...
  },
 ...
]

Nodepool Azure etiketlerini ayarlama

AKS kümenizdeki düğüm havuzlarına bir Azure etiketi uygulayabilirsiniz. Düğüm havuzuna uygulanan etiketler, düğüm havuzu içindeki her bir düğüme uygulanır ve yükseltmeler aracılığıyla kalıcı hale getirilir. Etiketler, genişleme işlemleri sırasında düğüm havuzuna eklenen yeni düğümlere de uygulanır. Etiket eklemek, ilke izleme veya maliyet tahmini gibi görevlerle yardımcı olabilir.

Azure etiketlerinde, anahtar ararken bir etiketi alırken olduğu gibi işlemler için büyük/küçük harfe duyarsız olan anahtarlar vardır. Bu durumda, verilen anahtara sahip bir etiket, büyük/küçük harfe bakılmaksızın güncelleştirilir veya alınacaktır. Etiket değerleri büyük/küçük harfe duyarlıdır.

AKS 'de, birden fazla etiket aynı anahtarlarla, ancak büyük/küçük harflere sahip olarak ayarlandıysa, kullanılan etiket ilk alfabetik sırada kullanılır. Örneğin, {"Key1": "val1", "kEy1": "val2", "key1": "val3"} Key1 ile sonuçlanır ve val1 ayarlanır.

Az aks nodepool Add' i kullanarak bir düğüm havuzu oluşturun. Tagnodepool adını belirtin ve --tag Bu parametreyi kullanarak, Etiketler için Bölüm = It ve costcenter = 9999 parametresini belirtin.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name tagnodepool \
    --node-count 1 \
    --tags dept=IT costcenter=9999 \
    --no-wait

Not

Ayrıca, --tags az aks nodepool Update komutunu kullanırken ve küme oluşturma sırasında parametresini de kullanabilirsiniz. Küme oluşturma sırasında --tags parametresi, etiketi kümeyle oluşturulan ilk düğüm havuzuna uygular. Tüm etiket adlarının Azure kaynaklarınızı düzenlemek için etiketleri kullanma konusunda yer alan sınırlamalara uyması gerekir. Bir düğüm havuzunu parametresiyle --tags güncelleştirmek, mevcut etiket değerlerini güncelleştirmeyi ve yeni etiketleri ekler. Örneğin, düğüm havuzunuz etiketler için dept=IT ve costcenter=9999'a sahipse ve bunu etiketler için team=dev ve costcenter=111 ile güncelleştirilmişse nodepool örneğinde dept=IT, costcenter=111 ve etiketler için team=dev olur.

az aks nodepool list komutunun aşağıdaki örnek çıktısı, tagnodepool'un Belirtilen etikete sahip düğümler oluşturma olduğunu gösterir:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "tagnodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "tags": {
      "dept": "IT",
      "costcenter": "9999"
    },
    ...
  },
 ...
]

FIPS özellikli düğüm havuzu ekleme (önizleme)

Federal Bilgi İşleme Standardı (FIPS) 140-2, bilgi teknolojisi ürün ve sistemlerinde şifreleme modülleri için minimum güvenlik gereksinimlerini tanımlayan bir ABD kamu standardıdır. AKS, FIPS 140-2 etkin Linux tabanlı düğüm havuzları oluşturmanıza olanak sağlar. FIPS özellikli düğüm havuzlarında çalışan dağıtımlar, daha fazla güvenlik sağlamak ve FedRAMP uyumluluğu kapsamında güvenlik denetimlerini karşılamaya yardımcı olmak için bu şifreleme modüllerini kullanabilir. FIPS 140-2 hakkında daha fazla bilgi için bkz. Federal Bilgi İşleme Standardı (FIPS) 140-2.

FIPS etkin düğüm havuzları şu anda önizlemededir.

Önemli

AKS önizleme özellikleri self servis, kabul etme temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinden ve sınırlı garantiden dışlanmıştır. AKS önizlemeleri en iyi çaba temelinde müşteri desteği kapsamındadır. Bu nedenle bu özellikler üretimde kullanım için uygun değil. Daha fazla bilgi için aşağıdaki destek makalelerini okuyun:

aks-preview Azure CLI uzantısının 0.5.11 veya sonraki bir sürümü gerekir. az extension add komutunu kullanarak aks-preview Azure CLI uzantısını yükleyin. Veya az extension update komutunu kullanarak kullanılabilir güncelleştirmeleri yükleyin.

# Install the aks-preview extension
az extension add --name aks-preview

# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Özelliği kullanmak için aboneliğiniz üzerinde özellik FIPSPreview bayrağını da etkinleştirmeniz gerekir.

Özellik FIPSPreview bayrağını kaydetmek için aşağıdaki örnekte gösterildiği gibi az feature register komutunu kullanın:

az feature register --namespace "Microsoft.ContainerService" --name "FIPSPreview"

Durumun Registered (Kayıtlı) olarak gösterilesi birkaç dakika sürer. az feature list komutunu kullanarak kayıt durumunu doğrulayın:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/FIPSPreview')].{Name:name,State:properties.state}"

Hazır olduğunda az provider register komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin:

az provider register --namespace Microsoft.ContainerService

FIPS özellikli düğüm havuzlarında aşağıdaki sınırlamalar vardır:

  • Şu anda yalnızca Ubuntu 18.04 üzerinde çalışan FIPS özellikli Linux tabanlı düğüm havuzlarına sahipsiniz.
  • FIPS özellikli düğüm havuzları Için Kubernetes sürüm 1.19 ve daha yenisi gerekir.
  • FIPS için kullanılan temel paketleri veya modülleri güncelleştirmek için Düğüm Görüntüsü Yükseltmesi'ne sahip olun.

Önemli

FIPS özellikli Linux görüntüsü, Linux tabanlı düğüm havuzları için kullanılan varsayılan Linux görüntüsünden farklı bir görüntüdür. Bir düğüm havuzunda FIPS'i etkinleştirmek için yeni bir Linux tabanlı düğüm havuzu oluşturmanız gerekir. FiPS'yi mevcut düğüm havuzlarında etkinleştiresiniz.

FIPS özellikli düğüm görüntüleri, çekirdek sürümü gibi FIPS etkin olmayan görüntülerden farklı sürüm numaralarına sahip olabilir. Ayrıca, FIPS özellikli düğüm havuzları ve düğüm görüntüleri için güncelleştirme döngüsü, FIPS etkin olmayan düğüm havuzlarından ve görüntülerden farklı olabilir.

FIPS özellikli bir düğüm havuzu oluşturmak için, düğüm havuzu oluştururken az aks nodepool add komutuyla --enable-fips-image parametresini kullanın.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name fipsnp \
    --enable-fips-image

Not

Varsayılan düğüm havuzunda FIPS'yi etkinleştirmek için bir küme oluştururken az aks create ile --enable-fips-image parametresini de kullanabilirsiniz. Bu şekilde oluşturulan bir kümeye düğüm havuzları eklerken, FIPS özellikli bir düğüm havuzu oluşturmak için düğüm havuzları eklerken yine de --enable-fips-image parametresini kullan gerekir.

Düğüm havuz etkinleştirilmiş olduğunu doğrulamak için az aks show kullanarak agentPoolProfiles içinde enableFIPS değerini kontrol edin.

az aks show --resource-group myResourceGroup --cluster-name myAKSCluster --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" -o table

Aşağıdaki örnek çıktı, fipsnp düğüm havuzunun FIPS etkin olduğunu ve nodepool1'in olmadığını gösterir.

Name       enableFips
---------  ------------
fipsnp     True
nodepool1  False  

Dağıtımların FIPS özellikli düğüm havuzunda bir düğümde kullanarak FIPS şifreleme kitaplıklarına kubectl debug erişimi olduğunu da doğruabilirsiniz. Düğümleri kubectl get nodes liste olarak kullanmak için kullanın:

$ kubectl get nodes
NAME                                STATUS   ROLES   AGE     VERSION
aks-fipsnp-12345678-vmss000000      Ready    agent   6m4s    v1.19.9
aks-fipsnp-12345678-vmss000001      Ready    agent   5m21s   v1.19.9
aks-fipsnp-12345678-vmss000002      Ready    agent   6m8s    v1.19.9
aks-nodepool1-12345678-vmss000000   Ready    agent   34m     v1.19.9

Yukarıdaki örnekte, ile başlayan düğümler aks-fipsnp FIPS özellikli düğüm havuzunun bir parçasıdır. kubectl debugFIPS özellikli düğüm havuzunda bu düğümlerden biri üzerinde etkileşimli bir oturum ile dağıtım çalıştırmak için kullanın.

kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11

Etkileşimli oturumdan FIPS şifreleme kitaplıklarının etkinleştirildiğinden emin olun:

root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
1

FIPS özellikli düğüm havuzları, dağıtımlar tarafından bu kubernetes.azure.com/fips_enabled=true hedef için etkinleştirilmiş bir ağ etiketine de sahiptir.

Resource Manager şablonu kullanarak Resource Manager yönetme

Kaynak oluşturmak Azure Resource Manager yönetilen bir şablon kullanıyorsanız, genellikle şablonun ayarlarını güncelleştirebilirsiniz ve kaynağı güncelleştirmek için yeniden kullanabilirsiniz. AKS'de düğüm havuzları ile AKS kümesi oluşturulduktan sonra ilk düğüm havuzu profili güncelleştirilemez. Bu davranış, mevcut bir uygulama şablonu Resource Manager, düğüm havuzlarında değişiklik yapma ve yeniden uygulama anlamına gelir. Bunun yerine, yalnızca mevcut bir AKS Resource Manager düğüm havuzlarını güncelleştirmeye uygun ayrı bir şablon oluşturmanız gerekir.

gibi bir şablon oluşturun aks-agentpools.json ve aşağıdaki örnek bildirimi yapıştırın. Bu örnek şablon aşağıdaki ayarları yapılandırıyor:

  • Üç düğümü çalıştırmak için myagentpool adlı Linux düğüm havuzunu güncelleştirme.
  • Kubernetes sürüm 1.15.7'i çalıştırmak için düğüm havuzu düğümlerini ayarlar.
  • Düğüm boyutunu olarak Standard_DS2_v2.

Bu değerleri gerektiğinde düğüm havuzlarını güncelleştirme, ekleme veya silme ihtiyacı olarak düzenleyin:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "clusterName": {
            "type": "string",
            "metadata": {
                "description": "The name of your existing AKS cluster."
            }
        },
        "location": {
            "type": "string",
            "metadata": {
                "description": "The location of your existing AKS cluster."
            }
        },
        "agentPoolName": {
            "type": "string",
            "defaultValue": "myagentpool",
            "metadata": {
                "description": "The name of the agent pool to create or update."
            }
        },
        "vnetSubnetId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The Vnet subnet resource ID for your existing AKS cluster."
            }
        }
    },
    "variables": {
        "apiVersion": {
            "aks": "2020-01-01"
        },
        "agentPoolProfiles": {
            "maxPods": 30,
            "osDiskSizeGB": 0,
            "agentCount": 3,
            "agentVmSize": "Standard_DS2_v2",
            "osType": "Linux",
            "vnetSubnetId": "[parameters('vnetSubnetId')]"
        }
    },
    "resources": [
        {
            "apiVersion": "2020-01-01",
            "type": "Microsoft.ContainerService/managedClusters/agentPools",
            "name": "[concat(parameters('clusterName'),'/', parameters('agentPoolName'))]",
            "location": "[parameters('location')]",
            "properties": {
                "maxPods": "[variables('agentPoolProfiles').maxPods]",
                "osDiskSizeGB": "[variables('agentPoolProfiles').osDiskSizeGB]",
                "count": "[variables('agentPoolProfiles').agentCount]",
                "vmSize": "[variables('agentPoolProfiles').agentVmSize]",
                "osType": "[variables('agentPoolProfiles').osType]",
                "storageProfile": "ManagedDisks",
                "type": "VirtualMachineScaleSets",
                "vnetSubnetID": "[variables('agentPoolProfiles').vnetSubnetId]",
                "orchestratorVersion": "1.15.7"
            }
        }
    ]
}

Aşağıdaki örnekte gösterildiği gibi az deployment group create komutunu kullanarak bu şablonu dağıtın. Mevcut AKS kümesi adı ve konumu istenir:

az deployment group create \
    --resource-group myResourceGroup \
    --template-file aks-agentpools.json

İpucu

Aşağıdaki örnekte gösterildiği gibi şablona etiket özelliğini ekleyerek düğüm havuza bir etiket ebilirsiniz.

...
"resources": [
{
  ...
  "properties": {
    ...
    "tags": {
      "name1": "val1"
    },
    ...
  }
}
...

Aks kümenizi, uygulama şablonunda tanımladığınız düğüm havuzu ayarlarına ve işlemlerine bağlı olarak güncelleştirmeniz Resource Manager sürebilir.

Düğüm havuzlarınız için düğüm başına genel IP atama

AKS düğümleri iletişim için kendi genel IP adreslerini gerektirmez. Ancak senaryolar, kendi ayrılmış genel IP adreslerini almak için bir düğüm havuzu içinde düğümlerin gerekli olabilir. Yaygın bir senaryo, atlamaları en aza indirmek için konsolun bir bulut sanal makinesine doğrudan bağlantı yapmaları gereken oyun iş yükleridir. Bu senaryo, Düğüm Genel IP'sini kullanarak AKS'de elde edilebilir.

İlk olarak yeni bir kaynak grubu oluşturun.

az group create --name myResourceGroup2 --location eastus

Yeni bir AKS kümesi oluşturun ve düğümleriniz için genel IP'yi iliştirin. Düğüm havuzunda bulunan düğümlerin her biri benzersiz bir genel IP alır. Sanal Makine Ölçek Kümesi örneklerine bakarak bunu doğrularsiniz.

az aks create -g MyResourceGroup2 -n MyManagedCluster -l eastus  --enable-node-public-ip

Mevcut AKS kümeleri için yeni bir düğüm havuzu da ekleyebilir ve düğümleriniz için genel IP iliştirebilirsiniz.

az aks nodepool add -g MyResourceGroup2 --cluster-name MyManagedCluster -n nodepool2 --enable-node-public-ip

Genel IP ön eki kullanma

Genel IP ön eki kullanmanın bir dizi faydası vardır. AKS, yeni bir küme oluştururken veya düğüm havuzu eklerken bayrağıyla kaynak kimliğini geçerek düğümleriniz için mevcut genel IP ön eklerinden node-public-ip-prefix adreslerin kullanımını destekler.

İlk olarak, az network public-ip prefix create kullanarak bir genel IP ön eki oluşturun:

az network public-ip prefix create --length 28 --location eastus --name MyPublicIPPrefix --resource-group MyResourceGroup3

Çıktıyı görüntüleme ve ön ek için id not alma:

{
  ...
  "id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix",
  ...
}

Son olarak, yeni bir küme oluştururken veya yeni bir düğüm havuzu eklerken bayrağını kullanın ve ön node-public-ip-prefix ekin kaynak kimliğini girin:

az aks create -g MyResourceGroup3 -n MyManagedCluster -l eastus --enable-node-public-ip --node-public-ip-prefix /subscriptions/<subscription-id>/resourcegroups/MyResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix

Düğümler için genel IP'leri bulma

Düğümleriniz için genel IP'leri çeşitli yollarla buabilirsiniz:

Önemli

Düğüm kaynak grubu düğümleri ve bunların genel IP'lerini içerir. Düğümlerinizin genel IP'lerini bulmak için komutları yürütürken düğüm kaynak grubunu kullanın.

az vmss list-instance-public-ips -g MC_MyResourceGroup2_MyManagedCluster_eastus -n YourVirtualMachineScaleSetName

Kaynakları temizleme

Bu makalede GPU tabanlı düğümler içeren bir AKS kümesi oluşturduk. Gereksiz maliyeti azaltmak için gpunodepool veya AKS kümesi tamamını silmek istiyor olabilir.

GPU tabanlı düğüm havuzunu silmek için aşağıdaki örnekte gösterildiği gibi az aks nodepool delete komutunu kullanın:

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name gpunodepool

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

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

Düğüm havuzları senaryosu için genel IP için oluşturduğunuz ek kümeyi de silebilirsiniz.

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

Sonraki adımlar

Sistem düğümü havuzları hakkında daha fazla bilgi.

Bu makalede AKS kümesinde birden çok düğüm havuzu oluşturma ve yönetme hakkında bilgi öğrendiniz. Düğüm havuzlarında podları denetleme hakkında daha fazla bilgi için bkz. AKS'de gelişmiş zamanlayıcı özellikleri için en iyi yöntemler.

Sunucu kapsayıcı düğümü havuzlarını Windows kullanmak için bkz. AKS'de Windows Server kapsayıcısı oluşturma.

AKS uygulamalarınızı gecikme süresini azaltmak için yakınlık yerleştirme gruplarını kullanın.