Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Cloud Container Engine/ Guía del usuario/ Auto Scaling/ Ajuste de un nodo/ Creación de una política del ajuste de nodos
Actualización más reciente 2024-09-10 GMT+08:00

Creación de una política del ajuste de nodos

CCE proporciona el ajuste automático a través del complemento del autoscaler. Los nodos con diferentes especificaciones se pueden agregar automáticamente a través de AZ bajo demanda.

Si una política de ajuste de nodos y la configuración en el complemento de autoscaler tienen efecto al mismo tiempo, por ejemplo, hay pods que no se pueden programar y el valor de una métrica alcanza el umbral al mismo tiempo, la expansión horizontal se realiza primero para los pods no programados.

  • Si la expansión horizontal tiene éxito para los pods no programables, el sistema omite la lógica de reglas basada en métricas y entra en el siguiente bucle.
  • Si la expansión horizontal falla para los pods no programables, se ejecuta la regla basada en métricas.

Requisitos previos

Antes de utilizar la función de ajuste de nodos, debe instalar el complemento de autoscaler de v1.13.8 o posterior en el clúster.

Notas y restricciones

  • Solo los pools de nodo de pago por uso admiten el ajuste automático.
  • Las políticas de ajuste automático se aplican a los grupos de nodos. Cuando el número de nodos en un grupo de nodos es 0 y la política de ajuste se basa en el uso de CPU o memoria, el ajuste de nodos no se activa.
  • La reducción del nodo causará la pérdida de datos de PVC/PV para los PV locales asociados con el nodo. Estos PVC y PV no se pueden restaurar o utilizar de nuevo. En una reducción de nodo, el pod que utiliza el PV local se desaloja del nodo. Se crea un nuevo pod y permanece en el estado pendiente. Esto se debe a que el PVC utilizado por el pod tiene una etiqueta de nodo, debido a lo cual el pod no se puede programar.

Procedimiento

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster.
  2. Elija Node Scaling en el panel de navegación.

    • Si aparece Uninstalled junto al nombre del complemento, haga clic en Install y configure los parámetros del complemento según sea necesario y haga clic en Install para instalar el complemento.
    • Si aparece Installed junto al nombre del complemento, este complemento se ha instalado.

  3. Haga clic en Create Node Scaling Policy en la esquina superior derecha y establezca los parámetros de la siguiente manera:

    • Policy Name: nombre de la política que se va a crear, que se puede personalizar.
    • Associated Node Pools: Seleccione el grupo de nodos que se va a asociar. Puede asociar varios grupos de nodos para utilizar la misma política de ajuste.
    • Rules: Haga clic en Add Rule. En el cuadro de diálogo que se muestra, establezca los siguientes parámetros:

      Rule Name: Ingrese un nombre de regla.

      Rule Type: Puede seleccionar Metric-based o Periodic. Las diferencias entre los dos tipos son las siguientes:

      • Metric-based:
        Condition: Seleccione CPU allocation rate o Memory allocation rate e introduzca un valor. El valor debe ser mayor que el porcentaje de reducción configurado en el complemento del autoscaler.
        • Asignación de recursos (%) = Recursos solicitados por pods en el grupo de nodos/Recursos asignados a pods en el grupo de nodos
        • Si varias reglas cumplen las condiciones, las reglas se ejecutan en cualquiera de los siguientes modos:

          Si se configuran reglas basadas en CPU allocation rate y memory allocation rate y dos o más reglas cumplen las condiciones de la expansión horizontal, se ejecutará la regla que agregará la mayoría de los nodos.

          Si se configura una regla basada en CPU allocation rate y a periodic rule y ambas cumplen con las condiciones de la expansión horizontal, una de ellas se ejecutará aleatoriamente. La regla ejecutada primero (regla A) cambia el grupo de nodos al estado de ajuste. Como resultado, la otra regla (regla B) no se puede ejecutar. Después de ejecutar la regla A y de que el estado del grupo de nodos se vuelva normal, la regla B no se ejecutará.

        • Si se configuran reglas basadas en CPU allocation rate y memory allocation rate, el período de detección de políticas varía con la lógica de procesamiento de cada bucle del complemento de autoscaler. La expansión horizontal se activa una vez que se cumplen las condiciones, pero está limitada por otros factores tales como el intervalo de enfriamiento y el estado del grupo de nodos.
      • Periodic:

        Trigger Time: Puede seleccionar un punto de tiempo específico cada día, cada semana, cada mes o cada año.

      Action: Establezca una acción que se realizará cuando se cumpla la condición de activador.

      Puede hacer clic de nuevo en Add Rule para agregar más políticas de ajuste de nodos. Puede agregar un máximo de una regla basada en el uso de CPU y una regla basada en el uso de memoria. El número total de reglas no puede exceder de 10.

  4. Haga clic en OK.

Restricciones en la reducción horizontal

Solo puede establecer políticas de reducción de nodo cuando instale el complemento de autoscaler.

La reducción horizontal de nodo solo puede activarse mediante la tasa de asignación de recursos. Cuando las velocidades de asignación de CPU y memoria en un clúster son inferiores a los umbrales especificados (establecidos cuando se instala o modifica el complemento del autoscaler), se activa la reducción horizontal para los nodos del grupo de nodos (esta función se puede deshabilitar), como se muestra en Figura 1.

Figura 1 Configuración automática de la reducción horizontal

Ejemplo de YAML

A continuación se muestra un ejemplo de YAML de una política de ajuste de nodos:

apiVersion: autoscaling.cce.io/v1alpha1
kind: HorizontalNodeAutoscaler
metadata:
  creationTimestamp: "2020-02-13T12:47:49Z"
  generation: 1
  name: xxxx
  namespace: kube-system
  resourceVersion: "11433270"
  selfLink: /apis/autoscaling.cce.io/v1alpha1/namespaces/kube-system/horizontalnodeautoscalers/xxxx
  uid: c2bd1e1d-60aa-47b5-938c-6bf3fadbe91f
spec:
  disable: false
  rules:
  - action:
      type: ScaleUp
      unit: Node
      value: 1
    cronTrigger:
      schedule: 47 20 * * *
    disable: false
    ruleName: cronrule
    type: Cron
  - action:
      type: ScaleUp
      unit: Node
      value: 2
    disable: false
    metricTrigger:
      metricName: Cpu
      metricOperation: '>'
      metricValue: "40"
      unit: Percent
    ruleName: metricrule
    type: Metric
  targetNodepoolIds:
  - 7d48eca7-3419-11ea-bc29-0255ac1001a8
Tabla 1 Parámetros de clave

Parámetro

Tipo

Descripción

spec.disable

Bool

Si se debe habilitar la política de ajuste. Este parámetro tiene efecto para todas las reglas de la política.

spec.rules

Array

Todas las reglas de una política de ajuste.

spec.rules[x].ruleName

String

Nombre de la regla.

spec.rules[x].type

String

Tipo de la regla. Actualmente, son compatibles con Cron y Metric.

spec.rules[x].disable

Bool

Cambio de la regla. Actualmente, solo se admite false.

spec.rules[x].action.type

String

Tipo de acción de regla. Actualmente, solo se admite ScaleUp.

spec.rules[x].action.unit

String

Unidad de acción de reglas. Actualmente, solo se admite Node.

spec.rules[x].action.value

Integer

Valor de acción de regla.

spec.rules[x].cronTrigger

/

Opcional. Este parámetro solo es válido en las reglas periódicas.

spec.rules[x].cronTrigger.schedule

String

Expresión de Cron de una regla periódica.

spec.rules[x].metricTrigger

/

Opcional. Este parámetro solo es válido en reglas basadas en métricas.

spec.rules[x].metricTrigger.metricName

String

Métrica de una regla basada en métricas. Actualmente, son compatibles con Cpu y Memory.

spec.rules[x].metricTrigger.metricOperation

String

Operador de comparación de una regla basada en métricas. Actualmente, solo se admite >.

spec.rules[x].metricTrigger.metricValue

String

Umbral métrico de una regla basada en métricas. El valor puede ser cualquier entero de 1 a 100 y debe ser una cadena de caracteres.

spec.rules[x].metricTrigger.Unit

String

Unidad del umbral de regla basado en métricas. Actualmente, solo se admite %.

spec.targetNodepoolIds

Array

Todos los grupos de nodos asociados a la política de ajuste.

spec.targetNodepoolIds[x]

String

ID del grupo de nodos asociado a la política de ajuste.