Création et gestion de clusters - Guide de l'utilisateur d'Eksctl

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éation et gestion de clusters

Cette rubrique explique comment créer et supprimer des clusters EKS à l'aide d'Eksctl. Vous pouvez créer des clusters à l'aide d'une commande CLI ou en créant un fichier YAML de configuration de cluster.

Création d'un cluster simple

Créez un cluster simple à l'aide de la commande suivante :

eksctl create cluster

Cela créera un cluster EKS dans votre région par défaut (telle que spécifiée par la configuration de votre CLI AWS) avec un groupe de nœuds géré contenant deux nœuds m5.large.

eksctl crée désormais un groupe de nœuds géré par défaut lorsqu'aucun fichier de configuration n'est utilisé. Pour créer un groupe de nœuds autogéré, passez --managed=false à ou. eksctl create cluster eksctl create nodegroup

Considérations

  • Lorsque vous créez des clusters dansus-east-1, vous pouvez rencontrer unUnsupportedAvailabilityZoneException. Si cela se produit, copiez les zones suggérées et passez le --zones drapeau, par exemple :eksctl create cluster --region=us-east-1 --zones=us-east-1a,us-east-1b,us-east-1d. Ce problème peut se produire dans d'autres régions, mais il est moins courant. Dans la plupart des cas, vous n'aurez pas besoin d'utiliser le --zone drapeau.

Créer un cluster à l'aide du fichier de configuration

Vous pouvez créer un cluster à l'aide d'un fichier de configuration au lieu d'indicateurs.

Tout d'abord, créez cluster.yaml le fichier :

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: basic-cluster region: eu-north-1 nodeGroups: - name: ng-1 instanceType: m5.large desiredCapacity: 10 volumeSize: 80 ssh: allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key - name: ng-2 instanceType: m5.xlarge desiredCapacity: 2 volumeSize: 100 ssh: publicKeyPath: ~/.ssh/ec2_id_rsa.pub

Ensuite, exécutez cette commande :

eksctl create cluster -f cluster.yaml

Cela créera un cluster tel que décrit.

Si vous deviez utiliser un VPC existant, vous pouvez utiliser un fichier de configuration comme celui-ci :

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster-in-existing-vpc region: eu-north-1 vpc: subnets: private: eu-north-1a: { id: subnet-0ff156e0c4a6d300c } eu-north-1b: { id: subnet-0549cdab573695c03 } eu-north-1c: { id: subnet-0426fb4a607393184 } nodeGroups: - name: ng-1-workers labels: { role: workers } instanceType: m5.xlarge desiredCapacity: 10 privateNetworking: true - name: ng-2-builders labels: { role: builders } instanceType: m5.2xlarge desiredCapacity: 2 privateNetworking: true iam: withAddonPolicies: imageBuilder: true

Le nom du cluster ou du groupe de nœuds ne doit contenir que des caractères alphanumériques (en distinguant majuscules et minuscules) et des tirets. Il doit commencer par un caractère alphabétique et ne doit pas dépasser 128 caractères, sinon vous recevrez une erreur de validation. Pour plus d'informations, consultez la section Créer une pile depuis la CloudFormation console dans le guide de l'utilisateur d'AWS CLoud Formation.

Mettre à jour kubeconfig pour le nouveau cluster

Une fois le cluster créé, la configuration kubernetes appropriée sera ajoutée à votre fichier kubeconfig. Il s'agit du fichier que vous avez configuré dans la variable d'environnement KUBECONFIG ou ~/.kube/config par défaut. Le chemin d'accès au fichier kubeconfig peut être remplacé à l'aide de l'indicateur. --kubeconfig

Autres indicateurs qui peuvent modifier la façon dont le fichier kubeconfig est écrit :

pour restricteur type use valeur par défaut

--kubeconfig

chaîne

chemin pour écrire kubeconfig (incompatible avec --auto-kubeconfig)

$KUBECONFIG ou ~/.kube/config

--set-kubeconfig-context

bool

si vrai, alors le contexte actuel sera défini dans kubeconfig ; si un contexte est déjà défini, il sera remplacé

true

--auto-kubeconfig

bool

enregistrer le fichier kubeconfig par nom de cluster

true

--write-kubeconfig

bool

activer/désactiver l'écriture de kubeconfig

true

supprimer un cluster

Pour supprimer ce cluster, exécutez :

eksctl delete cluster -f cluster.yaml
Avertissement

Utilisez l'--waitindicateur lors des opérations de suppression pour vous assurer que les erreurs de suppression sont correctement signalées.

Sans cet --wait indicateur, eksctl n'effectuera qu'une opération de suppression sur la CloudFormation pile du cluster et n'attendra pas sa suppression. Dans certains cas, les ressources AWS utilisant le cluster ou son VPC peuvent entraîner l'échec de la suppression du cluster. Si votre suppression échoue ou si vous oubliez l'indicateur d'attente, vous devrez peut-être accéder à l' CloudFormation interface graphique et supprimer les piles eks qui s'y trouvent.

Avertissement

Les politiques PDB peuvent bloquer la suppression des nœuds lors de la suppression du cluster.

Lors de la suppression d'un cluster contenant des groupes de nœuds, les politiques Pod Disruption Budget (PDB) peuvent empêcher la suppression réussie des nœuds. Par exemple, les clusters aws-ebs-csi-driver installés comportent généralement deux pods dotés d'une politique PDB autorisant l'indisponibilité d'un seul pod à la fois, rendant l'autre pod inévitable lors de la suppression. Pour supprimer correctement le cluster dans ces scénarios, utilisez l'disable-nodegroup-evictionindicateur pour contourner les vérifications de politique PDB :

eksctl delete cluster -f cluster.yaml --disable-nodegroup-eviction

Consultez le examples/répertoire dans le GitHub dépôt eksctl pour d'autres exemples de fichiers de configuration.

Run à sec

La fonctionnalité d'exécution à sec permet de générer un ClusterConfig fichier qui ignore la création de clusters et génère un ClusterConfig fichier qui représente les options de la CLI fournies et contient les valeurs par défaut définies par eksctl.

Vous trouverez plus d'informations sur la page Dry Run.