Auto Scaling - Guía del usuario de Eksctl

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Auto Scaling

Activar Auto Scaling

Puede crear un clúster (o un grupo de nodos en un clúster existente) con la función de IAM que permita el uso del escalador automático de clústeres:

eksctl create cluster --asg-access

Este indicador también establece k8s.io/cluster-autoscaler/enabled y k8s.io/cluster-autoscaler/<clusterName> etiqueta, por lo que la detección de grupos de nodos debería funcionar.

Una vez que el clúster esté en ejecución, tendrá que instalar el propio Cluster Autoscaler.

También debes añadir lo siguiente a las definiciones de grupos de nodos gestionados o no gestionados para añadir las etiquetas necesarias para que el escalador automático de clústeres escale el grupo de nodos:

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

Ampliación desde 0

Si desea poder escalar su grupo de nodos desde 0 y tiene etiquetas and/or contaminadas definidas en sus grupos de nodos, necesitará propagarlas como etiquetas en sus grupos de Auto Scaling (). ASGs

Una forma de hacerlo es configurar las etiquetas ASG en el tags campo de las definiciones de los grupos de nodos. Por ejemplo, dado un grupo de nodos con las siguientes etiquetas y manchas:

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

Tendrías que añadir las siguientes etiquetas 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"

Tanto para los grupos de nodos gestionados como para los no gestionados, esto se puede hacer automáticamente propagateASGTags configurándolo entrue, lo que añadirá las etiquetas y las manchas como etiquetas al grupo Auto Scaling:

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

Auto Scaling con reconocimiento de zonas

Si tus cargas de trabajo son específicas de una zona, tendrás que crear grupos de nodos independientes para cada zona. Esto se debe a que se cluster-autoscaler supone que todos los nodos de un grupo son exactamente equivalentes. Por ejemplo, si un pod desencadena un evento de ampliación que necesita un PVC específico para una zona (p. ej., un volumen de EBS), es posible que el nuevo nodo se programe en la zona de disponibilidad incorrecta y que el pod no pueda iniciarse.

No necesitará un grupo de nodos independiente para cada zona de disponibilidad si su entorno cumple los siguientes criterios:

  • No hay requisitos de almacenamiento específicos por zona.

  • No se requiere PodAffinity con una topología distinta de la del host.

  • No se requiere NodeAffinity en la etiqueta de zona.

  • No hay ningún NodeSelector en la etiqueta de zona.

(Lea más aquí y aquí).

Si cumples todos los requisitos anteriores (y posiblemente otros), deberías tener cuidado con un solo grupo de nodos que abarque varios. AZs De lo contrario, querrás crear grupos de nodos independientes en una zona de disponibilidad única:

ANTES DE:

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

DESPUÉS DE:

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