

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Créez un NodePool
<a name="sagemaker-hyperpod-eks-autoscaling-nodepool"></a>

L’élément `NodePool` définit des contraintes sur les nœuds qui peuvent être créés par Karpenter et les pods qui peuvent s’exécuter sur ces nœuds. L’élément `NodePool` peut être configuré pour faire des choses comme :
+ Limiter la création de nœuds à certaines zones, à certains types d’instances et à certaines architectures informatiques.
+ Définir des étiquettes ou des rejets pour limiter le nombre de pods pouvant fonctionner sur les nœuds créés par Karpenter.

**Note**  
HyperPod le fournisseur prend en charge un ensemble limité d'exigences bien connues de Kubernetes et Karpenter expliquées ci-dessous. 

Les étapes suivantes décrivent comment créer un élément `NodePool`.

1. Créez un fichier YAML nommé nodepool.yaml contenant la configuration `NodePool` que vous souhaitez.

1. Vous pouvez utiliser l’exemple de configuration ci-dessous.

   Recherchez `Ready` sous `Conditions` pour indiquer que toutes les ressources dépendantes fonctionnent correctement.

   ```
   apiVersion: karpenter.sh/v1
   kind: NodePool
   metadata:
    name: sample-np
   spec:
    template:
      spec:
        nodeClassRef:
         group: karpenter.sagemaker.amazonaws.com
         kind: HyperpodNodeClass
         name: multiazc5
        expireAfter: Never
        requirements:
           - key: node.kubernetes.io/instance-type
             operator: Exists
   ```

1. Appliquez l’élément `NodePool` à votre cluster :

   ```
   kubectl apply -f nodepool.yaml
   ```

1. Surveillez le statut de `NodePool` pour vous assurer que la condition `Ready` de statut est définie sur `True` :

   ```
   kubectl get nodepool sample-np -oyaml
   ```

   ```
   apiVersion: karpenter.sh/v1
   kind: NodePool
   metadata:
     name: <nodepool-name>
     uid: <resource-uid>
     ...
   spec:
     disruption:
       budgets:
       - nodes: 90%
       consolidateAfter: 0s
       consolidationPolicy: WhenEmptyOrUnderutilized
     template:
       spec:
         expireAfter: 720h
         nodeClassRef:
           group: karpenter.sagemaker.amazonaws.com
           kind: HyperpodNodeClass
           name: <nodeclass-name>
         requirements:
         - key: node.kubernetes.io/instance-type
           operator: Exists
   status:
     conditions:
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: ValidationSucceeded
       status: "True"
       type: ValidationSucceeded
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: NodeClassReady
       status: "True"
       type: NodeClassReady
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: Ready
       status: "True"
       type: Ready
   ```

**Étiquettes compatibles pour Karpenter Provider HyperPod**

Il s’agit des contraintes et exigences facultatives que vous pouvez spécifier dans votre configuration de `NodePool`.


|  Type d’exigence  |  Objectif  |   Case/Supported Valeurs d'utilisation  |  Recommendation  | 
| --- | --- | --- | --- | 
|  Types d’instances (`node.kubernetes.io/instance-type`)  |  Contrôle les types d' SageMaker instances parmi lesquels Karpenter peut choisir  |  Au lieu de vous limiter à ml.c5.xlarge, laissez Karpenter choisir parmi tous les types disponibles dans vos groupes d’instances.  |  Laissez ce paramètre non défini ou utilisez l’opérateur Exists pour donner à Karpenter une flexibilité maximale dans le choix de types d’instances économiques.  | 
|  Zones de disponibilité (`topology.kubernetes.io/zone`)  |  Contrôle les zones de AWS disponibilité dans lesquelles les nœuds peuvent être créés  |  Noms de zone spécifiques comme us-east-1c. À utiliser lorsque vous avez besoin que les pods s’exécutent dans des zones spécifiques pour des raisons de latence ou de conformité.  | N/A | 
|  Architecture (`kubernetes.io/arch`)  |  Spécifie l’architecture des CPU  |  Uniquement amd64 (aucune prise en charge ARM actuellement)  |  N/A  | 