Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Lorsque vous déployez des charges de travail sur AKS, vous devez prendre une décision concernant la taille de machine virtuelle nécessaire à la configuration du pool de nœuds. À mesure que vos charges de travail se complexifient davantage et nécessitent différents processeurs, mémoire et fonctionnalités à exécuter, la surcharge liée à la conception de la configuration de votre machine virtuelle pour de nombreuses demandes de ressources devient difficile.
Le provisionnement automatique du nœud (NAP) (préversion) décide en fonction des besoins en ressources du pod en attente, de la configuration optimale de la machine virtuelle pour exécuter ces charges de travail de la manière la plus efficace et la plus économique.
NAP est basé sur le projet Open Source Karpenter et lefournisseur AKS est également Open Source. NAP déploie, configure et gère automatiquement Karpenter sur vos clusters AKS.
Important
Le provisionnement automatique du nœud (NAP) pour AKS est actuellement en PRÉVERSION. Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.
aks-preview
. Version minimale 0.5.170.Installez l’extension CLI aks-preview
à l’aide de la commande az extension add
.
az extension add --name aks-preview
Mettez à jour l’extension pour vous assurer que la dernière version est installée à l’aide de la commande az extension update
.
az extension update --name aks-preview
Inscrivez l’indicateur de fonctionnalité NodeAutoProvisioningPreview
à l’aide de la commande az feature register
.
az feature register --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit).
Vérifiez l’état de l’inscription en utilisant la commande az feature show
.
az feature show --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Quand l’état reflète Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande az provider register
.
az provider register --namespace Microsoft.ContainerService
Notes
Vous pouvez utiliser une identité managée affectée par le système ou affectée par l’utilisateur.
Activez l’approvisionnement automatique des nœuds sur un nouveau cluster à l’aide de la commande az aks create
et définissez --node-provisioning-mode
sur Auto
. Vous devez également définir le --network-plugin
sur azure
, --network-plugin-mode
sur overlay
et --network-dataplane
sur 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
Activez l’approvisionnement automatique des nœuds sur un cluster existant à l’aide de la commande az aks update
et définissez --node-provisioning-mode
sur Auto
. Vous devez également définir le --network-plugin
sur azure
, --network-plugin-mode
sur overlay
et --network-dataplane
sur 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
Le provisionnement automatique du nœud utilise une liste de références SKU de la machine virtuelle comme point de départ pour décider de celle qui convient le mieux aux charges de travail en état en attente. Avoir du contrôle sur la référence SKU souhaitée dans le pool initial vous permet de spécifier des familles de références SKU spécifiques, ou des types de machines virtuelles et la quantité maximale de ressources utilisées par un provisionneur.
Si vous avez des références SKU spécifiques de machine virtuelle qui sont des instances réservées, par exemple, vous pouvez souhaiter seulement utiliser ces machines virtuelles comme pool de démarrage.
Vous pouvez disposer de plusieurs définitions de pool de nœuds dans un cluster, mais AKS déploie une définition de pool de nœuds par défaut que vous pouvez modifier :
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
Sélecteur | Description | Exemple |
---|---|---|
karpenter.azure.com/sku-family | Famille de références de la machine virtuelle | D, F, L, etc. |
karpenter.azure.com/sku-name | Nom explicite de la référence SKU | Standard_A1_v2 |
karpenter.azure.com/sku-version | Version de la référence SKU (sans « v », peut utiliser 1) | 1, 2 |
karpenter.sh/capacity-type | Type d’allocation de machine virtuelle (spot / à la demande) | spot ou à la demande |
karpenter.azure.com/sku-cpu | Nombre de processeurs dans une machine virtuelle | 16 |
karpenter.azure.com/sku-memory | Mémoire dans la machine virtuelle en Mio | 131072 |
karpenter.azure.com/sku-gpu-name | Nom du GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer | Fabricant du GPU | nvidia |
karpenter.azure.com/sku-gpu-count | Nombre de GPU par machine virtuelle | 2 |
karpenter.azure.com/sku-networking-accelerated | Si la machine virtuelle a des performances réseau accélérées | [vrai, faux] |
karpenter.azure.com/sku-storage-premium-capable | Si la machine virtuelle prend en charge le stockage d’E/S Premium | [vrai, faux] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize | Limite de la taille du disque de système d’exploitation éphémère en Go | 92 |
topology.kubernetes.io/zone | La ou les zones de disponibilité | [RoyaumeUniSud-1, RoyaumeUniSud-2, RoyaumeUniSud-3] |
kubernetes.io/os | Système d’exploitation (Linux uniquement pendant la préversion) | linux |
kubernetes.io/arch | Architecture du processeur (AMD64 ou ARM64) | [amd64, arm64] |
Pour répertorier les fonctionnalités de la référence SKU de la machine virtuelle et les valeurs autorisées, utilisez la commande vm list-skus
à partir d’Azure CLI.
az vm list-skus --resource-type virtualMachines --location <location> --query '[].name' --output table
Par défaut, NAP tente de planifier vos charges de travail dans le quota Azure disponible. Vous pouvez également spécifier la limite supérieure des ressources utilisées par un pool de nœuds, en indiquant des limites dans les spécifications du pool de nœuds.
# 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
Lorsque vous avez défini plusieurs pools de nœuds, vous pouvez définir une préférence concernant l’emplacement dans lequel une charge de travail doit être planifiée. Définissez le poids relatif dans les définitions de votre pool de nœuds.
# 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
AKS avec NAP gère les mises à niveau des versions de Kubernetes, ainsi que les mises à jour des disques du système d’exploitation de la machine virtuelle par défaut.
Les mises à niveau Kubernetes pour les pools de nœuds NAP suivent la version de Kubernetes du plan de contrôle. Si vous effectuez une mise à niveau du cluster, vos nœuds NAP sont mis à jour automatiquement pour suivre le même contrôle de version.
Par défaut, les machines virtuelles du pool de nœuds NAP sont automatiquement mises à jour lorsqu’une nouvelle image est disponible. Si vous souhaitez épingler un pool de nœuds à une certaine version de l’image du nœud, vous pouvez définir l’imageVersion sur la classe du nœud :
kubectl edit aksnodeclass default
Dans la définition de la classe de nœud, définissez l’imageVersion sur l’une des versions publiées répertoriées dans les notes de publication AKS. Vous pouvez également voir la disponibilité des images dans les régions en faisant référence au suivi des versions AKS
ImageVersion est la partie date de l’image du nœud, car seul Ubuntu 22.04 est pris en charge, par exemple « AKSUbuntu-2204-202311.07.0 » est « 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
La suppression de la spécification imageVersion rétablit la mise à jour du pool de nœuds vers la dernière version de l’image du nœud.
Lorsque les charges de travail sur vos nœuds effectuent un scale-down, NAP utilise des règles d’interruption sur la spécification du pool de nœuds afin de décider du moment et de la méthode de suppression de ces nœuds, mais également de replanifier éventuellement vos charges de travail pour être plus efficaces.
Vous pouvez manuellement supprimer un nœud à l’aide de kubectl delete node
, mais NAP peut également contrôler quand il doit optimiser vos nœuds.
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
Le provisionnement automatique de nœuds produit des événements de cluster pouvant être utilisés pour superviser les décisions de déploiement et de planification prises. Vous pouvez afficher des événements au moyen du flux d’événements Kubernetes.
kubectl get events -A --field-selector source=karpenter -w
Commentaires sur Azure Kubernetes Service
Azure Kubernetes Service est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Planifier un déploiement d’Azure Kubernetes Service - Training
Dans ce module, vous allez découvrir les principaux composants de l’infrastructure Kubernetes, notamment les nœuds du plan de contrôle, les pools de nœuds et les ressources de charge de travail telles que les pods, les déploiements et les ensembles.