

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.

# Configuration d'étiquettes et de teintures Kubernetes personnalisées sur Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints"></a>

 SageMaker HyperPod Les clusters Amazon dotés de l'orchestrateur Amazon Elastic Kubernetes Service (Amazon EKS) prennent en charge les étiquettes et les teintes Kubernetes personnalisées pour les nœuds au sein de groupes d'instances. Les étiquettes et les annotations sont des mécanismes fondamentaux de planification et d'organisation dans Kubernetes qui vous permettent de contrôler avec précision le placement des pods et l'utilisation des ressources.

Les étiquettes sont des paires clé-valeur qui peuvent être associées à des objets Kubernetes, ce qui vous permet d'organiser et de sélectionner des ressources en fonction d'attributs. Les taches, associées aux tolérances, sont des propriétés spécifiques aux nœuds qui influencent la planification des capsules en repoussant les gousses dont les tolérances ne sont pas identiques. Ensemble, ces mécanismes vous permettent d'isoler les charges de travail, de les attribuer en fonction des spécifications matérielles et de garantir une utilisation optimale des ressources.

## Cas d’utilisation courants
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-use-cases"></a>

Voici les scénarios courants dans lesquels les étiquettes et les teintures personnalisées sont bénéfiques :
+ **Prévention des modules système sur des instances coûteuses** : appliquez des modifications aux instances GPU pour empêcher les modules système et autres charges de travail non critiques de consommer des ressources de calcul coûteuses
+ **Intégration à l'outillage existant** : appliquez des étiquettes qui correspondent aux modèles d'infrastructure établis et aux configurations d'affinité des nœuds de votre organisation

## Configuration des étiquettes et des teintures
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-configure"></a>

Vous pouvez configurer des étiquettes et des nuances Kubernetes personnalisées au niveau du groupe d'instances à l'aide du `KubernetesConfig` paramètre de configuration de votre cluster. Les étiquettes et les marques sont appliquées à tous les nœuds du groupe d'instances et persistent tout au long du cycle de vie du cluster.

Le `KubernetesConfig` paramètre est déclaratif, ce qui signifie que vous spécifiez l'état complet souhaité des étiquettes et des nuances pour un groupe d'instances. SageMaker HyperPod réconcilie ensuite l'état réel des nœuds pour qu'il corresponde à l'état souhaité.
+ **Ajouter des étiquettes ou des teintures** - Incluez les nouvelles étiquettes ou teintures `KubernetesConfig` ainsi que celles que vous souhaitez conserver
+ **Mise à jour des étiquettes ou des teintures** : modifiez les valeurs `KubernetesConfig` des étiquettes ou des teintures que vous souhaitez modifier, et incluez toutes les autres que vous souhaitez conserver
+ **Supprimer les étiquettes ou les taches** : omettez les étiquettes ou les taches que vous souhaitez supprimer`KubernetesConfig`, en ne conservant que celles que vous souhaitez conserver

### Création d'un cluster avec des étiquettes et des teintures
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-create"></a>

Lorsque vous créez un nouveau SageMaker HyperPod cluster, incluez le `KubernetesConfig` paramètre dans la configuration de votre groupe d'instances. L'exemple suivant montre comment créer un cluster avec des étiquettes et des nuances personnalisées :

```
{
    "ClusterName": "my-cluster",
    "InstanceGroups": [{
        "InstanceGroupName": "worker-group-1",
        "InstanceType": "ml.p4d.24xlarge",
        "InstanceCount": 4,
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh",
            "OnCreate": "on-create.sh"
        },
        "ExecutionRole": {{"arn:aws:iam::123456789012:role/HyperPodExecutionRole"}},
        "ThreadsPerCore": 1,
        "KubernetesConfig": { 
            "Labels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "Taints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            },
            {
                "key": "dedicated",
                "value": "ml-workloads",
                "effect": "NoExecute"
            }]
        }
    }],
    "VpcConfig": {
        "SecurityGroupIds": [{{"sg-0123456789abcdef0"}}],
        "Subnets": [{{"subnet-0123456789abcdef0"}}, {{"subnet-0123456789abcdef1"}}]
    },
    "Orchestrator": {
        "Eks": {
            "ClusterArn": {{"arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster"}}
        }
    }
}
```

Dans cet exemple :
+ **Étiquettes** : trois étiquettes personnalisées sont appliquées : `env=prod``team=ml-training`, et `gpu-type=a100`
+ **Teintes :** deux taches sont configurées pour empêcher la planification indésirable des pods

### Mise à jour des étiquettes et des altérations sur un cluster existant
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-update"></a>

Vous pouvez modifier les étiquettes et les teintures d'un cluster existant à l'aide de l'`UpdateCluster`API. L'exemple suivant montre comment mettre à jour le `KubernetesConfig` pour un groupe d'instances :

```
{
    "ClusterName": "my-cluster",
    "InstanceGroups": [{
        "InstanceGroupName": "worker-group-1",
        "KubernetesConfig": { 
            "Labels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100",
                "cost-center": "ml-ops"
            },
            "Taints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }]
        }
    }]
}
```

Lorsque vous mettez à jour les étiquettes et les nuances, SageMaker HyperPod applique les modifications à tous les nœuds du groupe d'instances. Le service gère la transition entre l'état actuel et l'état souhaité, que vous pouvez surveiller à l'aide de l'`DescribeCluster`API.

## Surveillance de l'étiquette et de l'application de taches
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-monitor"></a>

SageMaker HyperPod fournit des API pour surveiller l'état des étiquettes et des taches lorsqu'elles sont appliquées aux nœuds de votre cluster.

### Vérification de l'état au niveau du cluster
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-cluster"></a>

Utilisez l'`DescribeCluster`API pour afficher l'état actuel et souhaité des étiquettes et des taches au niveau du groupe d'instances. L'exemple suivant montre la structure de réponse :

```
{
    "ClusterName": "my-cluster",
    "ClusterStatus": "InService",
    "InstanceGroups": [{
        "InstanceGroupName": "worker-group-1",
        "InstanceType": "ml.p4d.24xlarge",
        "CurrentInstanceCount": 4,
        "TargetInstanceCount": 4,
        "KubernetesConfig": {
            "CurrentLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "DesiredLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "CurrentTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }],
            "DesiredTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }]
        }
    }]
}
```

En cas `DesiredLabels` de `CurrentLabels` `CurrentTaints` correspondance`DesiredTaints`, la configuration spécifiée est appliquée à tous les nœuds du groupe d'instances. S'ils diffèrent, le cluster est toujours en train d'appliquer les modifications.

### Vérification de l'état de chaque nœud
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-node"></a>

Pour plus de détails au niveau des nœuds, utilisez l'`DescribeClusterNode`API pour vérifier l'étiquette et altérer la configuration des nœuds individuels. L'exemple suivant montre la structure de réponse :

```
{
    "NodeDetails": { 
        "InstanceId": {{"i-0123456789abcdef0"}},
        "InstanceGroupName": "worker-group-1",
        "InstanceType": "ml.p4d.24xlarge",
        "InstanceStatus": {
            "Status": "Running",
            "Message": "Node is healthy"
        },
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh",
            "OnCreate": "on-create.sh"
        },
        "LaunchTime": 1699564800.0,
        "KubernetesConfig": {
            "CurrentLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "DesiredLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "CurrentTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }],
            "DesiredTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }]
        }
    }
}
```

Node-level la surveillance est utile pour résoudre les problèmes lorsque les étiquettes ou les taches ne s'appliquent pas correctement à des nœuds spécifiques, ou lorsque vous devez vérifier la configuration d'une instance particulière.

## Préfixes réservés
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-reserved-prefixes"></a>

Certains préfixes sont réservés à l'utilisation du système et ne doivent pas être utilisés pour des étiquettes ou des teintures personnalisées. Les préfixes suivants sont réservés :
+ `kubernetes.io/`- Réservé aux composants principaux de Kubernetes
+ `k8s.io/`- Réservé aux composants principaux de Kubernetes
+ `sagemaker.amazonaws.com/`- Réservé pour SageMaker HyperPod
+ `eks.amazonaws.com/`- Réservé à Amazon EKS
+ `k8s.aws/`- Réservé à Amazon EKS
+ `karpenter.sh/`- Réservé à la mise à l'échelle automatique de Karpenter

Les étiquettes et les marques comportant ces préfixes sont gérées par les composants du système et ne doivent pas être remplacées par des valeurs personnalisées.