Düğüm otomatik sağlama (önizleme)

AKS'ye iş yükleri dağıttığınızda, düğüm havuzu yapılandırması hakkında gereken VM boyutuyla ilgili bir karar vermeniz gerekir. İş yükleriniz daha karmaşık hale geldikçe ve farklı CPU, bellek ve özelliklerin çalıştırılmasını gerektirdiğinden, VM yapılandırmanızı çok sayıda kaynak isteği için tasarlamanız gereken ek yük zorlaşır.

Düğüm otomatik sağlama (NAP) (önizleme), bekleyen pod kaynağı gereksinimlerine göre bu iş yüklerini en verimli ve uygun maliyetli şekilde çalıştırmak için en uygun VM yapılandırmasına karar verir.

NAP, Açık Kaynak Karpenter projesini temel alır ve AKS sağlayıcısı da Açık Kaynak'tır. NAP, AKS kümelerinizde Karpenter'ı otomatik olarak dağıtır ve yapılandırıp yönetir.

Önemli

AKS için düğüm otomatik sağlama (NAP) şu anda ÖNİzLEME aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Başlamadan önce

CLI uzantısını aks-preview yükleme

  1. aks-preview komutunu kullanarak CLI uzantısını az extension add yükleyin.

    az extension add --name aks-preview
    
  2. komutunu kullanarak en son sürümü yüklediğinizden emin olmak için uzantıyı güncelleştirin az extension update .

    az extension update --name aks-preview
    

Özellik bayrağını NodeAutoProvisioningPreview kaydetme

  1. NodeAutoProvisioningPreview komutunu kullanarak özellik bayrağını az feature register kaydedin.

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

    Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.

  2. komutunu kullanarak az feature show kayıt durumunu doğrulayın.

    az feature show --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
    
  3. Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyinaz provider register.

    az provider register --namespace Microsoft.ContainerService
    

Sınırlamalar

Desteklenmeyen özellikler

  • Windows düğüm havuzları
  • Düğüm kubelet'ine özel yapılandırma uygulama
  • IPv6 kümeleri
  • Hizmet Sorumluları

    Not

    Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği kullanabilirsiniz.

  • Disk şifreleme kümeleri
  • CustomCATrustCertificates
  • Durdurma modunu başlatma
  • HTTP proxy'si
  • OutboundType mutasyonu. Tüm OutboundType'lar desteklenir, ancak oluşturma işleminden sonra bunları değiştiremezsiniz.

Düğüm otomatik sağlamayı etkinleştirme

Yeni bir kümede düğüm otomatik sağlamayı etkinleştirme

  • komutunu kullanarak yeni bir kümede düğüm otomatik sağlamayı az aks create etkinleştirin ve olarak Autoayarlayın--node-provisioning-mode. öğesini olarak da ayarlamanız --network-plugin ciliumazure--network-plugin-mode overlay--network-dataplane gerekir.

    az aks create \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --node-provisioning-mode Auto \
        --network-plugin azure \
        --network-plugin-mode overlay \
        --network-dataplane cilium \
        --generate-ssh-keys
    

Mevcut bir kümede düğüm otomatik sağlamayı etkinleştirme

  • komutunu kullanarak mevcut bir kümede düğüm otomatik sağlamayı az aks update etkinleştirin ve olarak Autoayarlayın--node-provisioning-mode. öğesini olarak da ayarlamanız --network-plugin ciliumazure--network-plugin-mode overlay--network-dataplane gerekir.

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --node-provisioning-mode Auto --network-plugin azure --network-plugin-mode overlay --network-dataplane cilium
    

Düğüm havuzları

Düğüm otomatik sağlama, bekleme durumundaki iş yükleri için en uygun olan iş yüklerine karar vermek için başlangıç noktası olarak VM SKU'larının listesini kullanır. İlk havuzda istediğiniz SKU üzerinde denetim sahibi olmak, belirli SKU ailelerini veya VM türlerini ve bir sağlamanın kullandığı maksimum kaynak miktarını belirtmenize olanak tanır.

Örneğin ayrılmış örnek olan belirli VM SKU'larınız varsa, bu VM'leri yalnızca başlangıç havuzu olarak kullanmak isteyebilirsiniz.

Bir kümede birden çok düğüm havuzu tanımınız olabilir, ancak AKS değiştirebileceğiniz bir varsayılan düğüm havuzu tanımı dağıtır:

apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: default
spec:
  disruption:
    consolidationPolicy: WhenUnderutilized
    expireAfter: Never
  template:
    spec:
      nodeClassRef:
        name: default

      # 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

Desteklenen düğüm sağlama gereksinimleri

İyi bilinen etiketlere sahip SKU seçicileri

Seçici Açıklama Örnek
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ı) spot veya isteğe bağlı
karpenter.azure.com/sku-cpu VM'deki CPU sayısı 16
karpenter.azure.com/sku-memory MiB'de VM'de bellek 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ığı [true, false]
karpenter.azure.com/sku-storage-premium-capable VM'nin Premium GÇ depolamayı destekleyip desteklemediği [true, false]
karpenter.azure.com/sku-storage-ephemeralos-maxsize Kısa ömürlü işletim sistemi diskinin Gb cinsinden boyut sınırı 92
topology.kubernetes.io/zone Kullanılabilirlik Alanları [uksouth-1,uksouth-2,uksouth-3]
kubernetes.io/os İşletim Sistemi (Yalnızca önizleme sırasında Linux) linux
kubernetes.io/arch CPU mimarisi (AMD64 veya ARM64) [amd64, arm64]

VM SKU özelliklerini ve izin verilen değerleri listelemek için Azure CLI'dan komutunu kullanın vm list-skus .

az vm list-skus --resource-type virtualMachines --location <location> --query '[].name' --output table

Düğüm havuzu sınırları

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

  # Resource limits constrain the total size of the cluster.
  # Limits prevent Karpenter 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, bir iş yükünün zamanlanması gereken yeri tercih edebilirsiniz. Node havuzu tanımlarınızda göreli ağırlığı tanımlayın.

  # 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

Kubernetes ve düğüm görüntüsü güncelleştirmeleri

NAP ile AKS, Kubernetes sürüm yükseltmelerini ve VM işletim sistemi disk güncelleştirmelerini sizin için varsayılan olarak yönetir.

Kubernetes yükseltmeleri

NAP düğüm havuzları için Kubernetes yükseltmeleri, Denetim Düzlemi Kubernetes sürümünü izler. Küme yükseltmesi gerçekleştirirseniz NAP düğümleriniz otomatik olarak aynı sürüm oluşturmayı izleyecek şekilde güncelleştirilir.

Düğüm görüntüsü güncelleştirmeleri

Varsayılan olarak, yeni bir görüntü kullanılabilir olduğunda NAP düğümü havuzu sanal makineleri otomatik olarak güncelleştirilir. Düğüm havuzunu belirli bir düğüm görüntüsü sürümüne sabitlemek istiyorsanız, node sınıfında imageVersion değerini ayarlayabilirsiniz:

kubectl edit aksnodeclass default

Düğüm sınıfı tanımında imageVersion değerini AKS Sürüm notlarında listelenen yayımlanmış sürümlerden birine ayarlayın. AKS yayın izleyicisine başvurarak bölgelerdeki görüntülerin kullanılabilirliğini de görebilirsiniz

Yalnızca Ubuntu 22.04 desteklendiğinden imageVersion Düğüm Görüntüsündeki tarih bölümüdür; örneğin, "AKSUbuntu-2204-202311.07.0" "202311.07.0" olabilir

apiVersion: karpenter.azure.com/v1alpha2
kind: AKSNodeClass
metadata:
  annotations:
    kubernetes.io/description: General purpose AKSNodeClass for running Ubuntu2204
      nodes
    meta.helm.sh/release-name: aks-managed-karpenter-overlay
    meta.helm.sh/release-namespace: kube-system
  creationTimestamp: "2023-11-16T23:59:06Z"
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
    helm.toolkit.fluxcd.io/name: karpenter-overlay-main-adapter-helmrelease
    helm.toolkit.fluxcd.io/namespace: 6556abcb92c4ce0001202e78
  name: default
  resourceVersion: "1792"
  uid: 929a5b07-558f-4649-b78b-eb25e9b97076
spec:
  imageFamily: Ubuntu2204
  imageVersion: 202311.07.0
  osDiskSizeGB: 128

imageVersion belirtiminin kaldırılması düğüm havuzunu en son düğüm görüntüsü sürümüne güncelleştirilecek şekilde geri döndürecektir.

Düğüm kesintisi

Düğümlerinizdeki iş yükleri ölçeği azaltıldığında NAP, Düğüm havuzu belirtiminde kesinti kurallarını kullanarak bu düğümlerin ne zaman ve nasıl kaldırılacağına karar verir ve iş yüklerinizi daha verimli olacak şekilde yeniden zamanlayabilir.

kullanarak kubectl delete nodebir düğümü el ile kaldırabilirsiniz, ancak NAP düğümlerinizi ne zaman iyileştirmesi gerektiğini de denetleyebilir.

  disruption:
    # Describes which types of Nodes NAP should consider for consolidation
    consolidationPolicy: WhenUnderutilized | WhenEmpty
    # 'WhenUnderutilized', NAP will consider all nodes for consolidation and attempt to remove or replace Nodes when it discovers that the Node is underutilized and could be changed to reduce cost

    #  `WhenEmpty`, NAP will only consider nodes for consolidation that contain no workload pods
    
    # The amount of time NAP should wait after discovering a consolidation decision
    # This value can currently only be set when the consolidationPolicy is 'WhenEmpty'
    # You can choose to disable consolidation entirely by setting the string value 'Never'
    consolidateAfter: 30s

Seçim olaylarını izleme

Düğüm otomatik sağlama, alınan dağıtım ve zamanlama kararlarını izlemek için kullanılabilecek küme olayları oluşturur. Kubernetes olay akışı aracılığıyla olayları görüntüleyebilirsiniz.

kubectl get events -A --field-selector source=karpenter -w