Simplifiez la gestion des calculs avec AWS Fargate - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Simplifiez la gestion des calculs avec AWS Fargate

Cette rubrique porte sur l’utilisation d’Amazon EKS pour exécuter les pods Kubernetes sur AWS Fargate. Fargate est une technologie qui fournit une capacité de calcul à la demande et de taille appropriée pour les conteneurs. Avec Fargate, il n’est pas nécessaire d’allouer, de configurer ou de mettre à l’échelle des groupes de machines virtuelles pour exécuter les conteneurs. Vous n’avez plus à choisir les types de serveurs, à décider quand vos clusters de nœuds doivent être mis à l’échelle, ni à optimiser les packs de clusters.

Vous pouvez contrôler les pods qui démarrent sur Fargate et la manière dont ils s’exécutent avec des profils Fargate. Les profils Fargate sont définis dans le cadre de votre cluster Amazon EKS. Amazon EKS intègre Kubernetes à Fargate à l’aide des contrôleurs créés par AWS en utilisant le modèle extensible en amont fourni par Kubernetes. Ces contrôleurs font partie du plan de contrôle Kubernetes géré par Amazon EKS et sont responsables de la planification des pods Kubernetes natifs sur Fargate. Les contrôleurs Fargate comprennent un nouveau planificateur qui s'exécute parallèlement au planificateur Kubernetes par défaut, en plus de plusieurs contrôleurs d'admission mutants et validants. Lorsque vous démarrez un pod qui répond aux critères d’exécution sur Fargate, les contrôleurs Fargate qui fonctionnent dans le cluster reconnaissent, mettent à jour et planifient le pod sur Fargate.

Cette rubrique décrit les différents composants des pods qui s’exécutent sur Fargate, et appelle à des considérations particulières pour l’utilisation de Fargate avec Amazon EKS.

Considérations relatives à AWS Fargate

Voici quelques éléments à prendre en compte pour l'utilisation de Fargate sur Amazon EKS.

  • Chaque pod fonctionnant sur Fargate a sa propre limite de calcul. Les nœuds ne partagent pas le noyau sous-jacent, les ressources CPU, les ressources mémoire ou l’interface réseau Elastic avec un autre pod.

  • Les Network Load Balancers et les Application Load Balancers (ALB) peuvent être utilisés avec Fargate avec des cibles IP uniquement. Pour plus d’informations, consultez Créer un équilibreur de charge de réseau et Routage du trafic des applications et du trafic HTTP avec des équilibreurs de charge Application Load Balancer.

  • Les services exposés de Fargate s'exécutent uniquement en mode IP de type cible, et non en mode IP de nœud. La manière recommandée de vérifier la connectivité entre un service s'exécutant sur un nœud géré et un service s'exécutant sur Fargate est de se connecter via le nom du service.

  • Les pods doivent correspondre à un profil Fargate au moment où ils sont programmés pour fonctionner sur Fargate. Les pods qui ne correspondent pas à un profil Fargate peuvent être bloqués comme Pending. Si un profil Fargate correspondant existe, vous pouvez supprimer les pods en attente que vous avez créés pour les reprogrammer sur Fargate.

  • Les DaemonSets ne sont pas pris en charge sur Fargate. Si votre application nécessite un démon, reconfigurez ce démon pour qu’il s’exécute en tant que conteneur secondaire dans vos pods.

  • Les conteneurs privilégiés ne sont pas pris en charge sur Fargate.

  • Les pods fonctionnant sur Fargate ne peuvent pas spécifier HostPort ou HostNetwork dans le manifeste du pod.

  • La limite logicielle par défaut nofile et nproc est de 1 024 et la limite matérielle est de 65 535 pour les pods Fargate.

  • Les GPU ne sont actuellement pas disponibles sur Fargate.

  • Les pods qui fonctionnent sur Fargate ne sont pris en charge que sur des sous-réseaux privés (avec un accès aux services AWS par passerelle NAT, mais sans route directe vers une passerelle Internet). Le VPC de votre cluster doit donc disposer de sous-réseaux privés. Pour les clusters sans accès Internet sortant, veuillez consulter Déployer des clusters privés avec un accès Internet limité.

  • Vous pouvez utiliser la fonctionnalité Ajuster les ressources des pods avec Vertical Pod Autoscaler pour définir la taille initiale correcte du processeur et de la mémoire pour vos pods Fargate, puis utiliser la fonctionnalité Mettre à l’échelle les déploiements de pods avec Horizontal Pod Autoscaler pour mettre à l’échelle ces pods. Si vous souhaitez que le Vertical Pod Autoscaler redéploie automatiquement les pods vers Fargate avec des combinaisons de CPU et de mémoire plus importantes, définissez le mode de Vertical Pod Autoscale sur Auto ou Recreate pour garantir une fonctionnalité correcte. Pour plus d'informations, consultez la documentation Vertical Pod Autoscaler (VPA) sur GitHub.

  • La résolution DNS et les noms d'hôte DNS doivent être activés pour votre VPC. Pour plus d'informations, consultez Affichage et mise à jour de la prise en charge de DNS pour votre VPC.

  • Amazon EKS Fargate ajoute une défense approfondie aux applications Kubernetes en isolant chaque pod au sein d'une machine virtuelle (VM). Cette frontière VM empêche l'accès aux ressources basées sur l'hôte utilisées par d'autres pods en cas de fuite du conteneur, qui est une méthode courante d'attaque des applications conteneurisées et d'accès aux ressources en dehors du conteneur.

    L’utilisation d’Amazon EKS ne modifie pas vos responsabilités dans le cadre du modèle de responsabilité partagée. Vous devez examiner attentivement la configuration des contrôles de sécurité et de gouvernance du cluster. Le moyen le plus sûr d'isoler une application est toujours de l'exécuter dans un cluster séparé.

  • Les profils Fargate prennent en charge la spécification de sous-réseaux à partir de blocs CIDR secondaires de VPC. Vous pouvez spécifier un bloc CIDR secondaire. En effet, le nombre d’adresses IP disponibles dans un sous-réseau est limité. Par conséquent, il existe également un nombre limité de pods qui peuvent être créés dans le cluster. En utilisant différents sous-réseaux pour les pods, vous pouvez augmenter le nombre d’adresses IP disponibles. Pour plus d'informations, consultez Ajout de blocs d'adresse CIDR IPv4 à un VPC.

  • Le service de métadonnées d’instance Amazon EC2 (IMDS) n’est pas disponible pour les pods qui sont déployés sur des nœuds Fargate. Si vous avez des pods déployés sur Fargate qui nécessitent des informations d’identification IAM, attribuez-les à vos pods à l’aide des rôles IAM pour les comptes de service. Si vos pods ont besoin d’accéder à d’autres informations disponibles via IMDS, vous devez coder ces informations en dur dans la spécification de votre pod. Cela inclut la région AWS ou la zone de disponibilité dans laquelle un pod est déployé.

  • Vous ne pouvez pas déployer de pods Fargate sur AWS Outposts, AWS Wavelength ou AWS Local Zones.

  • Amazon EKS doit régulièrement appliquer des correctifs aux pods Fargate pour assurer leur sécurité. Les tentatives de mises à jour sont réalisées de manière à réduire les potentielles répercussions ; toutefois, il arrive que des pods doivent être supprimés si leur expulsion a échoué. Certaines actions peuvent être prises pour minimiser les perturbations. Pour de plus amples informations, consultez Définir des actions pour les événements de correction du système d’exploitation AWS Fargate.

  • Le pluginAmazon VPC CNI pour Amazon EKS est installé sur des nœuds Fargate. Vous ne pouvez pas utiliser les plugins Alternate CNI pour les clusters Amazon EKS avec des nœuds Fargate.

  • Un Pod fonctionnant sur Fargate monte automatiquement un système de fichiers Amazon EFS, sans nécessiter d’étapes manuelles d’installation de pilotes. Vous ne pouvez pas utiliser l’approvisionnement dynamique des volumes persistants avec les nœuds Fargate, mais vous pouvez utiliser l’approvisionnement statique.

  • Amazon EKS ne prend pas en charge Fargate Spot.

  • Vous ne pouvez pas monter des volumes Amazon EBS sur des pods Fargate.

  • Vous pouvez exécuter le contrôleur Amazon EBS CSI sur les nœuds Fargate, mais le DaemonSet du nœud Amazon EBS CSI ne peut fonctionner que sur les instances Amazon EC2.

  • Une fois qu’une tâche Kubernetes est marquée Completed ou Failed, les pods créés par la tâche continuent généralement d’exister. Ce comportement vous permet de consulter vos journaux et vos résultats, mais avec Fargate, vous devrez payer des frais si vous ne nettoyez pas le travail après coup.

    Pour supprimer automatiquement les pods associés après l’exécution ou l’échec d’une tâche, vous pouvez spécifier une durée à l’aide du contrôleur TTL (time-to-live). L’exemple suivant montre comment spécifier .spec.ttlSecondsAfterFinished dans votre manifeste de tâche.

    apiVersion: batch/v1 kind: Job metadata: name: busybox spec: template: spec: containers: - name: busybox image: busybox command: ["/bin/sh", "-c", "sleep 10"] restartPolicy: Never ttlSecondsAfterFinished: 60 # <-- TTL controller

Tableau de comparaison de Fargate

Critères AWS Fargate

Peut être déployé dans AWS Outposts

Non

Possibilité d'être déployé dans une zone locale AWS

Non

Possibilité d'exécuter des conteneurs qui nécessitent Windows

Non

Possibilité d'exécuter des conteneurs qui nécessitent Linux

Oui

Possibilité d'exécuter des applications nécessitant la puce Inferentia

Non

Possibilité d'exécuter des applications nécessitant un GPU

Non

Possibilité d'exécuter des applications nécessitant des processeurs Arm

Non

Possibilité d'exécuter AWS Bottlerocket

Non

Les pods partagent un environnement d’exécution du noyau avec d’autres pods

Non : chaque pod a un noyau dédié

Les pods partagent le processeur, la mémoire, le stockage et les ressources réseau avec d’autres pods.

Non : chaque pod dispose de ressources dédiées et peut être dimensionné indépendamment pour optimiser l’utilisation des ressources.

Les pods peuvent utiliser plus de matériel et de mémoire que demandé dans les spécifications des pods

Non : le pod peut toutefois être redéployé à l’aide d’une plus grande configuration de vCPU et de mémoire.

Doit déployer et gérer des instances Amazon EC2

Non

Doit sécuriser, entretenir et corriger le système d'exploitation des instances Amazon EC2

Non

Peut fournir des arguments bootstrap lors du déploiement d’un nœud, tels que des arguments kubelet supplémentaires.

Non

Possibilité d’affecter des adresses IP à des pods à partir d’un bloc d’adresse CIDR différent de l’adresse IP affectée au nœud.

Non

Possibilité d'accéder au nœud via SSH

Non : il n’y a pas de système d’exploitation hôte de nœud auquel se connecter par SSH.

Possibilité de déployer votre propre AMI personnalisée sur les nœuds

Non

Possibilité de déployer votre propre CNI personnalisée sur les nœuds

Non

Vous devez mettre à jour l'AMI du nœud par vous-même

Non

Vous devez mettre à jour la version du nœud Kubernetes par vous-même

Non : vous ne gérez pas les nœuds.

Possibilité d’utiliser le stockage Amazon EBS avec des pods

Non

Possibilité d’utiliser le stockage Amazon EFS avec des pods

Oui

Possibilité d’utiliser le stockage Amazon FSx pour Lustre avec des pods

Non

Possibilité d'utiliser le Network Load Balancer pour les services

Oui, lors de l’utilisation de la fonction Créer un Network Load Balancer

Les pods peuvent s'exécuter dans un sous-réseau public

Non

Possibilité d’affecter différents groupes de sécurité VPC à des pods individuels

Oui

Possibilité d'exécuter des ensembles de démons Kubernetes

Non

Prend en charge HostPort et HostNetwork dans le manifeste du pod

Non

AWS : disponibilité dans les régions

Quelques régions prises en charge par Amazon EKS

Possibilité d'exécuter des conteneurs sur des hôtes dédiés Amazon EC2

Non

Tarification

Coût d'une mémoire Fargate individuelle et d'une configuration CPU. Chaque pod a son propre coût. Pour plus d'informations, consultez Tarification de AWS Fargate.