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
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.
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"]