Automatické zřizování uzlů (Preview)
Při nasazování úloh do AKS musíte rozhodnout o konfiguraci fondu uzlů v souvislosti s požadovanou velikostí virtuálního počítače. S tím, jak jsou vaše úlohy složitější a vyžadují různé možnosti procesoru, paměti a funkcí, je náročné navrhnout konfiguraci virtuálního počítače pro řadu požadavků na prostředky.
Automatické zřizování uzlů (NAP) (Preview) se rozhoduje na základě požadavků na nevyřízené prostředky podu, optimální konfigurace virtuálního počítače pro spouštění těchto úloh nejefektivnějším a nákladově efektivním způsobem.
Architektura NAP je založená na projektu Open Source Karpenter a poskytovatel AKS je také Open Source. Architektura NAP automaticky nasadí a nakonfiguruje a spravuje Karpenter v clusterech AKS.
Důležité
Automatické zřizování uzlů (NAP) pro AKS je aktuálně ve verzi PREVIEW. Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
Než začnete
- Musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, můžete si vytvořit bezplatný účet.
- Potřebujete nainstalované Rozhraní příkazového řádku Azure.
aks-preview
Nainstalujte rozšíření Azure CLI. Minimální verze 0.5.170.- Zaregistrujte příznak NodeAutoProvisioningPreviewfeature.
Instalace rozšíření rozhraní příkazového aks-preview
řádku
Nainstalujte rozšíření rozhraní příkazového
aks-preview
az extension add
řádku pomocí příkazu.az extension add --name aks-preview
Pomocí příkazu aktualizujte rozšíření, abyste měli nainstalovanou
az extension update
nejnovější verzi.az extension update --name aks-preview
Registrace příznaku NodeAutoProvisioningPreview
funkce
NodeAutoProvisioningPreview
Pomocí příkazu zaregistrujte příznakaz feature register
funkce.az feature register --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Zobrazení stavu Zaregistrované trvá několik minut.
Pomocí příkazu ověřte stav
az feature show
registrace.az feature show --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí
az provider register
příkazu.az provider register --namespace Microsoft.ContainerService
Omezení
- Jedinou povolenou konfigurací sítě je překrytí Azure CNI s technologií Cilium.
- V clusteru, kde fondy uzlů mají povolené automatické škálování clusteru, nejde povolit
Nepodporované funkce
- Fondy uzlů Windows
- Použití vlastní konfigurace na kubelet uzlu
- Clustery IPv6
- Instanční objekty
Poznámka:
Můžete použít spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem.
- Sady šifrování disků
- CustomCATrustCertificates
- Spuštění režimu zastavení
- Proxy server HTTP
- OutboundType mut. Podporují se všechny typy odchozích přenosů, ale po vytvoření je nemůžete změnit.
Povolení automatického zřizování uzlů
Povolení automatického zřizování uzlů v novém clusteru
Povolte automatické zřizování uzlů v novém clusteru pomocí
az aks create
příkazu a nastavte--node-provisioning-mode
naAuto
. Musíte také nastavit--network-plugin
, naazure
overlay
--network-plugin-mode
, a--network-dataplane
na .cilium
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
Povolení automatického zřízení uzlu v existujícím clusteru
Povolte automatické zřizování uzlů v existujícím clusteru pomocí
az aks update
příkazu a nastavte--node-provisioning-mode
naAuto
. Musíte také nastavit--network-plugin
, naazure
overlay
--network-plugin-mode
, a--network-dataplane
na .cilium
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
Fondy uzlů
Automatické zřizování uzlu používá jako výchozí bod seznam skladových položek virtuálních počítačů k určení, která je nejvhodnější pro úlohy, které jsou ve stavu čekání na vyřízení. Když budete mít kontrolu nad požadovanou skladovou jednotkou v počátečním fondu, můžete určit konkrétní rodiny skladových položek nebo typy virtuálních počítačů a maximální množství prostředků, které zřizovací nástroj používá.
Pokud máte konkrétní skladové položky virtuálních počítačů, které jsou rezervované instance, můžete například chtít tyto virtuální počítače používat jenom jako výchozí fond.
V clusteru můžete mít několik definic fondu uzlů, ale AKS nasadí výchozí definici fondu uzlů, kterou můžete upravit:
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
Podporované požadavky zřizovacího modulu uzlu
Selektory skladových položek s dobře známými popisky
Výběr | Popis | Příklad |
---|---|---|
karpenter.azure.com/sku-family | Řada skladových položek virtuálního počítače | D, F, L atd. |
karpenter.azure.com/sku-name | Explicitní název skladové položky | Standard_A1_v2 |
karpenter.azure.com/sku-version | Verze skladové položky (bez "v", může použít 1) | 1 , 2 |
karpenter.sh/capacity-type | Typ přidělování virtuálních počítačů (spotový/ na vyžádání) | spot nebo on-demand |
karpenter.azure.com/sku-cpu | Počet procesorů ve virtuálním počítači | 16 |
karpenter.azure.com/sku-memory | Paměť ve virtuálním počítači v MiB | 131072 |
karpenter.azure.com/sku-gpu-name | Název GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer | Výrobce GPU | nvidia |
karpenter.azure.com/sku-gpu-count | Počet GPU na virtuální počítač | 2 |
karpenter.azure.com/sku-networking-accelerated | Jestli má virtuální počítač akcelerované síťové služby | [pravda, nepravda] |
karpenter.azure.com/sku-storage-premium-capable | Jestli virtuální počítač podporuje Úložiště vstupně-výstupních operací úrovně Premium | [pravda, nepravda] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize | Omezení velikosti dočasného disku s operačním systémem v Gb | 92 |
topology.kubernetes.io/zone | Zóny dostupnosti | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os | Operační systém (pouze v Linuxu ve verzi Preview) | Linux |
kubernetes.io/arch | Architektura procesoru (AMD64 nebo ARM64) | [amd64, arm64] |
Pokud chcete vypsat možnosti skladové položky virtuálního počítače a povolené hodnoty, použijte vm list-skus
příkaz z Azure CLI.
az vm list-skus --resource-type virtualMachines --location <location> --query '[].name' --output table
Omezení fondu uzlů
Architektura NAP se ve výchozím nastavení pokusí naplánovat úlohy v rámci kvóty Azure, kterou máte k dispozici. Můžete také určit horní limit prostředků, které fond uzlů používá, a určit limity v rámci specifikace fondu uzlů.
# 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
Váhy fondu uzlů
Pokud máte definovaných více fondů uzlů, je možné nastavit předvolbu, kde má být úloha naplánována. Definujte relativní váhu definic fondu uzlů.
# 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
Aktualizace imagí Kubernetes a uzlů
AKS s architekturou NAP spravuje upgrady verzí Kubernetes a aktualizace disků operačního systému virtuálního počítače za vás ve výchozím nastavení.
Upgrady Kubernetes
Upgrady Kubernetes pro fondy uzlů NAP se řídí verzí Kubernetes řídicí roviny. Pokud provedete upgrade clusteru, uzly NAP se aktualizují automaticky, aby dodržovaly stejnou správu verzí.
Aktualizace imagí uzlu
Ve výchozím nastavení se virtuální počítače fondu uzlů NAP automaticky aktualizují, když je k dispozici nová image. Pokud chcete připnout fond uzlů v určité verzi image uzlu, můžete nastavit imageVersion ve třídě node:
kubectl edit aksnodeclass default
V definici třídy uzlu nastavte imageVersion na jednu z publikovaných verzí uvedených v poznámkách k verzi AKS. Dostupnost imagí v oblastech můžete zobrazit také pomocí sledování verzí AKS.
ImageVersion je datová část image uzlu, protože se podporuje jenom Ubuntu 22.04, například "AKSUbuntu-2204-202311.07.0" by byl "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
Odebrání specifikace imageVersion by vrátilo fond uzlů, aby se aktualizoval na nejnovější verzi image uzlu.
Přerušení uzlu
Při vertikálním snížení kapacity úloh na uzlech používá architektura NAP pravidla přerušení ve specifikaci fondu uzlů k rozhodnutí, kdy a jak tyto uzly odebrat, a potenciálně přeplánovat úlohy tak, aby byly efektivnější.
Uzel můžete odebrat ručně pomocí kubectl delete node
, ale NAP může také řídit, kdy má optimalizovat uzly.
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
Monitorování událostí výběru
Automatické zřizování uzlu vytváří události clusteru, které je možné použít k monitorování rozhodnutí o nasazení a plánování. Události můžete zobrazit prostřednictvím streamu událostí Kubernetes.
kubectl get events -A --field-selector source=karpenter -w
Azure Kubernetes Service