

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione di etichette e colori Kubernetes personalizzati in Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints"></a>

 SageMaker HyperPod I cluster Amazon con orchestrator Amazon Elastic Kubernetes Service (Amazon EKS) supportano etichette e taint Kubernetes personalizzati per i nodi all'interno dei gruppi di istanze. Le etichette e i taint sono meccanismi di pianificazione e organizzazione fondamentali in Kubernetes che offrono un controllo preciso sul posizionamento dei pod e sull'utilizzo delle risorse.

Le etichette sono coppie chiave-valore che possono essere allegate agli oggetti Kubernetes e consentono di organizzare e selezionare le risorse in base agli attributi. I taint, che funzionano insieme alle tolleranze, sono proprietà specifiche dei nodi che influenzano la pianificazione dei pod respingendo i pod che non hanno tolleranze corrispondenti. Insieme, questi meccanismi consentono di isolare i carichi di lavoro, assegnarli in base alle specifiche hardware e garantire un utilizzo ottimale delle risorse.

## Casi di utilizzo comune
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-use-cases"></a>

Di seguito sono riportati gli scenari più comuni in cui etichette e colorazioni personalizzate sono vantaggiose:
+ **Prevenzione dei pod di sistema su istanze costose: applica dei trucchi alle istanze** GPU per evitare che i pod di sistema e altri carichi di lavoro non critici consumino costose risorse di elaborazione
+ **Integrazione con gli strumenti esistenti: applica etichette che corrispondono ai modelli di infrastruttura e** alle configurazioni di affinità dei nodi stabiliti dall'organizzazione

## Configurazione di etichette e colorazioni
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-configure"></a>

Puoi configurare etichette e taint Kubernetes personalizzati a livello di gruppo di istanze utilizzando il parametro nella configurazione del `KubernetesConfig` cluster. Le etichette e i taint vengono applicati a tutti i nodi del gruppo di istanze e persistono per tutto il ciclo di vita del cluster.

Il `KubernetesConfig` parametro è dichiarativo, il che significa che si specifica lo stato completo desiderato di etichette e taint per un gruppo di istanze. SageMaker HyperPod quindi riconcilia lo stato effettivo dei nodi in modo che corrisponda allo stato desiderato.
+ **Aggiungere etichette o tinte**: includi le nuove etichette o tinte `KubernetesConfig` insieme a quelle esistenti che desideri conservare
+ **Aggiornamento di etichette o tinte**: modifica i valori delle `KubernetesConfig` etichette o delle tinte che desideri modificare e includi tutte le altre che desideri conservare
+ **Rimozione di etichette o tinte**: ometti le etichette o le sfumature che desideri rimuovere`KubernetesConfig`, mantenendo solo quelle che desideri conservare

### Creazione di un cluster con etichette e tinte
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-create"></a>

Quando crei un nuovo SageMaker HyperPod cluster, includi il `KubernetesConfig` parametro nella configurazione del gruppo di istanze. L'esempio seguente mostra come creare un cluster con etichette e tinte personalizzate:

```
{
    "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"
        }
    }
}
```

In questo esempio:
+ **Etichette**: vengono applicate tre etichette personalizzate:`env=prod`,`team=ml-training`, e `gpu-type=a100`
+ **Taints**: due taint sono configurati per impedire la pianificazione indesiderata dei pod

### Aggiornamento di etichette e segni distintivi su un cluster esistente
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-update"></a>

È possibile modificare etichette e caratteri su un cluster esistente utilizzando l'`UpdateCluster`API. L'esempio seguente mostra come aggiornare il gruppo `KubernetesConfig` for an instance:

```
{
    "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"
            }]
        }
    }]
}
```

Quando aggiorni etichette e tinte, SageMaker HyperPod applica le modifiche a tutti i nodi del gruppo di istanze. Il servizio gestisce la transizione dallo stato corrente a quello desiderato, che è possibile monitorare utilizzando l'`DescribeCluster`API.

## Monitoraggio dell'etichetta e dell'applicazione di contaminazione
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-monitor"></a>

SageMaker HyperPod consente APIs di monitorare lo stato delle etichette e dei coloranti man mano che vengono applicati ai nodi del cluster.

### Verifica dello stato a livello di cluster
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-cluster"></a>

Utilizza l'`DescribeCluster`API per visualizzare lo stato attuale e desiderato delle etichette e dei coloranti a livello di gruppo di istanze. L'esempio seguente mostra la struttura della risposta:

```
{
    "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"
            }]
        }
    }]
}
```

In caso di `CurrentLabels` `CurrentTaints` corrispondenza `DesiredLabels``DesiredTaints`, a tutti i nodi del gruppo di istanze viene applicata la configurazione specificata. Se differiscono, il cluster sta ancora applicando le modifiche.

### Verifica dello stato dei singoli nodi
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-node"></a>

Per i dettagli a livello di nodo, usa l'`DescribeClusterNode`API per controllare l'etichetta e la configurazione del colore dei singoli nodi. L'esempio seguente mostra la struttura della risposta:

```
{
    "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"
            }]
        }
    }
}
```

Il monitoraggio a livello di nodo è utile per la risoluzione dei problemi quando etichette o contaminazioni non si applicano correttamente a nodi specifici o quando è necessario verificare la configurazione di una particolare istanza.

## Prefissi riservati
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-reserved-prefixes"></a>

Alcuni prefissi sono riservati all'uso del sistema e non devono essere utilizzati per etichette o colorazioni personalizzate. I seguenti prefissi sono riservati:
+ `kubernetes.io/`- Riservato ai componenti principali di Kubernetes
+ `k8s.io/`- Riservato ai componenti principali di Kubernetes
+ `sagemaker.amazonaws.com/`- Riservato per SageMaker HyperPod
+ `eks.amazonaws.com/`- Riservato ad Amazon EKS
+ `k8s.aws/`- Riservato ad Amazon EKS
+ `karpenter.sh/`- Riservato alla scalabilità automatica di Karpenter

Le etichette e le macchie con questi prefissi sono gestite dai componenti del sistema e non devono essere sovrascritte con valori personalizzati.