Mejores prácticas de escala automática
Descubra las mejores prácticas para utilizar la escala automática (CA) del cluster de Kubernetes, la escala automática de pod horizontal (HPA) y la escala automática de pod vertical (VPA) con clusters que ha creado Kubernetes Engine (OKE).
Esta sección contiene las mejores prácticas para utilizar la escala automática (CA) del cluster de Kubernetes, la escala automática de pod horizontal (HPA) y la escala automática de pod vertical (VPA) con clusters creados por Kubernetes Engine.
La ampliación automática es una forma de ampliar o reducir de forma dinámica el número de recursos informáticos que se asignan a una aplicación, en función de sus necesidades. Puede utilizar:
- la escala automática del cluster de Kubernetes para cambiar automáticamente el tamaño de los pools de nodos de un cluster en función de las demandas de carga de trabajo de las aplicaciones.
- la escala automática de pod horizontal de Kubernetes para escalar automáticamente el número de pods en un despliegue.
- la escala automática de pod vertical de Kubernetes para ajustar automáticamente las solicitudes de recursos y los límites (como los atributos de CPU y memoria) de los contenedores que se ejecutan en los pods de un despliegue.
Para obtener más información, consulte Escala automática de pools de nodos y pod de Kubernetes.
Mejores prácticas: gestione manualmente al menos un pool de nodos para complementos de cluster críticos
Recomendamos que siempre tenga al menos un pool de nodos en un cluster que no esté gestionado por la escala automática del cluster de Kubernetes. Este pool de nodos es necesario para ejecutar complementos de cluster críticos. Tenga en cuenta también que es su responsabilidad escalar manualmente cualquier pool de nodos que no esté gestionado por la escala automática del cluster de Kubernetes.
También le recomendamos que programe pods de aplicación para que se ejecuten en pools de nodos de usuario y pods críticos del sistema (como pods de coredns) en pools de nodos de sistema dedicados. La separación de los pods de aplicación y los pods del sistema de esta forma evita que los pods de aplicación peligrosos maten accidentalmente los pods del sistema. Aplique este comportamiento mediante la configuración CriticalAddonsOnly=true:NoSchedule
para pools de nodos del sistema.
Consulte Uso de la escala automática del cluster de Kubernetes.
Mejores prácticas: definición de varias réplicas
Recomendamos que defina siempre varias réplicas para el despliegue de la escala automática del cluster de Kubernetes en el archivo de configuración. Si solo hay una réplica y se expulsa y no se puede reprogramar, la escala automática del cluster de Kubernetes no puede crear más nodos de trabajador.
Consulte Uso de la escala automática del cluster de Kubernetes.
Mejores prácticas: definición de max-node-provision-time
Recomendamos que defina max-node-provision-time
en 25 minutos en el archivo de configuración. Normalmente, los nuevos nodos de trabajador se aprovisionan y pasan a la condición Preparado en mucho menos tiempo. Sin embargo, cuando se agregan muchos nodos a un pool de nodos al mismo tiempo, se puede tardar más en aprovisionarlos. Tenga en cuenta que la consola muestra un aviso junto a los nodos de trabajador que tardan más de 20 minutos en inicializarse.
Consulte Uso de la escala automática del cluster de Kubernetes.
Mejores prácticas: Especificar el número máximo de nodos en un pool de nodos
Se recomienda especificar el número máximo de nodos permitidos en el pool de nodos del archivo de configuración. Asegúrese de que el número máximo de nodos especificado no exceda el límite de arrendamiento de la unidad de nodo de trabajador definida para el pool de nodos. La escala automática del cluster de Kubernetes nunca creará más nodos que los definidos por el límite de arrendamiento. Si especifica un número mayor que el límite de arrendamiento, la escala automática del cluster de Kubernetes intentará crear nodos adicionales periódicamente, pero no lo hará hasta que se haya incrementado el límite de arrendamiento.
Al definir clusters que desea que gestione la escala automática del cluster de Kubernetes, recomendamos crear varios pools de nodos con un dominio de disponibilidad especificado por pool de nodos.
Consulte Uso de la escala automática del cluster de Kubernetes.
Mejores prácticas: especifique varios pools de nodos con un dominio de disponibilidad diferente para cada pool de nodos
Recomendamos que especifique varios pools de nodos (con un dominio de disponibilidad diferente para cada pool de nodos) al definir clusters que desea que gestione la escala automática del cluster de Kubernetes.
La especificación de varios pools de nodos en diferentes dominios de disponibilidad reduce la probabilidad de que la escala automática del cluster de Kubernetes no pueda crear nodos de trabajador porque una unidad de nodo seleccionada no está disponible en un dominio de disponibilidad concreto.
Consulte Uso de la escala automática del cluster de Kubernetes.
Mejores prácticas: uso de reservas de capacidad para aprovisionar nodos de trabajador
Le recomendamos que utilice reservas de capacidad para aprovisionar nodos de trabajador. El uso de reservas de capacidad garantiza que la capacidad informática esté disponible para las cargas de trabajo cuando sea necesario durante eventos críticos, como la recuperación ante desastres o picos de carga de trabajo inesperados.
Consulte Using Capacity Reservations to Provision Managed Nodes.
Mejores prácticas: diseñe aplicaciones que aprovechen los presupuestos de interrupción de pod
Recomendamos que diseñe aplicaciones para tolerar las interrupciones que se pueden producir cuando la escala automática del cluster de Kubernetes elimina los nodos de trabajador o mueve los pods a otro nodo de trabajador antes de eliminar un nodo de trabajador sin utilizar.
Por ejemplo, diseñe aplicaciones que aprovechen los presupuestos de interrupción de pod.
Consulte la sección sobre la especificación de un presupuesto de interrupción para la aplicación en la documentación de Kubernetes.
Mejores prácticas: evitar la configuración manual de pools de nodos gestionados por la escala automática del cluster de Kubernetes
Evite cambiar manualmente los pools de nodos gestionados por la escala automática del cluster de Kubernetes. Por ejemplo, no agregue ni elimine nodos mediante kubectl
ni mediante la consola (o la CLI o API de Oracle Cloud Infrastructure). La escala automática del cluster de Kubernetes podría sustituir dichos cambios o modificar su comportamiento.
Si desea eliminar todos los nodos de un pool de nodos gestionado por la escala automática del cluster de Kubernetes, utilice siempre la escala automática del cluster de Kubernetes para escalar el pool de nodos a cero.
Consulte Uso de la escala automática del cluster de Kubernetes.
Mejores prácticas: evitar el uso conjunto de la escala automática de pod horizontal de Kubernetes y la escala automática de pod vertical
Recomendamos que no utilice la escala automática de pod horizontal ni la escala automática de pod vertical juntos.
La escala automática de pod vertical ajusta automáticamente la configuración de solicitudes y límites, y tiene como objetivo reducir los gastos generales y lograr ahorros de costos.
La escala automática de pod horizontal escala el número de pods en función del uso de CPU o memoria, o de otras métricas. Es más probable que la escala automática de pod horizontal aumente en lugar de disminuir el número de pods.
Si utiliza la escala automática de pod horizontal y la escala automática de pod vertical juntos, compruebe dos veces que sus respectivas políticas no interfieren entre sí.
Mejores prácticas: creación de recomendaciones sin aplicarlas durante el desarrollo de aplicaciones
Le recomendamos que considere el uso de la escala automática de pod vertical cuando se encuentre en las primeras etapas de la escritura de una aplicación, simplemente para crear recomendaciones (sin actualizar los pods).
Para simplemente crear recomendaciones sin aplicarlas, defina updateMode: "Off"
en la sección updatePolicy
del manifiesto VerticalPodAutoscaler
. Cuando se crean pods, la escala automática de pod vertical analiza las necesidades de CPU y memoria de los contenedores, y registra esas recomendaciones en su campo Status
. La escala automática de pod vertical no realiza ninguna acción para actualizar las solicitudes de recursos para los contenedores en ejecución.
Consulte Uso de la escala automática de pod vertical de Kubernetes.