Créer des nœuds Bottlerocket autogérés - 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.

Créer des nœuds Bottlerocket autogérés

Note

Les groupes de nœuds gérés peuvent offrir certains avantages pour votre cas d'utilisation. Pour de plus amples informations, consultez Simplifiez le cycle de vie des nœuds avec des groupes de nœuds gérés.

Cette rubrique décrit comment lancer des groupes Auto Scaling de nœuds Bottlerocket qui s’enregistrent auprès de votre cluster Amazon EKS. Bottlerocket est un système d'exploitation open source basé sur Linux d'AWS que vous pouvez utiliser pour exécuter des conteneurs sur des machines virtuelles ou des hôtes nus. Une fois que les nœuds ont rejoint le cluster, vous pouvez y déployer des applications Kubernetes. Pour plus d'informations sur Bottlerocket, consultez Utilisation d'une AMI Bottlerocket avec Amazon EKS sur GitHub et la prise en charge des AMI personnalisées dans la documentation de eksctl.

Pour plus d'informations sur les mises à niveau sur place, consultez Opérateur de mise à jour Bottlerocket sur GitHub.

Important
  • Les nœuds Amazon EKS sont des instances Amazon EC2 standard pour lesquelles vous êtes facturé en fonction du tarif normal pour les instances Amazon EC2. Pour plus d’informations, consultez Tarification Amazon EC2.

  • Vous pouvez lancer des nœuds Bottlerocket dans des clusters Amazon EKS étendus sur AWS Outposts, mais vous ne pouvez pas les lancer dans des clusters locaux sur AWS Outposts. Pour de plus amples informations, consultez Déployez Amazon EKS sur site avec AWS Outposts.

  • Vous pouvez déployer sur des instances Amazon EC2 avec des processeurs x86 ou Arm. Cependant, vous ne pouvez pas déployer sur des instances équipées de puces Inferentia.

  • Bottlerocket est compatible avec AWS CloudFormation. Cependant, il n’existe pas de modèle CloudFormation officiel pouvant être copié pour déployer des nœuds Bottlerocket pour Amazon EKS.

  • Les images Bottlerocket ne sont pas fournies avec un serveur SSH ou un shell. Vous pouvez utiliser des méthodes d'accès hors bande pour autoriser SSH à activer le conteneur d'administration et passer certaines étapes de configuration de l'action d'amorçage avec des données utilisateur. Pour plus d'informations, consultez ces sections dans le README.md de bottlerocket sur GitHub :

Cette procédure nécessite eksctl version 0.214.0 ou ultérieure. Vous pouvez vérifier votre version avec la commande suivante :

eksctl version

Pour obtenir des instructions sur l’installation ou la mise à niveau d’eksctl, consultez Installation dans la documentation eksctl. REMARQUE : cette procédure ne fonctionne que pour les clusters créés avec eksctl.

  1. Copiez les contenus suivants sur votre appareil. Remplacez my-cluster par le nom de votre cluster. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne peut pas dépasser 100 caractères. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster. Veuillez remplacer ng-bottlerocket par le nom de votre groupe de nœuds. Le nom du groupe de nœuds ne peut pas dépasser 63 caractères. Il doit commencer par une lettre ou un chiffre, mais peut également inclure des tirets et des traits de soulignement pour les autres caractères. Pour déployer sur des instances Arm, remplacez m5.large par un type d’instance Arm. Remplacez my-ec2-keypair-name par le nom d’une paire de clés SSH Amazon EC2 que vous pouvez utiliser pour vous connecter via SSH à vos nœuds après leur lancement. Si vous ne possédez pas déjà une paire de clés Amazon EC2, vous pouvez en créer une dans l’AWS Management Console. Pour plus d'informations, veuillez consulter la rubrique Paires de clés Amazon EC2 dans le Guide de l'utilisateur Amazon EC2. Remplacez toutes les valeurs d’exemple restantes par vos propres valeurs. Une fois les remplacements effectués, exécutez la commande modifiée pour créer le fichier bottlerocket.yaml.

    Si vous spécifiez un type d’instance Amazon EC2 Arm, consultez les considérations dans Amazon EKS optimisé pour les AMI Amazon Linux Arm avant le déploiement. Pour obtenir des instructions sur le déploiement avec une AMI personnalisée, consultez Création de Bottlerocket sur GitHub et Prise en charge des AMI personnalisées dans la documentation eksctl. Pour déployer un groupe de nœuds gérés, déployez une AMI personnalisée à l'aide d'un modèle de lancement. Pour de plus amples informations, consultez Personnaliser les nœuds gérés à l’aide de modèles de lancement.

    Important

    Pour déployer un groupe de nœuds sur AWS Outposts, AWS Wavelength ou les sous-réseaux AWS Local Zone, veuillez ne pas passer AWS Outposts, AWS Wavelength ou les sous-réseaux AWS Local Zone lorsque vous créez le cluster. Vous devez spécifier les sous-réseaux dans l'exemple suivant. Pour plus d'informations, consultez Créer un nodegroup à partir d'un fichier de configuration et Schéma du fichier de configuration dans la documentation eksctl. Remplacez region-code par la région AWS dans laquelle votre cluster se situe.

    cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.33' iam: withOIDC: true nodeGroups: - name: ng-bottlerocket instanceType: m5.large desiredCapacity: 3 amiFamily: Bottlerocket ami: auto-ssm iam: attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy ssh: allow: true publicKeyName: my-ec2-keypair-name EOF
  2. Deployez vos nœuds avec la commande suivante :

    eksctl create nodegroup --config-file=bottlerocket.yaml

    L'exemple qui suit illustre un résultat.

    Plusieurs lignes sont affichées pendant la création des nœuds. L'une des dernières lignes de sortie est similaire à la ligne d'exemple suivante.

    [✔] created 1 nodegroup(s) in cluster "my-cluster"
  3. (Facultatif) Créez un volume persistant Kubernetes sur un nœud Bottlerocket à l'aide du Plugin CSI Amazon EBS. Le pilote Amazon EBS par défaut s’appuie sur des outils de système de fichiers qui ne sont pas inclus dans Bottlerocket. Pour obtenir plus d'informations sur la création d'une classe de stockage à l'aide du pilote, consultez Utilisez le stockage de volumes Kubernetes avec Amazon EBS.

  4. (Facultatif) Par défaut, kube-proxy définit le paramètre de noyau nf_conntrack_max sur une valeur par défaut qui peut différer de ce que Bottlerocket a initialement défini au démarrage. Pour conserver le paramètre par défaut de Bottlerocket, modifiez la configuration kube-proxy à l’aide de la commande suivante.

    kubectl edit -n kube-system daemonset kube-proxy

    Ajoutez --conntrack-max-per-core et --conntrack-min aux arguments kube-proxy présentés dans l'exemple suivant. Un paramètre de 0 signifie aucun changement.

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --conntrack-max-per-core=0 - --conntrack-min=0
  5. (Facultatif) Déployer un exemple d'application pour tester vos nœuds Bottlerocket.

  6. Nous recommandons de bloquer l’accès des pods à IMDS si les conditions suivantes sont remplies :

    • Vous prévoyez d’attribuer des rôles IAM à tous vos comptes de service Kubernetes, afin que les pods ne disposent que des permissions strictement nécessaires.

    • Aucun pod du cluster n’a besoin d’accéder au service de métadonnées d’instance (IMDS) Amazon EC2 pour d’autres raisons, comme la récupération de la région AWS actuelle.

    Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.