Auto Scaling - 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.

Auto Scaling

Activer Auto Scaling

Vous pouvez créer un cluster (ou un groupe de nœuds dans un cluster existant) avec le rôle IAM qui permettra d'utiliser l'autoscaler du cluster :

eksctl create cluster --asg-access

Cet indicateur définit k8s.io/cluster-autoscaler/enabled et k8s.io/cluster-autoscaler/<clusterName> étiquette également, de sorte que la découverte des groupes de nœuds devrait fonctionner.

Une fois le cluster lancé, vous devez installer Cluster Autoscaler lui-même.

Vous devez également ajouter les éléments suivants à vos définitions de groupes de nœuds gérés ou non gérés pour ajouter les balises requises pour que le Cluster Autoscaler puisse redimensionner le groupe de nœuds :

nodeGroups: - name: ng1-public iam: withAddonPolicies: autoScaler: true

Mise à l'échelle à partir de 0

Si vous souhaitez pouvoir redimensionner votre groupe de nœuds à partir de 0 et que vous avez défini des and/or taches d'étiquettes sur vos groupes de nœuds, vous devrez les propager sous forme de balises sur vos Auto Scaling Groups (). ASGs

Pour ce faire, vous pouvez définir les balises ASG dans le tags champ de définition de vos groupes de nœuds. Par exemple, étant donné un groupe de nœuds avec les étiquettes et les nuances suivantes :

nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: key: feaster value: "true" effect: NoSchedule

Vous devez ajouter les balises ASG suivantes :

nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: feaster: "true:NoSchedule" tags: k8s.io/cluster-autoscaler/node-template/label/my-cool-label: pizza k8s.io/cluster-autoscaler/node-template/taint/feaster: "true:NoSchedule"

Pour les groupes de nœuds gérés et non gérés, cela peut être fait automatiquement en propagateASGTags réglant surtrue, ce qui ajoutera les étiquettes et les nuances sous forme de balises au groupe Auto Scaling :

nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: feaster: "true:NoSchedule" propagateASGTags: true

Auto Scaling adapté aux zones

Si vos charges de travail sont spécifiques à une zone, vous devez créer des groupes de nœuds distincts pour chaque zone. Cela est dû au fait que l'on cluster-autoscaler suppose que tous les nœuds d'un groupe sont exactement équivalents. Ainsi, par exemple, si un événement de mise à l'échelle est déclenché par un pod qui a besoin d'un PVC spécifique à une zone (par exemple un volume EBS), le nouveau nœud peut être planifié dans la mauvaise AZ et le pod ne démarrera pas.

Vous n'aurez pas besoin d'un groupe de nœuds distinct pour chaque AZ si votre environnement répond aux critères suivants :

  • Aucune exigence de stockage spécifique à une zone.

  • Aucune PodAffinity requise avec une topologie autre que l'hôte.

  • Aucune affinité de nœud requise sur l'étiquette de zone.

  • Aucun NodeSelector sur une étiquette de zone.

(En savoir plus ici et ici.)

Si vous répondez à toutes les exigences ci-dessus (et éventuellement à d'autres), vous devriez être en sécurité avec un seul groupe de nœuds qui s'étend sur plusieurs. AZs Sinon, vous souhaiterez créer des groupes de nœuds mono-AZ distincts :

AVANT :

nodeGroups: - name: ng1-public instanceType: m5.xlarge # availabilityZones: ["eu-west-2a", "eu-west-2b"]

APRÈS :

nodeGroups: - name: ng1-public-2a instanceType: m5.xlarge availabilityZones: ["eu-west-2a"] - name: ng1-public-2b instanceType: m5.xlarge availabilityZones: ["eu-west-2b"]