Auto Scaling - Guida per l'utente di Eksctl

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Auto Scaling

Abilita Auto Scaling

Puoi creare un cluster (o un gruppo di nodi in un cluster esistente) con un ruolo IAM che consentirà l'uso del cluster autoscaler:

eksctl create cluster --asg-access

Questo flag imposta anche k8s.io/cluster-autoscaler/<clusterName> tag, quindi la scoperta k8s.io/cluster-autoscaler/enabled dei gruppi di nodi dovrebbe funzionare.

Una volta che il cluster è in esecuzione, sarà necessario installare Cluster Autoscaler stesso.

È inoltre necessario aggiungere quanto segue alle definizioni dei gruppi di nodi gestiti o non gestiti per aggiungere i tag necessari affinché Cluster Autoscaler possa scalare il gruppo di nodi:

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

Scalabilità verso l'alto da 0

Se desideri essere in grado di scalare il tuo gruppo di nodi da 0 e hai delle etichette and/or definite sui tuoi gruppi di nodi, dovrai propagarle come tag sui tuoi Auto Scaling Groups (). ASGs

Un modo per farlo è impostare i tag ASG nel campo delle definizioni dei gruppi di nodi. tags Ad esempio, dato un gruppo di nodi con le seguenti etichette e sfumature:

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

Dovresti aggiungere i seguenti tag ASG:

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"

Sia per i gruppi di nodi gestiti che per quelli non gestiti, questa operazione può essere eseguita automaticamente impostando propagateASGTags sutrue, che aggiungerà le etichette e le tonalità come tag al gruppo Auto Scaling:

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

Auto Scaling con riconoscimento della zona

Se i tuoi carichi di lavoro sono specifici per zona, dovrai creare gruppi di nodi separati per ogni zona. Questo perché cluster-autoscaler presuppone che tutti i nodi di un gruppo siano esattamente equivalenti. Quindi, ad esempio, se un evento di scale-up viene attivato da un pod che richiede un PVC specifico per una zona (ad esempio un volume EBS), il nuovo nodo potrebbe essere programmato nella AZ sbagliata e il pod non si avvierà.

Non avrai bisogno di un gruppo di nodi separato per ogni AZ se il tuo ambiente soddisfa i seguenti criteri:

  • Nessun requisito di archiviazione specifico per zona.

  • Nessun PodAffinity richiesto con topologia diversa dall'host.

  • Nessun NodeAffinity richiesto sull'etichetta della zona.

  • Nessun NodeSelector su un'etichetta di zona.

(Leggi di più qui e qui.)

Se soddisfi tutti i requisiti di cui sopra (e forse anche altri), dovresti essere al sicuro con un singolo gruppo di nodi che si estende su più nodi. AZs Altrimenti ti consigliamo di creare gruppi di nodi Single-AZ separati:

PRIMA:

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

DOPO:

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