Gérer des pools de nœuds pour un cluster (AKS sur Azure Stack HCI 22H2)

S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server

Notes

Pour plus d’informations sur la gestion des pools de nœuds dans AKS sur Azure Stack HCI 23H2, consultez Gérer les pools de nœuds.

Dans AKS activé par Azure Arc, les nœuds de la même configuration sont regroupés dans des pools de nœuds. Ces pools de nœuds contiennent les machines virtuelles sous-jacentes qui exécutent vos applications. Cet article vous montre comment créer et gérer des pools de nœuds pour un cluster dans AKS Arc.

Notes

Cette fonctionnalité permet de mieux contrôler la création et la gestion de plusieurs pools de nœuds. Par conséquent, des commandes distinctes sont requises pour les opérations de création, de mise à jour et de suppression. Auparavant, les opérations de cluster via New-AksHciCluster ou Set-AksHciCluster étaient la seule option permettant de créer ou de mettre à l’échelle un cluster avec un pool de nœuds Windows et un pool de nœuds Linux. Cette fonctionnalité propose une opération distincte définie pour les pools de nœuds qui requièrent l’utilisation des commandes de pool de nœuds New-AksHciNodePool, Set-AksHciNodePool, AksHciNodePool et Remove-AksHciNodePool pour exécuter des opérations sur un pool de nœuds individuel.

Avant de commencer

Nous vous recommandons d’installer la version 1.1.6. Si le module PowerShell est déjà installé, exécutez la commande suivante pour rechercher la version :

Get-Command -Module AksHci

Si vous devez mettre à jour PowerShell, suivez les instructions fournies dans Mettre à niveau l’hôte AKS.

Créer un cluster AKS

Pour commencer, créez un cluster AKS avec un pool de nœuds unique. L’exemple suivant utilise la commande New-AksHciCluster pour créer un cluster Kubernetes avec un pool de nœuds Linux nommé linuxnodepool, qui a 1 nœud. Si vous avez déjà déployé un cluster avec une version antérieure d’AKS et que vous souhaitez continuer à utiliser votre ancien déploiement, vous pouvez ignorer cette étape. Vous pouvez toujours utiliser le nouvel ensemble de commandes de pool de nœuds pour ajouter un pool de nœuds à votre cluster existant.

New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux

Notes

L’ancien paramètre défini pour New-AksHciCluster est toujours pris en charge.

Ajouter un pool de nœuds

Le cluster nommé mycluster*', créé à l’étape précédente, a un pool de nœuds unique. Vous pouvez ajouter un deuxième pool de nœuds au cluster existant à l’aide de la commande New-AksHciNodePool . L’exemple suivant crée un pool de nœuds Windows nommé windowsnodepool avec un nœud. Assurez-vous que le nom du pool de nœuds n’est pas le même nom que n’importe quel pool de nœuds existant.

New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022

Obtenir les informations de configuration d’un pool de nœuds

Pour afficher les informations de configuration de vos pools de nœuds, utilisez la commande Get-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster

Exemple de sortie :

ClusterName  : mycluster
NodePoolName : linuxnodepool
Version      : v1.20.7
OsType       : Linux
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed

ClusterName  : mycluster
NodePoolName : windowsnodepool
Version      : v1.20.7
OsType       : Windows
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed

Pour afficher les informations de configuration d’un pool de nœuds spécifique, utilisez le -name paramètre dans Get-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster -name linuxnodepool

Exemple de sortie :

ClusterName  : mycluster
NodePoolName : linuxnodepool
Version      : v1.20.7
OsType       : Linux
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool

Exemple de sortie :

ClusterName  : mycluster
NodePoolName : windowsnodepool
Version      : v1.20.7
OsType       : Windows
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed

Notes

Si vous utilisez les nouveaux ensemble de paramètres dans New-AksHciCluster pour déployer un cluster, puis exécutez Get-AksHciCluster pour obtenir les informations de cluster ; les champs WindowsNodeCount et LinuxNodeCount retournent 0 dans la sortie. Pour obtenir le nombre précis de nœuds dans chaque pool de nœuds, utilisez la commande Get-AksHciNodePool avec le nom de cluster spécifié.

Mettre à l'échelle un pool de nœuds

Vous pouvez mettre à l’échelle le nombre de nœuds à la hausse ou à la baisse dans un pool de nœuds.

Pour mettre à l’échelle le nombre de nœuds dans un pool de nœuds, utilisez la commande Set-AksHciNodePool. L’exemple suivant met à l’échelle le nombre de nœuds à 3 dans un pool de nœuds nommé linuxnodepool dans le mycluster cluster.

Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3

Mettre à l’échelle les nœuds de plan de contrôle

La gestion des nœuds du plan de contrôle n’a pas changé. La façon dont ils sont créés, mis à l’échelle et supprimés reste inchangée. Vous allez toujours déployer des nœuds de plan de contrôle avec la commande New-AksHciCluster avec les paramètres controlPlaneNodeCount et controlPlaneVmSize avec les valeurs par défaut de 1 et Standard_A4_V2, respectivement, si vous ne fournissez aucune valeur.

Vous devrez peut-être mettre à l’échelle les nœuds du plan de contrôle au fil des changements de la charge de travail de vos applications. Utilisez la commande Set-AksHciCluster pour mettre à l’échelle les nœuds du plan de contrôle. L’exemple suivant met à l’échelle les nœuds du plan de contrôle à 3 dans mycluster le cluster, qui a été créé aux étapes précédentes.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

Supprimer un pool de nœuds

Si vous devez supprimer un pool de nœuds, utilisez la commande Remove-AksHciNodePool. L’exemple suivant supprime du cluster le pool de mycluster nœuds nomméwindowsnodepool.

Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool

Spécifier une aversion pour un pool de nœuds

Lors de la création d’un pool de nœuds, vous pouvez lui ajouter des aversions. Quand vous ajoutez une aversion, tous les nœuds du pool reçoivent cette aversion. Pour plus d’informations sur les aversions et les tolérances, consultez Aversions et tolérances de Kubernetes.

Définition des aversions d’un pool de nœuds

Pour créer un pool de nœuds avec une aversion, utilisez New-AksHciNodePool. Spécifiez le nom taintnpet utilisez le -taints paramètre à spécifier sku=gpu:noSchedule pour la teinte.

New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule

Notes

Une teinte ne peut être définie pour un pool de nœuds que pendant la création de celui-ci.

Exécutez la commande suivante pour vous assurer que le pool de nœuds a été correctement déployé avec la teinte spécifiée.

Get-AksHciNodePool -clusterName mycluster -name taintnp

Sortie

Status       : {Phase, Details}
ClusterName  : mycluster
NodePoolName : taintnp
Version      : v1.20.7-kvapkg.1
OsType       : Linux
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed
Taints       : {sku=gpu:NoSchedule}

À l’étape précédente, vous avez appliqué la teinte sku=gpu:NoSchedule lorsque vous avez créé votre pool de nœuds. L’exemple de manifeste YAML de base suivant utilise une tolérance pour autoriser le planificateur Kubernetes à exécuter un pod NGINX sur un nœud de ce pool de nœuds.

Créez un fichier nommé nginx-toleration.yamlet copiez les informations dans le texte suivant.

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
    name: mypod
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 1
        memory: 2G
  tolerations:
  - key: "sku"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Ensuite, planifiez le pod à l’aide de la commande suivante.

kubectl apply -f nginx-toleration.yaml

Pour vérifier que le pod a été déployé, exécutez la commande suivante :

kubectl describe pod mypod
[...]
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
                 sku=gpu:NoSchedule
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  32s   default-scheduler  Successfully assigned default/mypod to moc-lk4iodl7h2y
  Normal  Pulling    30s   kubelet            Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Pulled     26s   kubelet            Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 4.529046457s
  Normal  Created    26s   kubelet            Created container mypod

Étapes suivantes