Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) düğüm otomatik sağlama (NAP) için düğüm havuzlarını yapılandırma

Bu makalede SKU seçicileri, kaynak sınırları ve öncelik ağırlıkları dahil olmak üzere Azure Kubernetes Service'te (AKS) düğüm otomatik sağlama (NAP) için düğüm havuzlarının nasıl yapılandırılması açıklanır. Ayrıca, başlamanıza yardımcı olacak örnekler de sağlar.

NAP'de düğüm havuzlarına genel bakış

NAP, bekleyen iş yükleri için en iyi VM'lere karar vermek için sanal makine (VM) SKU gereksinimlerini kullanır. Yapılandırabilirsiniz:

  • SKU aileleri ve belirli örnek türleri.
  • Kaynak sınırları ve öncelikleri.
  • Spot veya İsteğe Bağlı örnekler.
  • Mimari ve yetenek gereksinimleri.

Kaynak, NAP tarafından NodePool oluşturulan düğümler ve bu düğümlerde çalışan podlar üzerinde kısıtlamalar belirler. NAP'yi ilk yüklediğinizde, varsayılan NodePool bir nesne oluşturur. Bu düğüm havuzunu değiştirebilir veya iş yükü gereksinimlerinize uygun ek düğüm havuzları oluşturabilirsiniz.

NAP'te NodePools'nin ana davranışları

NAP için yapılandırırken NodePools aşağıdaki davranışları aklınızda bulundurun:

  • NAP işlevinin çalışması için en az bir tane NodePool gerekir.
  • NAP, yapılandırılan NodePoolher öğesini değerlendirir.
  • NAP, bir pod tarafından tolere edilmeyen taintlere sahip NodePools'i atlar.
  • NAP, sağlanan düğümlere başlangıç taintleri uygular, ancak pod toleransı gerektirmez.
  • NAP, birbirini dışlayan NodePools ile en iyi şekilde çalışır. Birden çok NodePools eşleşme olduğunda, en yüksek ağırlığa sahip olanı kullanır.

Varsayılan düğüm havuzu yapılandırmasını gözden geçirme

NAP tarafından oluşturulan varsayılan NodePool yapılandırması aşağıdaki gibidir:

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: default
spec:
  disruption:
    consolidationPolicy: WhenEmptyOrUnderutilized
  template:
    spec:
      nodeClassRef:
        name: default
      expireAfter: Never
      # Requirements that constrain the parameters of provisioned nodes.
      # These requirements are combined with pod.spec.affinity.nodeAffinity rules.
      # Operators { In, NotIn, Exists, DoesNotExist, Gt, and Lt } are supported.
      # https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
      requirements:
      - key: kubernetes.io/arch
        operator: In
        values:
        - amd64
      - key: kubernetes.io/os
        operator: In
        values:
        - linux
      - key: karpenter.sh/capacity-type
        operator: In
        values:
        - on-demand
      - key: karpenter.azure.com/sku-family
        operator: In
        values:
        - D

Ayrıca sistem havuzu düğümlerini otomatik ölçeklendirmeye yardımcı olan bir system-surge düğüm havuzu oluşturur.

Küme oluşturma sırasında varsayılan düğüm havuzunun yapılandırmasını denetleme

Azure CLI kullanarak NAP ile etkinleştirilmiş yeni bir AKS kümesi oluşturduğunuzda, varsayılan NAP'nin --node-provisioning-default-poolsyapılandırmasını denetlemek için bayrağını ekleyebilirsinizNodePool.

bayrağı varsayılan --node-provisioning-default-pools NAP NodePool yapılandırmasını denetler ve aşağıdaki değerleri kabul eder:

  • Auto (varsayılan): Hemen kullanmak için iki standart NodePools oluşturur.
  • None: herhangi bir NodePoolsoluşturmaz. Kendi tanımınızı yapmanız gerekir.

Uyarı

Auto'dan None'ye değişiklik: Ayarı mevcut bir kümede Auto'den None'e değiştirirseniz, varsayılan NodePools otomatik olarak silinmez. Artık ihtiyacınız yoksa bunları el ile silmeniz gerekir.

Yapılandırma seçenekleri düğüm havuzu

Aşağıdaki bölümlerde NAP için, iyi bilinen etiketler ve SKU seçiciler, düğüm havuzu sınırları, ve düğüm havuzu ağırlıkları gibi çeşitli yapılandırma seçenekleri özetlenmiştir.

İyi bilinen etiketler ve SKU seçicileri

Kubernetes, Azure'ın uyguladığı iyi bilinen etiketleri tanımlar. Bu etiketleri API'nin spec.requirementsNodePool bölümünde tanımlayabilirsiniz. NAP, daha gelişmiş zamanlama için Azure'a özgü etiketleri de destekler.

karpenter.azure.com SKU seçicileri

Aşağıdaki tabloda, düğümleriniz için VM özelliklerini tanımlamak üzere API'nizin karpenter.azure.comspec.requirements bölümünde kullanabileceğiniz SKU seçicileri listelenirNodePool:

Selector Description Example
karpenter.azure.com/sku-family VM SKU ailesi D, F, L vb.
karpenter.azure.com/sku-name Açık SKU adı Standard_A1_v2
karpenter.azure.com/sku-version SKU sürümü ("v" olmadan 1 kullanabilir) 1, 2
karpenter.sh/capacity-type VM ayırma türü (Spot / İsteğe bağlı) Leke
karpenter.azure.com/sku-cpu VM'deki CPU sayısı 16
karpenter.azure.com/sku-memory VM bellek miktarı (MiB olarak) 131072
kubernetes.azure.com/sku-cpu VM'deki CPU sayısı 16
kubernetes.azure.com/sku-memory VM bellek miktarı (MiB olarak) 131072
karpenter.azure.com/sku-gpu-name GPU adı A100
karpenter.azure.com/sku-gpu-manufacturer GPU üreticisi nvidia
karpenter.azure.com/sku-gpu-count VM başına GPU sayısı 2
karpenter.azure.com/sku-networking-accelerated VM'nin ağı hızlandırıp hızlandırmadığı [doğru, yanlış]
karpenter.azure.com/sku-storage-premium-capable VM'nin Premium IO depolamayı destekleyip desteklemediği [doğru, yanlış]
karpenter.azure.com/sku-storage-ephemeralos-maxsize Kısa ömürlü işletim sistemi (OS) diskinin Gb cinsinden boyut sınırı 92

kubernetes.io iyi bilinen etiketler

Aşağıdaki tabloda, düğümlerinizin düğüm özelliklerini tanımlamak için API'nizin kubernetes.iospec.requirements bölümünde kullanabileceğiniz iyi bilinen etiketler listelenirNodePool:

Etiket Description Example
topology.kubernetes.io/zone Kullanılabilirlik alanları [uksouth-1,uksouth-2,uksouth-3]
kubernetes.io/os İşletim sistemi Linux işletim sistemi
kubernetes.io/arch CPU mimarisi (AMD64 veya ARM64) [amd64, arm64]

SKU ailesi örnekleri

Seçici, karpenter.azure.com/sku-family belirli VM ailelerini hedeflemenizi sağlar.

Aile Description
D Serisi Dengeli CPU-bellek oranına sahip genel amaçlı VM'ler
F serisi Yüksek CPU-bellek oranına sahip hesaplama için optimize edilmiş sanal makineler
E serisi Bellek yoğun uygulamalar için optimize edilmiş sanal makineler
L serisi Yüksek disk aktarım hızına sahip depolama için iyileştirilmiş VM'ler
N serisi yoğun işlem gücü kullanan iş yükleri için GPU özellikli VM'ler

SKU ailesi kullanılarak örnek yapılandırma:

requirements:
- key: karpenter.azure.com/sku-family
  operator: In
  values:
  - D
  - F

SKU adı örnekleri

Seçici, karpenter.azure.com/sku-name tam VM örneği türünü belirtmenize olanak tanır.

requirements:
- key: karpenter.azure.com/sku-name
  operator: In
  values:
  - Standard_D4s_v3
  - Standard_F8s_v2

SKU sürümü örnekleri

Seçici, karpenter.azure.com/sku-version VM SKU'larının belirli nesillerini hedefler.

requirements:
- key: karpenter.azure.com/sku-version
  operator: In
  values:
  - "3"  # v3 generation
  - "5"  # v5 generation

Kullanılabilirlik alanı örneği

Seçici, topology.kubernetes.io/zone düğümleriniz için kullanılabilirlik alanlarını belirtmenize olanak tanır.

requirements:
- key: topology.kubernetes.io/zone
  operator: In
  values:
  - eastus-1
  - eastus-2

Uyarı

Azure CLI komutunu kullanarak az account list-locations --output table bölgeniz için kullanılabilir bölgeleri bulabilirsiniz.

Mimari örneği

Seçici, kubernetes.io/arch düğümleriniz için CPU mimarisini belirtmenize olanak tanır. NAP hem amd64 hem de arm64 düğümlerini destekler.

requirements:
- key: kubernetes.io/arch
  operator: In
  values:
  - amd64
  - arm64

İşletim sistemi örneği

Seçici, kubernetes.io/os düğümleriniz için işletim sistemini belirtmenize olanak tanır.

requirements:
- key: kubernetes.io/os
  operator: In
  values:
  - linux

Kapasite türü örneği

Seçici, karpenter.sh/capacity-type Spot veya İsteğe Bağlı örneklerin kullanılıp kullanılmayacağını belirtmenize olanak tanır.

Uyarı

NAP, hem Spot hem de İsteğe Bağlı belirtildiğinde Spot örneklere öncelik tanır.

requirements:
- key: karpenter.sh/capacity-type
  operator: In
  values:
  - spot
  - on-demand

Düğüm havuzu limitleri

Varsayılan olarak NAP, kullanılabilir Azure kotası içinde iş yüklerinizi zamanlamayı dener. Düğüm havuzu belirtimi içinde sınırlar belirterek düğüm havuzunun kullandığı kaynakların üst sınırını da belirtebilirsiniz. Mesela:

spec:
  # Resource limits constrain the total size of the cluster.
  # Limits prevent Node Auto Provisioning from creating new instances once the limit is exceeded.
  limits:
    cpu: "1000"
    memory: 1000Gi

Düğüm havuzu ağırlıkları

Birden çok düğüm havuzu tanımladığınızda, düğüm havuzu tanımlarınızdaki göreli ağırlığı tanımlayarak bir iş yükünün zamanlanması gereken yeri tercih edebilirsiniz. Örneğin:

spec:
  # Priority given to the node pool when the scheduler considers which to select. 
  # Higher weights indicate higher priority when comparing node pools.
  # Specifying no weight is equivalent to specifying a weight of 0.
  weight: 10

Sonraki Adımlar

AKS'de düğüm otomatik sağlama hakkında daha fazla bilgi için aşağıdaki makalelere bakın: