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 contaminanti Kubernetes personalizzati in Amazon SageMaker HyperPod
SageMaker HyperPod I cluster Amazon con l'orchestrator Amazon Elastic Kubernetes Service (Amazon EKS) supportano etichette e taint Kubernetes personalizzati per i nodi all'interno di gruppi di istanze. Le etichette e i taint sono meccanismi di pianificazione e organizzazione fondamentali in Kubernetes che offrono un controllo dettagliato sul posizionamento dei pod e sull'utilizzo delle risorse.
Le etichette sono coppie chiave-valore che possono essere allegate agli oggetti Kubernetes, consentendo 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
Di seguito sono riportati alcuni scenari comuni in cui etichette e colorazioni personalizzate sono utili:
-
Prevenzione dei pod di sistema su istanze costose: applica i taint alle istanze GPU per evitare che i pod di sistema e altri carichi di lavoro non critici consumino costose risorse di calcolo
-
Integrazione con gli strumenti esistenti: applica etichette che corrispondano ai modelli di infrastruttura consolidati dell'organizzazione e alle configurazioni di affinità dei nodi
Configurazione di etichette e coloranti
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 delle etichette e dei 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 macchie: includi le nuove etichette o macchie
KubernetesConfiginsieme a quelle esistenti che desideri conservare -
Aggiornamento delle etichette o delle macchie: modifica i valori delle
KubernetesConfigetichette o delle macchie che desideri modificare e includi tutte le altre che desideri conservare -
Rimozione di etichette o macchie: ometti le etichette o le macchie che desideri rimuovere
KubernetesConfig, mantenendo solo quelle che desideri conservare
Creazione di un cluster con etichette e tinte
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=prodteam=ml-training, egpu-type=a100 -
Contini: due contaminanti sono configurati per impedire la pianificazione indesiderata dei pod
Aggiornamento di etichette e contaminanti su un cluster esistente
È possibile modificare etichette e tint su un cluster esistente utilizzando l'UpdateClusterAPI. L'esempio seguente mostra come aggiornare il KubernetesConfig per un gruppo di istanze:
{ "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 si aggiornano 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 puoi monitorare utilizzando l'DescribeClusterAPI.
Etichetta di monitoraggio e applicazione contaminata
SageMaker HyperPod fornisce API per monitorare lo stato delle etichette e dei taint quando vengono applicati ai nodi del cluster.
Verifica dello stato a livello di cluster
Utilizza l'DescribeClusterAPI per visualizzare gli stati attuali e desiderati delle etichette e dei taint 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 DesiredLabelsDesiredTaints, a tutti i nodi del gruppo di istanze viene applicata la configurazione specificata. Se sono diversi, il cluster sta ancora applicando le modifiche.
Verifica dello stato dei singoli nodi
Per informazioni dettagliate a livello di nodo, utilizzate l'DescribeClusterNodeAPI per verificare la configurazione delle etichette e delle tinte 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" }] } } }
Node-level il monitoraggio è utile per la risoluzione dei problemi quando le etichette o i taint non vengono applicati correttamente a nodi specifici o quando è necessario verificare la configurazione di una particolare istanza.
Prefissi riservati
Alcuni prefissi sono riservati all'uso del sistema e non devono essere utilizzati per etichette o tinte 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 all'autoscaling di Karpenter
Le etichette e le macchie con questi prefissi sono gestite dai componenti del sistema e non devono essere sovrascritte con valori personalizzati.