Csomópont automatikus üzembe helyezése (előzetes verzió)

Amikor számítási feladatokat helyez üzembe az AKS-ben, döntést kell hoznia a csomópontkészlet konfigurálásáról a szükséges virtuálisgép-méret tekintetében. Mivel a számítási feladatok összetettebbé válnak, és eltérő processzor-, memória- és képességeket igényelnek a futtatáshoz, a virtuálisgép-konfiguráció számos erőforrás-kéréshez való tervezésének többlettere nehézkessé válik.

A csomópontok automatikus kiépítése (NAP) (előzetes verzió) a függőben lévő poderőforrás-követelmények alapján dönti el, hogy az optimális virtuálisgép-konfiguráció a leghatékonyabb és legköltséghatékonyabb módon futtassa ezeket a számítási feladatokat.

A NAP a Nyílt forráskódú Karpenter-projekten alapul, és az AKS-szolgáltató is nyílt forráskódú. A NAP automatikusan telepíti és konfigurálja és kezeli a Karpentert az AKS-fürtökön.

Fontos

Az AKS-hez készült csomópontok automatikus leépítése (NAP) jelenleg előzetes verzióban érhető el. A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Mielőtt elkezdené

A PARANCSSOR-bővítmény aks-preview telepítése

  1. Telepítse a aks-preview PARANCSSOR-bővítményt a az extension add paranccsal.

    az extension add --name aks-preview
    
  2. Frissítse a bővítményt, hogy biztosan a legújabb verzió legyen telepítve a az extension update parancs használatával.

    az extension update --name aks-preview
    

A funkciójelző regisztrálása NodeAutoProvisioningPreview

  1. Regisztrálja a NodeAutoProvisioningPreview funkciójelzőt a az feature register paranccsal.

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

    Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.

  2. Ellenőrizze a regisztrációs állapotot a az feature show paranccsal.

    az feature show --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
    
  3. Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a az provider register paranccsal.

    az provider register --namespace Microsoft.ContainerService
    

Korlátozások

  • Az egyetlen engedélyezett hálózati konfiguráció a Cilium + Overlay + Azure
  • Nem engedélyezhető olyan fürt, amelyben a csomópontkészletek engedélyezve vannak a fürt automatikus skálázása

Nem támogatott szolgáltatások:

  • Windows-csomópontkészletek
  • Egyéni konfiguráció alkalmazása a csomóponti kubeletre
  • IPv6-fürtök
  • Szolgáltatásnevek

    Feljegyzés

    Használhat rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitást is.

  • Lemeztitkosítási csoportok
  • CustomCATrustCertificates
  • Leállítási mód indítása
  • HTTP-proxy
  • OutboundType mutáció. Minden Kimenő típus támogatott, de a létrehozás után nem módosíthatja őket.

Csomópontok automatikus üzembe helyezésének engedélyezése

A csomópontok automatikus kiépítésének engedélyezéséhez hozzon létre egy új fürtöt az az aks create paranccsal, és állítsa a --node-provisioning-módot "Auto" értékre. Emellett átfedő hálózatkezelést és a cilium hálózati házirendet is használnia kell.

az aks create --name karpuktest --resource-group karpuk --node-provisioning-mode Auto --network-plugin azure --network-plugin-mode overlay --network-dataplane cilium

Csomópontkészletek

A csomópont automatikus létrehozása kiindulópontként a virtuálisgép-termékváltozatok listáját használja annak eldöntéséhez, hogy melyik a legalkalmasabb a függő állapotban lévő számítási feladatokhoz. Ha szabályozni szeretné, hogy a kezdeti készletben milyen termékváltozatot szeretne használni, meghatározott termékváltozatcsaládokat vagy virtuálisgép-típusokat és a kiépítési szolgáltató által használt erőforrások maximális mennyiségét határozhatja meg.

Ha bizonyos fenntartott virtuálisgép-termékváltozatokkal rendelkezik, például ezeket a virtuális gépeket használhatja kezdőkészletként.

Egy fürtben több csomópontkészlet-definíció is lehet, de az AKS üzembe helyez egy alapértelmezett csomópontkészlet-definíciót, amelyet módosíthat:

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

Támogatott csomópontkiépítési követelmények

Termékváltozat-választók jól ismert címkékkel

Szelektor Leírás Példa
karpenter.azure.com/sku-family Virtuálisgép-termékváltozat családja D, F, L stb.
karpenter.azure.com/sku-name Explicit termékváltozat neve Standard_A1_v2
karpenter.azure.com/sku-version Termékváltozat verziója (v nélkül, 1 használható) 1 , 2
karpenter.sh/capacity-type Virtuálisgép-foglalás típusa (Kihasználatlan / Igény szerinti) helyszíni vagy igény szerinti
karpenter.azure.com/sku-cpu Processzorok száma a virtuális gépen 16
karpenter.azure.com/sku-memory Memória a MiB virtuális gépében 131 072
karpenter.azure.com/sku-gpu-name GPU neve A100
karpenter.azure.com/sku-gpu-manufacturer GPU-gyártó nvidia
karpenter.azure.com/sku-gpu-count GPU-k száma virtuális gépenként 2
karpenter.azure.com/sku-networking-accelerated Azt jelzi, hogy a virtuális gép felgyorsította-e a hálózatkezelést [igaz, hamis]
karpenter.azure.com/sku-storage-premium-capable Az, hogy a virtuális gép támogatja-e a Prémium IO-tárolót [igaz, hamis]
karpenter.azure.com/sku-storage-ephemeralos-maxsize A rövid élettartamú operációsrendszer-lemez méretkorlátja Gb-ban 92
topology.kubernetes.io/zone A rendelkezésre állási zóna(ok) [uksouth-1,uksouth-2,uksouth-3]
kubernetes.io/os Operációs rendszer (Linux csak előzetes verzióban) linux
kubernetes.io/arch CPU-architektúra (AMD64 vagy ARM64) [amd64, arm64]

A virtuálisgép-termékváltozat képességeinek és az engedélyezett értékeknek a listázásához használja az vm list-skus Azure CLI parancsát.

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

Csomópontkészlet korlátai

Alapértelmezés szerint a NAP megkísérli ütemezni a számítási feladatokat az Elérhető Azure-kvótán belül. Megadhatja a csomópontkészlet által használt erőforrások felső korlátját is, a csomópontkészlet specifikációjának korlátait megadva.

  # 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

Csomópontkészlet súlyozása

Ha több csomópontkészlet van definiálva, beállíthatja, hogy hol legyen ütemezve a számítási feladat. Adja meg a csomópontkészlet definícióinak relatív súlyát.

  # 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- és csomópontrendszerkép-frissítések

Az AKS és a NAP alapértelmezés szerint kezeli a Kubernetes-verziófrissítéseket és a virtuálisgép-operációs rendszer lemezfrissítéseit.

Kubernetes-frissítések

A NAP-csomópontkészletek Kubernetes-frissítései a Control Plane Kubernetes verzióját követik. Ha fürtfrissítést hajt végre, a NAP-csomópontok automatikusan frissülnek, hogy ugyanazt a verziószámozást kövessék.

Csomópont képfrissítései

Alapértelmezés szerint a NAP-csomópontkészlet virtuális gépei automatikusan frissülnek, ha új rendszerkép érhető el. Ha egy csomópontkészletet egy adott csomópontrendszerkép-verzióban szeretne rögzíteni, beállíthatja az imageVersion értéket a csomópontosztályon:

kubectl edit aksnodeclass default

A csomópontosztály definícióján belül állítsa az imageVersion elemet az AKS kibocsátási megjegyzéseiben felsorolt közzétett kiadások egyikére. Az AKS kiadáskövetésére hivatkozva a régiók lemezképeinek rendelkezésre állását is láthatja

Az imageVersion a csomópont lemezképének dátum része, mivel csak az Ubuntu 22.04 támogatott, például "AKSUbuntu-2204-202311.07.0" "202311.07.0"

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

Az imageVersion-specifikáció eltávolítása visszaállítja a csomópontkészletet a legújabb csomópontrendszerkép-verzióra való frissítéshez.

Csomópontok megszakadása

Amikor a csomópontok számítási feladatai leskálázhatók, a NAP a csomópontkészlet specifikációjának megszakítási szabályaival dönti el, hogy mikor és hogyan távolíthatja el ezeket a csomópontokat, és esetleg átütemezheti a számítási feladatokat a hatékonyabb működés érdekében.

A csomópontokat manuálisan kubectl delete nodeis eltávolíthatja, de a NAP azt is szabályozhatja, hogy mikor érdemes optimalizálni a csomópontokat.

  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

Kiválasztási események figyelése

A csomópont automatikus kiépítése fürteseményeket hoz létre, amelyek az üzembe helyezési és ütemezési döntések figyelésére használhatók. Az eseményeket a Kubernetes eseményfolyamán keresztül tekintheti meg.

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