Créez des nœuds autogérés Bottlerocket - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Note

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

Cette rubrique explique comment lancer des groupes Auto Scaling de nœuds Bottlerocket enregistrés auprès de votre cluster Amazon. EKS Bottlerocketest un système d'exploitation open source Linux basé sur AWS lequel vous pouvez exécuter des conteneurs sur des machines virtuelles ou des hôtes bare metal. Une fois que les nœuds ont rejoint le cluster, vous pouvez y déployer des applications Kubernetes. Pour plus d'informationsBottlerocket, consultez la section Utilisation d'un AMI support Bottlerocket AMI avec Amazon EKS activé GitHub et personnalisé dans la eksctl documentation.

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

Important
  • Les EKS nœuds Amazon sont des EC2 instances Amazon standard, et ils vous sont facturés sur la base des prix habituels des EC2 instances Amazon. Pour plus d'informations, consultez les EC2tarifs Amazon.

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

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

  • Bottlerocketest compatible avec AWS CloudFormation. Cependant, aucun CloudFormation modèle officiel ne peut être copié pour déployer Bottlerocket des nœuds pour AmazonEKS.

  • Les images Bottlerocket ne sont pas fournies avec un serveur SSH ou un shell. Vous pouvez utiliser des méthodes out-of-band d'accès pour autoriser l'SSHactivation du conteneur d'administration et pour passer certaines étapes de configuration d'amorçage avec les données utilisateur. Pour plus d'informations, consultez les sections suivantes dans le fichier bottlerocket.md sur README : GitHub

Pour lancer des nœuds Bottlerocket en utilisant eksctl

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

eksctl version

Pour les instructions d'installation ou de mise à niveau de eksctl, consultez la rubrique Installation dans la documentation eksctl.

Note

Cette procédure fonctionne uniquement 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 doit pas dépasser 100 caractères. Le nom doit être unique dans le Région AWS et dans Compte AWS lequel vous créez le cluster. Remplacer ng-bottlerocket avec un nom pour 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 effectuer un déploiement sur des instances Arm, remplacez m5.large par un type d'instance Arm. my-ec2-keypair-nameRemplacez-le par le nom d'une paire de EC2 SSH clés Amazon que vous pourrez utiliser pour vous connecter à vos nœuds après leur lancement. SSH Si vous ne possédez pas encore de paire de EC2 clés Amazon, vous pouvez en créer une dans le AWS Management Console. Pour plus d'informations, consultez les paires de EC2 clés Amazon dans le guide de EC2 l'utilisateur Amazon. Remplacez tout le reste exemples de valeurs avec 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'EC2instance Arm Amazon, passez en revue les considérations à prendre en compte Amazon a EKS optimisé Arm Amazon Linux AMIs avant le déploiement. Pour obtenir des instructions sur le déploiement à l'aide d'un support personnaliséAMI, consultez Bottlerocket la section GitHub Création d'un AMIsupport personnalisé dans la eksctl documentation. Pour déployer un groupe de nœuds géré, déployez un nœud personnalisé AMI à l'aide d'un modèle de lancement. Pour de plus amples informations, veuillez consulter Personnalisez les nœuds gérés avec des modèles de lancement.

    Important

    Pour déployer un groupe de nœuds ou des sous-réseaux de zone AWS locale, ne transmettez pas AWS Outposts AWS Wavelength, ou des sous-réseaux de zone AWS locale lorsque vous créez le cluster. AWS Outposts AWS Wavelength 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. region-codeRemplacez-le par Région AWS celui dans lequel se trouve votre cluster.

    cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.30' 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 Kubernetes persistant sur un Bottlerocket nœud à l'aide du EBSCSIplugin Amazon. Le EBS pilote Amazon par défaut repose sur des outils de système de fichiers qui ne sont pas inclus dansBottlerocket. Pour obtenir plus d'informations sur la création d'une classe de stockage à l'aide du pilote, consultez Stockez Kubernetes des volumes 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 avec 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éployez un exemple d'application pour tester vos nœuds Bottlerocket.

  6. Nous vous recommandons de bloquer l'Podaccès à IMDS si les conditions suivantes sont réunies :

    • Vous prévoyez d'attribuer IAM des rôles à tous vos comptes de Kubernetes service afin de Pods ne disposer que des autorisations minimales dont ils ont besoin.

    • Aucun Pods membre du cluster n'a besoin d'accéder au service de métadonnées d'EC2instance Amazon (IMDS) pour d'autres raisons, telles que la récupération du courant Région AWS.

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