Escala automática del cluster

Al activar el complemento de escala automática del cluster, puede transferir los siguientes pares clave/valor como argumentos.

Argumentos de configuración comunes a todos los complementos del cluster
Clave (API y CLI) Nombre mostrado de clave (consola) Descripción Necesario/Opcional Valor por defecto Valor de ejemplo
affinity afinidad

Grupo de reglas de programación de afinidad.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Operador de GPU de Nvidia
Posibles equivalentes:
  • Detección de funciones de nodo, utilice master.affinity
  • Operador de red NVIDIA, utilice operator.affinity
  • SMB de controlador CSI, utilice contoller.affinity
Opcional nulo nulo
nodeSelectors selectores de nodos

Puede utilizar selectores de nodos y etiquetas de nodos para controlar los nodos de trabajador en los que se ejecutan los pods de complementos.

Para que un pod se ejecute en un nodo, el selector de nodos del pod debe tener la misma clave/valor que la etiqueta del nodo.

Defina nodeSelectors en un par clave/valor que coincida con el selector de nodos del pod y la etiqueta del nodo de trabajador.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Operador de GPU de NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • Detección de funciones de nodo, utilice worker.nodeSelector
  • Operador de red NVIDIA, utilice operator.nodeSelectors
Opcional nulo {"foo":"bar", "foo2": "bar2"}

El pod solo se ejecutará en nodos que tengan la etiqueta foo=bar o foo2=bar2.

numOfReplicas numOfReplicas Número de réplicas del despliegue del complemento.
No utilizado por:
  • Plugin de GPU de AMD
  • Operador de GPU de NVIDIA
  • Operador de red NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • CoreDNS, utilice nodesPerReplica
  • Detección de funciones de nodo, utilice master.replicaCount
Obligatorio 1

Crea una réplica del despliegue del complemento por cluster.

2

Crea dos réplicas del despliegue del complemento por cluster.

rollingUpdate rollingUpdate

Controla el comportamiento deseado de la actualización sucesiva mediante maxSurge y maxUnavailable.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Detección de funciones de nodo
  • Operador de red NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • Operador de GPU de NVIDIA, utilice daemonsets.rollingUpdate.maxUnavailable
Opcional nulo nulo
tolerations tolerancias

Puede utilizar contaminantes y tolerancias para controlar los nodos de trabajador en los que se ejecutan los pods de complementos.

Para que un pod se ejecute en un nodo que tenga un tinte, el pod debe tener una tolerancia correspondiente.

Defina tolerations en un par clave/valor que coincida con la tolerancia del pod y el mantenimiento del nodo de trabajador.

Formato JSON en texto sin formato o codificado con Base64.

Posibles equivalentes:
  • Detección de funciones de nodo, utilice master.tolerations y/o worker.tolerations
  • Operador de GPU de NVIDIA, utilice daemonsets.tolerations
  • Operador de red NVIDIA, utilice operator.tolerations
  • SMB de controlador CSI, utilice controller.tolerations
Opcional nulo [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Solo los pods que tienen esta tolerancia se pueden ejecutar en nodos de trabajador que tengan el mantenimiento tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Cómo difundir vainas coincidentes entre la topología dada.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Detección de funciones de nodo
  • Operador de GPU de NVIDIA
  • Operador de red NVIDIA
  • SMB de controlador CSI
Opcional nulo nulo
Argumentos de configuración específicos de este complemento de cluster
Clave (API y CLI) Nombre mostrado de clave (consola) Descripción Necesario/Opcional Valor por defecto Valor de ejemplo
annotations anotaciones

Anotaciones para transferir al despliegue de la escala automática del cluster.

Por ejemplo, "{\"prometheus.io/scrape\":\"true\",\"prometheus.io/port\":\"8086\"}"

Formato JSON en texto sin formato o codificado con Base64.

Opcional ""
authType authType Tipo de autenticación que utiliza la escala automática del cluster al realizar solicitudes, como una de las siguientes:
  • instance especifica el principal de instancia
  • workload especifica la identidad de la carga de trabajo
Obligatorio instance
balanceSimilarNodeGroups balanceSimilarNodeGroups Detecte grupos de nodos similares y equilibre el número de nodos entre ellos. Opcional false
balancingIgnoreLabel balancingIgnoreLabel Defina una etiqueta de nodo que se debe ignorar al considerar la similitud de grupos de nodos. Una etiqueta por incidencia de indicador. El formato es label1, label2. Opcional ""
balancingLabel balancingLabel Defina una etiqueta de nodo que se utilizará al comparar la similitud de grupos de nodos. Si se establece, el resto de la lógica de comparación se desactiva y solo se tienen en cuenta las etiquetas al comparar grupos. Una etiqueta por incidencia de indicador. El formato es label1, label2. Opcional ""
cluster-autoscaler.ContainerResources recursos de contenedor de escala automática de cluster

Puede especificar las cantidades de recursos que solicitan los contenedores complementarios y establecer límites de uso de recursos que los contenedores complementarios no pueden superar.

Formato JSON en texto sin formato o codificado con Base64.

Opcional nulo {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Cree contenedores complementarios que soliciten 100 millicores de CPU y 100 mebibytes de memoria. Limite los contenedores complementarios a 500 millicores de CPU y 200 mebibytes de memoria.

cordonNodeBeforeTerminating (No se muestra en la consola) Debe acordonar los nodos de CA antes de terminar durante el proceso de escala descendente. Opcional false
coresTotal (No se muestra en la consola) Número mínimo y máximo de núcleos en el cluster, con el formato <min>:<max>. La escala automática del cluster no ampliará el cluster más allá de estos números. Opcional 0:320000
daemonsetEvictionForEmptyNodes (No se muestra en la consola) Si los pods DaemonSet se terminarán correctamente desde nodos vacíos. Opcional false
daemonsetEvictionForOccupiedNodes (No se muestra en la consola) Si los pods DaemonSet se terminarán correctamente desde nodos que no están vacíos. Opcional true
debuggingSnapshotEnabled (No se muestra en la consola) Si la instantánea de depuración de la función de escala automática del cluster está activada. Opcional false
emitPerNodegroupMetrics (No se muestra en la consola) Si es verdadero, emita métricas por grupo de nodos. Opcional false
enforceNodeGroupMinSize (No se muestra en la consola) Si es necesario, CA debe escalar verticalmente el grupo de nodos al tamaño mínimo configurado. Opcional false
estimator (No se muestra en la consola) Tipo de estimador de recursos que se utilizará en la escala vertical. Opcional binpacking
expander expansor Tipo de expansor de grupo de nodos que se utilizará en la ampliación.

Tenga en cuenta que expander=price no está soportado.

Opcional random
expendablePodsPriorityCutoff (No se muestra en la consola) Los pods con prioridad por debajo del corte serán prescindibles. Pueden ser asesinados sin ninguna consideración durante la reducción y no causan aumento. Los pod con prioridad nula (PodPriority desactivado) no son fungibles. Opcional -10
ignoreDaemonsetsUtilization (No se muestra en la consola) Si se ignorarán los pods DaemonSet al calcular el uso de recursos para la reducción vertical. Opcional false
ignoreMirrorPodsUtilization (No se muestra en la consola) Si los pods duplicados se ignorarán al calcular el uso de recursos para la reducción vertical. Opcional false
leaderElect (No se muestra en la consola) Iniciar un cliente de elección de líder y ganar liderazgo antes de ejecutar el bucle principal. Active esta opción al ejecutar componentes replicados para alta disponibilidad. Opcional true
leaderElectLeaseDuration (No se muestra en la consola) La duración que los candidatos que no son líderes esperarán después de observar una renovación de liderazgo hasta intentar adquirir el liderazgo de un líder liderado pero no renovado. Es la duración máxima que un líder puede detener antes de ser reemplazado por otro candidato. Esto solo es aplicable si la elección de líder está habilitada. Opcional 15s
leaderElectRenewDeadline (No se muestra en la consola) El intervalo entre los intentos de la escala automática del cluster activo para renovar una ranura de liderazgo antes de que deje de conducir. Debe ser menor o igual que la duración del leasing. Esto solo es aplicable si la elección de líder está habilitada. Opcional 10s
leaderElectResourceLock (No se muestra en la consola) Tipo de objeto de recurso que se utiliza para bloquear durante la elección de líder. Las opciones soportadas son leases (valor por defecto), endpoints, endpointsleases, configmaps y configmapsleases. Opcional leases
leaderElectRetryPeriod (No se muestra en la consola) La duración que los clientes deben esperar entre intentar la adquisición y la renovación de un liderazgo. Esto solo es aplicable si la elección de líder está habilitada. Opcional 2s
maxAutoprovisionedNodeGroupCount (No se muestra en la consola) Número máximo de grupos aprovisionados automáticamente en el cluster. Opcional 15
maxEmptyBulkDelete maxEmptyBulkDelete Número máximo de nodos vacíos que se pueden suprimir al mismo tiempo. Opcional 10
maxFailingTime (No se muestra en la consola) Tiempo máximo desde la última ejecución correcta de la escala automática registrada antes del reinicio automático. Opcional 15m
maxGracefulTerminationSec (No se muestra en la consola) Número máximo de segundos que la CA espera la terminación del pod al intentar reducir verticalmente un nodo. Opcional 600
maxInactivity (No se muestra en la consola) Tiempo máximo desde la última actividad de escala automática registrada antes del reinicio automático. Opcional 10m
maxNodeProvisionTime maxNodeProvisionTime Tiempo máximo que espera CA para que se aprovisione el nodo. Opcional 15m
maxNodesTotal (No se muestra en la consola) Número máximo de nodos en todos los pools de nodos. La escala automática del cluster no ampliará el cluster más allá de este número. Opcional 0
maxTotalUnreadyPercentage (No se muestra en la consola) Porcentaje máximo de nodos no listos en el cluster. Una vez que se supera, CA detiene las operaciones. Opcional 45
memoryTotal (No se muestra en la consola) Número mínimo y máximo de gigabytes de memoria en el cluster, con el formato <min>:<max>. La escala automática del cluster no ampliará el cluster más allá de estos números. Opcional 0:6400000
minReplicaCount (No se muestra en la consola) Número mínimo o réplicas que un juego de réplicas o un controlador de replicación deben tener para permitir la supresión de sus pods en la reducción vertical. Opcional 0
nodes nodos

Lista del número mínimo de nodos, el número máximo de nodos y el OCID del pool de nodos que va a gestionar la escala automática del cluster.

El formato es <min>:<max>:<node-pool1-ocid>, <min>:<max>:<node-pool2-ocid>.

Utilice nodes o nodeGroupAutoDiscovery, pero no ambos.

Formato JSON en texto sin formato o codificado con Base64.

Necesario, si nodeGroupAutoDiscovery no está definido ""
nodeGroupAutoDiscovery (No se muestra en la consola)

Lista de pares clave/valor de etiqueta, número mínimo de nodos, número máximo de nodos y el OCID del compartimento en el que se encuentra el pool de nodos que va a gestionar la escala automática del cluster.

El formato es compartmentId:<compartment-ocid>,nodepoolTags:<tagKey1>=<tagValue1>&<tagKey2>=<tagValue2>,min:<min-nodes>,max:<max-nodes>

Utilice nodeGroupAutoDiscovery o nodes, pero no ambos.

Tenga en cuenta que las etiquetas de pool de nodos minSize y maxSize siempre tienen prioridad sobre min:{{<min-nodes>}} y max:{{<max-nodes>}}, respectivamente.

Compatible con la escala automática de cluster versión 1.30.3, versión 1.31.1, versión 1.32.0 y posteriores.

Formato JSON en texto sin formato o codificado con Base64.

Necesario, si no se ha definido nodes
okTotalUnreadyCount (No se muestra en la consola) Número de nodos no listos permitidos, independientemente de maxTotalUnreadyPercentage. Opcional 3
recordDuplicatedEvents (No se muestra en la consola) Active la escala automática para imprimir eventos duplicados en una ventana de 5 minutos. Opcional false
scaleDownCandidatesPoolMinCount (No se muestra en la consola)

Número mínimo de nodos que se consideran candidatos no vacíos adicionales para la reducción vertical cuando algunos candidatos de la iteración anterior ya no son válidos. Al calcular el tamaño del grupo para los candidatos adicionales que tomamos.

max(#nodes * scale-down-candidates-pool-ratio,
              scale-down-candidates-pool-min-count)
Obligatorio 50
scaleDownCandidatesPoolRatio (No se muestra en la consola) Ratio de nodos que se consideran candidatos no vacíos adicionales para la reducción vertical cuando algunos candidatos de la iteración anterior ya no son válidos. Un valor más bajo significa una mejor capacidad de respuesta de CA, pero una latencia de reducción vertical más lenta. Un valor más alto puede afectar al rendimiento de CA con clusters grandes (cientos de nodos). Establézcalo en 1.0 para desactivar esta heurística: CA tomará todos los nodos como candidatos adicionales. Obligatorio 0.1
scaleDownDelayAfterAdd scaleDownDelayAfterAdd Cuánto tiempo después de escalar verticalmente se reanuda la evaluación de reducción vertical. Obligatorio 10m
scaleDownDelayAfterDelete (No se muestra en la consola) Cuánto tiempo después de la supresión del nodo se reanuda la evaluación de reducción vertical, el valor por defecto es scan-interval (intervalo de exploración). Obligatorio 10s
scaleDownDelayAfterFailure (No se muestra en la consola) Cuánto tiempo después del fallo de reducción vertical se reanuda la evaluación de reducción vertical. Obligatorio 3m
scaleDownEnabled scaleDownEnabled ¿Debe CA reducir verticalmente el cluster? Opcional true
scaleDownNonEmptyCandidatesCount (No se muestra en la consola) Número máximo de nodos no vacíos considerados en una iteración como candidatos para la reducción con drenaje. Un valor más bajo significa una mejor capacidad de respuesta de CA, pero una latencia de reducción vertical más lenta. Un valor más alto puede afectar al rendimiento de CA con clusters grandes (cientos de nodos). Establézcalo en un valor no positivo para desactivar esta heurística: CA no limitará el número de nodos que considera. Obligatorio 30
scaleDownUnneededTime scaleDownUnneededTime Cuánto tiempo se debe dejar de necesitar un nodo antes de que sea elegible para la reducción vertical. Obligatorio 10m
scaleDownUnreadyTime (No se muestra en la consola) Cuánto tiempo se debe dejar de necesitar un nodo no preparado antes de que sea elegible para la reducción vertical. Obligatorio 20m
scaleDownUtilizationThreshold (No se muestra en la consola) Nivel de utilización de nodos, definido como la suma de los recursos solicitados dividida por la capacidad, por debajo de la cual se puede considerar la reducción vertical de un nodo. Obligatorio 0.5
scanInterval scanInterval Con qué frecuencia se vuelve a evaluar el cluster para escalar o reducir verticalmente. Opcional 10s
skipNodesWithCustomControllerPods (No se muestra en la consola) Si true, la escala automática del cluster nunca suprimirá nodos con pods propiedad de controladores personalizados. Opcional true
skipNodesWithLocalStorage (No se muestra en la consola) Si es true, la escala automática del cluster nunca suprimirá nodos con pods con almacenamiento local, por ejemplo, EmptyDir o HostPath. Opcional true
skipNodesWithSystemPods (No se muestra en la consola) Si es true, la escala automática del cluster nunca suprimirá nodos con pods de kube-system (excepto DaemonSet o pods de reflejo). Opcional true
statusConfigMapName (No se muestra en la consola) Nombre del estado ConfigMap que escribe CA. Opcional cluster-autoscaler-status
stderrthreshold (No se muestra en la consola) Umbral de gravedad de log, más allá del cual se envían los logs a stderr. Por ejemplo, si se define en error, todos los logs con una gravedad superior a error se envían a stderr. Opcional info
unremovableNodeRecheckTimeout unremovableNodeRecheckTimeout Timeout antes de volver a comprobar un nodo que no se pudo eliminar antes. Obligatorio 5m
v (No se muestra en la consola) El número para el nivel de detalle del registro. Opcional 0
writeStatusConfigmap (No se muestra en la consola) ¿Debe CA escribir información de estado en un mapa de configuración? Opcional true
Consideraciones de cluster grande

En la siguiente tabla, se describen las consideraciones para configurar este complemento de cluster en clusters de gran tamaño.

Nombre del Argumento Número de nodos ordenado de roles Descripción A medida que aumenta el tamaño del cluster Riesgos Recomendación
cluster-autoscaler.ContainerResources Y

Define las solicitudes de CPU y memoria y los límites para el pod de escala automática del cluster.

A medida que aumenta el tamaño del cluster, la escala automática del cluster experimenta:

  • Crecimiento significativo en la evaluación de estado de cluster para nodos y pods
  • Más simulaciones de programación
  • Mayor uso de memoria y CPU
  • Mayor latencia de toma de decisiones para las operaciones de escala o reducción vertical

Si los recursos tienen un tamaño insuficiente:

  • Es posible que el pod de escala automática del cluster se termine porque supera su límite de memoria.
  • Las decisiones de escala se pueden retrasar, dejando los pods en el estado Pending .
  • Los ciclos de exploración de cluster pueden ralentizarse, lo que reduce la capacidad de respuesta.
  • Es posible que se acumule una acumulación de vainas no programables.

Aumente los recursos de CPU y memoria según corresponda:

  • Aumentar la memoria para procesar el estado de un cluster grande.
  • Aumente la CPU para realizar simulaciones de programación y tomar decisiones de ampliación más rápidamente.
balanceSimilarNodeGroups N

Controla si la escala automática del cluster equilibra los nodos en pools de nodos similares.

Los clusters grandes suelen utilizar varios pools de nodos, lo que aumenta la posibilidad de una escala desigual en los pools.

La activación de este argumento agrega sobrecarga de cálculo y aumenta ligeramente la complejidad de las decisiones de escalado.

Si este argumento está desactivado:

  • Los nodos se pueden distribuir de forma desigual en pools de nodos similares.
  • Los pools de nodos específicos pueden convertirse en zonas activas.
  • Es posible que se reduzca la tolerancia a fallos.

Active este argumento para entornos con varios pools de nodos y para escenarios de alta disponibilidad que requieren una escala equilibrada.

numOfReplicas N

Controla el número de pods de escala automática del cluster.

La escala automática del cluster utiliza la elección de líder. Solo una instancia activa toma decisiones de ampliación, mientras que otras réplicas proporcionan alta disponibilidad.

Si el recuento es demasiado bajo, un fallo de nodo, un bloqueo de pod o una actualización pueden detener temporalmente las decisiones de escala automática. Esto puede retrasar la ampliación de nodos para cargas de trabajo pendientes y la reducción vertical de nodos sin utilizar hasta que la escala automática del cluster vuelva a estar disponible.

Utilice dos o tres réplicas para proporcionar alta disponibilidad.

affinity / nodeSelectors / tolerations N

La escala automática del cluster es un componente crítico del plano de control.

La colocación de pod afecta a la estabilidad y fiabilidad de la escala automática del cluster.

Si estos argumentos no están configurados correctamente:

  • La escala automática del cluster puede ejecutarse en nodos inestables.
  • La escala automática del cluster se puede ejecutar en nodos con recursos limitados.
  • Los pods se pueden reiniciar.
  • El rendimiento puede reducirse.
  • Ejecute la escala automática del cluster en nodos de infraestructura o sistema dedicados con recursos suficientes.
  • Configure tolerancias cuando los nodos del sistema de destino estén contaminados.
authType N

Define cómo se autentica la escala automática del cluster con las API de OCI.

La escala automática del cluster se basa en las API de OCI para crear nodos durante las operaciones de ampliación y suprimir nodos durante las operaciones de reducción.

  • Los fallos de autenticación impiden las operaciones de escalado.
  • La latencia de API o los fallos pueden retrasar el aprovisionamiento de nodos.
  • Utilizar un mecanismo de autenticación fiable. Se prefieren los principales de instancia.
  • Asegúrese de que se hayan configurado los permisos y límites de servicio necesarios.
rollingUpdate N

Controla la estrategia de actualización de despliegue para la escala automática del cluster.

El tiempo de inactividad de la escala automática del cluster deja de tomar decisiones de ampliación y reduce la capacidad de respuesta del cluster durante una actualización.

Si este argumento no está configurado correctamente:

  • Es posible que todas las réplicas se reinicien al mismo tiempo.
  • Es posible que la capacidad de escalado no esté disponible temporalmente.
  • Configure maxUnavailable con cuidado.
  • Asegúrese de que al menos una instancia de la escala automática del cluster permanezca activa durante una actualización.
maxNodesTotal Y

Define el número máximo de nodos que puede gestionar la escala automática del cluster.

Este argumento establece un límite superior estricto para el tamaño del cluster y evita la ampliación no controlada.

Si el valor es demasiado bajo, la escala automática del cluster deja de escalarse incluso cuando los pods permanecen en el estado Pending .

Si el valor es demasiado alto:

  • El cluster puede alcanzar los límites de arrendamiento o servicio de OCI.
  • Los costos pueden aumentar inesperadamente.

Defina el valor ligeramente superior al tamaño máximo de cluster esperado. Por ejemplo, defina un valor superior a 20000 para un cluster que se espera que contenga hasta 20 000 nodos.

coresTotal Y

Define el número total mínimo y máximo de núcleos de CPU en el cluster.

Este argumento controla la escala agregada de capacidad de CPU y ayuda a evitar el aprovisionamiento insuficiente o excesivo.

Si el valor máximo es demasiado bajo, la escala automática del cluster bloquea las operaciones de escala vertical.

Si el valor máximo es demasiado alto, el aprovisionamiento excesivo de nodos puede aumentar los costos.

Defina coresTotal según la capacidad máxima de CPU y las cuotas de recursos en la nube planificadas de su organización. Asegúrese de que coresTotal sea lo suficientemente alto como para soportar las cargas de trabajo máximas.

memoryTotal Y

Define la memoria total mínima y máxima en el cluster.

Este argumento controla el aprovisionamiento total de memoria del cluster y es especialmente importante para las cargas de trabajo que hacen un uso intensivo de la memoria.

Si el valor máximo es demasiado bajo, la escala automática del cluster impide las operaciones de ampliación, lo que puede dejar cargas de trabajo sin suficiente memoria.

Si el valor máximo es demasiado alto, es posible que el cluster esté sobreaprovisionado y que los costos aumenten.

Alinee los valores mínimo y máximo con la estrategia de ajuste de tamaño del pool de nodos.

maxEmptyBulkDelete Y

Define el número máximo de nodos vacíos que se pueden suprimir simultáneamente.

Este argumento controla la velocidad de las operaciones de reducción vertical.

Si el valor es demasiado bajo:

  • Las operaciones de reducción vertical pueden ser lentas.
  • Los recursos inactivos pueden permanecer en el cluster por más tiempo.

Si el valor es demasiado alto, se puede suprimir un gran número de nodos al mismo tiempo.

  • Aumentar el valor moderadamente para grandes clusters.
  • Evite la eliminación masiva agresiva.
nodes Y

Define el número mínimo y máximo de nodos para cada pool de nodos.

Este argumento controla los límites de escala para cada pool de nodos.

Si los límites son demasiado restrictivos, el pool de nodos no se puede escalar lo suficiente.

Si los límites son demasiado permisivos, los nodos se pueden distribuir de forma desigual entre los pools de nodos.

  • Configure los límites para cada pool de nodos en función del tipo de carga de trabajo y el dominio de disponibilidad.
  • Alinee los valores con el valor balanceSimilarNodeGroups .