Publié le: May 7, 2021

Aujourd'hui, nous lançons la prise en charge d'EMR sur EKS pour les modèles pod afin de simplifier l'exécution des tâches Spark sur les clusters EKS partagés. Un pod est un groupe d'un ou plusieurs conteneurs dotés de ressources de stockage et de réseau partagées, et de spécifications sur la manière d'exécuter les conteneurs. Les modèles pod sont des spécifications qui déterminent la manière dont s'exécute chaque pod. Les clients consolident souvent plusieurs applications sur un cluster EKS partagé dans le but d'améliorer l'utilisation et de réduire les coûts. Cependant, il se peut que chaque application ait des exigences différentes. Par exemple, vous pouvez vouloir exécuter des charges de travail gourmandes en performances telles que des tâches d'entraînement de modèles ML sur des instances sauvegardées sur SSD pour obtenir de meilleures performances ou des charges de travail ad hoc sur des instances Sport pour réduire les coûts. Vous pouvez également planifier un conteneur de journalisation distinct pour transférer les journaux à votre application de surveillance existante. Avec cette version, vous pouvez utiliser les modèles pod avec EMR sur EKS pour configurer la manière d'exécuter les tâches Spark sur les clusters EKS partagés.

Pour réduire les coûts, les clients peuvent planifier les pods du pilote Spark pour qu'ils s'exécutent sur des instances EC2 à la demande tout en planifiant des pods exécuteurs Spark pour qu'ils s'exécutent sur des instances Spot EC2. Les clients Kubernetes utilisent fréquemment des teintes, des tolérances et des étiquettes pour s'assurer que les pods sont planifiés sur les bons nœuds de travail. Une teinte est une propriété d'un nœud de travail qui lui permet de restreindre les pods pouvant s'exécuter sur celui-ci. À l'inverse, une tolérance permet à un pod d'être planifié pour être exécuté sur une teinte correspondante. L'étiquette est utilisée avec nodeSelectors pour diriger le pod vers le nœud de travail. Désormais, les modèles pod peuvent être utilisés pour appliquer des tolérances sur le pod pilote Spark afin qu'il s'exécute sur une instance EC2 à la demande, ainsi qu'une tolérance distincte pour le pod exécuteur Spark afin qu'il ne s'exécute que sur des instances EC2.

Pour transférer les journaux vers votre application de journalisation centralisée, les clients peuvent déployer un conteneur sidecar avec leur tâche Spark. Un conteneur sidecar est déployé dans le même pod que le conteneur d'applications, mais offre des fonctionnalités supplémentaires. Dans ce cas, les journaux des tâches sont transférés. EMR sur EKS fournit un transfert intégré de journaux vers Amazon CloudWatch et Amazon S3. Cependant, si un client souhaite transférer les journaux vers sa propre application de création de rapports sur les journaux, il doit déployer un redirecteur de journaux en tant que daemonset. Les daemonsets s'exécutent directement sur les nœuds de travail Kubernetes. Désormais, les modèles pod peuvent être utilisés pour déployer un transfert de journaux en tant que conteneur sidecar par tâche ou par pod.

Pour augmenter l'utilisation des ressources, les clients peuvent prendre en charge plusieurs équipes exécutant leurs charges de travail sur un même cluster EKS. Chaque équipe obtient fréquemment un groupe de nœuds EC2 désigné sur lequel les charges de travail peuvent être exécutées. Auparavant, les charges de travail ne pouvaient être dirigées vers le bon groupe de nœuds uniquement en utilisant des étiquettes et des affinités. Désormais, les clients peuvent appliquer des teintes au groupe de nœuds d'une équipe et utiliser des modèles pod pour appliquer une tolérance qui correspond à leur charge de travail. Cela permet de garantir que seule l'équipe désignée peut planifier des tâches sur son groupe de nœuds.

Pour implémenter un groupe de nœuds basé sur une équipe, commencez par créer un groupe de nœuds qui comprend une étiquette et une teinte représentant l'équipe. Une teinte est une propriété d'un nœud de travail qui lui permet de restreindre les pods pouvant s'exécuter sur celui-ci. À l'inverse, une tolérance permet à un pod d'être planifié pour être exécuté sur une teinte correspondante. En utilisant l'affinité, l'étiquette dirige l'application vers le groupe de nœuds désigné de l'équipe, et une tolérance lui permet d'outrepasser la teinte. Créez un modèle pod qui inclut la tolérance et l'affinité correspondantes, puis stockez ce modèle dans un compartiment S3 auquel votre tâche peut accéder. Des modèles pod peuvent être créés pour le pilote Spark et les pods exécuteurs afin de fournir différentes options de déploiement. De plus, vous spécifiez l'emplacement des modèles lors de la soumission de la tâche.

Pour en savoir plus sur les fonctionnalités et les cas d'utilisation des modèles pod, consultez notre documentation. Pour en savoir plus sur Amazon EMR on EKS, consultez notre documentation Amazon EMR on EKS ou regardez notre webinaire technique détaillé sur Amazon EMR on EKS.