Ricetta: impedire che i pod vengano programmati su nodi specifici - Amazon EKS

Aiutaci a migliorare questa pagina

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à.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

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à.

Ricetta: impedire che i pod vengano programmati su nodi specifici

Panoramica

I nodi con processori specializzati, ad esempio GPUs, possono essere più costosi da eseguire rispetto ai nodi su macchine standard. Per proteggere questi nodi da carichi di lavoro che non richiedono hardware speciale, puoi utilizzare Kubernetes taints. I taint contrassegnano i nodi per respingere i pod che non hanno tolleranze corrispondenti, assicurando che vengano pianificati solo carichi di lavoro compatibili. Per ulteriori informazioni, consulta Taints and Tolerations nella documentazione di Kubernetes.

I nodi Kubernetes possono essere applicati a gruppi di nodi gestiti nuovi ed esistenti utilizzando o AWS Management Console tramite l'API Amazon EKS. Questa ricetta mostra come applicare i taint ai gruppi di nodi gestiti di Amazon EKS utilizzando la AWS CLI. Per informazioni sulla creazione di un gruppo di nodi con una macchia utilizzando il AWS Management Console, consulta. Crea un gruppo di nodi gestito per il tuo cluster

Prerequisiti

Fasi

Fase 1: Creare un gruppo di nodi con macchie

Usa il aws eks create-nodegroup comando per creare un nuovo gruppo di nodi gestito con taints. Questo esempio applica una sfumatura con chiave dedicatedgpuGroup, valore ed effetto. NO_SCHEDULE

aws eks create-nodegroup \ --cli-input-json ' { "clusterName": "my-cluster", "nodegroupName": "node-taints-example", "subnets": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890", "subnet-021345abcdef67890" ], "nodeRole": "arn:aws: iam::111122223333:role/AmazonEKSNodeRole", "taints": [ { "key": "dedicated", "value": "gpuGroup", "effect": "NO_SCHEDULE" } ] }'

Per ulteriori informazioni ed esempi, consulta taint nella documentazione di riferimento di Kubernetes.

Passaggio 2: aggiorna i taint su un gruppo di nodi esistente

Usa il comando aws eks update-nodegroup-config AWS CLI per aggiungere, rimuovere o sostituire i taint per i gruppi di nodi gestiti.

aws eks update-nodegroup-config --cluster-name my-cluster --nodegroup-name node-taints-example --taints 'removeTaints=[{key=dedicated,value=gpuGroup,effect=NO_SCHEDULE}]'

Note

  • I taint possono essere aggiornati dopo aver creato il gruppo di nodi utilizzando l'API UpdateNodegroupConfig.

  • La chiave del taint deve iniziare con una lettera o un numero. Può includere lettere, numeri, trattini (-), punti (.) e trattini bassi (_). Può contenere fino a 63 caratteri.

  • Facoltativamente, la chiave del taint può iniziare con un prefisso di sottodominio DNS e un singolo /. Se inizia con un prefisso di sottodominio DNS, può avere una lunghezza di 253 caratteri.

  • Il valore è facoltativo e deve iniziare con una lettera o un numero. Può includere lettere, numeri, trattini (-), punti (.) e trattini bassi (_). Può contenere fino a 63 caratteri.

  • Quando si utilizza Kubernetes direttamente o il AWS Management Console, l'effetto taint deve essere, o. NoSchedule PreferNoSchedule NoExecute Tuttavia, quando si utilizza la AWS CLI o l'API, l'effetto contaminante deve essereNO_SCHEDULE, PREFER_NO_SCHEDULE o. NO_EXECUTE

  • Sono consentiti un massimo di 50 taint per un gruppo di nodi.

  • Se le contaminazioni create utilizzando un gruppo di nodi gestito vengono rimosse manualmente da un nodo, Amazon EKS non le aggiunge nuovamente al nodo. Questo è vero anche se i taint sono specificati nella configurazione del gruppo di nodi gestito.