El ajuste de escala automático multidimensional de Pods te libera de elegir una sola forma de escalar tus clústeres. Con el ajuste de escala automático multidimensional de Pods, puedes usar el escalamiento horizontal basado en la CPU y el escalamiento vertical en función de la memoria al mismo tiempo.
Un objeto MultidimPodAutoscaler
modifica las solicitudes de memoria y agrega réplicas para que el uso de CPU promedio de cada réplica coincida con el uso objetivo.
Requisitos previos
- Versión del clúster de GKE 1.19.4-gke.1700 o posterior.
- En el caso de los clústeres de Standard, habilita el ajuste de escala automático vertical de Pods en tu clúster. El ajuste de escala automático vertical de Pods ya está habilitado en los clústeres de Autopilot.
Usa el ajuste de escala automático multidimensional de Pods
En este ejemplo, se muestra cómo crear un Deployment y un objeto MultidimPodAutoscaler
para realizar un ajuste de escala automático del Deployment.
Crea un Deployment
Antes de crear un MultidimPodAutoscaler
, debes crear la carga de trabajo que supervisará. En el siguiente archivo, php-apache.yaml
, se especifica un valor para las solicitudes de CPU:
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 80
resources:
# Since MPA does not specify CPU requests, you must specify a request in
# the Deployment
limits:
cpu: 500m
requests:
cpu: 200m
Para crear la implementación, aplica el manifiesto php-apache.yaml
:
kubectl apply -f php-apache.yaml
Crea un MultidimPodAutoscaler
Una vez creada la implementación, puedes crear un objeto MultidimPodAutoscaler
. En el siguiente manifiesto MultidimPodAutoscaler
, se ajusta de forma automática la cantidad de réplicas y solicitudes de memoria según los valores que especifiques.
Para obtener más información sobre los campos de este ejemplo, consulta la sección Referencia de la API.
apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
name: php-apache-autoscaler
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
goals:
metrics:
- type: Resource
resource:
# Define the target CPU utilization request here
name: cpu
target:
type: Utilization
averageUtilization: 60
constraints:
global:
minReplicas: 1
maxReplicas: 5
containerControlledResources: [ memory ]
container:
- name: '*'
# Define boundaries for the memory request here
requests:
minAllowed:
memory: 1Gi
maxAllowed:
memory: 2Gi
policy:
updateMode: Auto
Para crear la implementación MultidimPodAutoscaler
, aplica el manifiesto php-apache-autoscaler.yaml
:
kubectl apply -f php-apache-autoscaler.yaml
Cómo ver un MultidimPodAutoscaler
Visualiza todos los objetos MultidimPodAutoscaler
mediante el comando kubectl get
:
kubectl get mpa
Borra un MultidimPodAutoscaler
Borra un objeto MultidimPodAutoscaler
con el comando kubectl delete
:
kubectl delete -f php-apache-autoscaler.yaml
Referencia de API
En las siguientes secciones, se proporciona información sobre los posibles campos que puedes agregar a tu objeto MultidimPodAutoscaler
.
Todos los campos corresponden a apiVersion
v1beta1 autoscaling.gke.io
.
MultidimPodAutoscaler
MultidimPodAutoscaler
es la configuración de un escalador automático multidimensional de Pods, que administra de forma automática los recursos del Pod y su recuento en función del uso histórico y en tiempo real de los recursos.
Campo | Tipo | Descripción |
---|---|---|
metadata |
ObjectMeta |
Metadatos de objeto estándar |
spec |
MultidimPodAutoscalerSpec |
El comportamiento deseado del escalador automático multidimensional de Pods. |
status |
MultidimPodAutoscalerStatus |
El estado más reciente del escalador automático multidimensional de Pods. |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec
es la especificación que define el comportamiento del escalador automático.
Campo | Tipo | Descripción |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
Una referencia que apunta a un recurso de destino para escalar (con el subrecurso Scale). |
Goals |
*MultidimGoals |
Objetivos que el escalador automático multidimensional de Pods intenta alcanzar y mantener. |
Constraints |
*MultidimConstraints |
Describe las restricciones para el ajuste de escala automático. Las restricciones superan los objetivos. Si las restricciones bloquean algún objetivo, no se alcanzará el objetivo. Por ejemplo, alcanzar el recuento máximo de réplicas evita que se escale verticalmente aún más, incluso si las réplicas necesitan escalar. |
Policy |
*MultidimPolicy |
La política te permite especificar cómo se aplican las recomendaciones. |
MultidimGoals
MultidimGoals
son objetivos que el escalador automático multidimensional de Pods intenta alcanzar.
Campo | Tipo | Descripción |
---|---|---|
Metrics |
[]MetricSpec |
Contiene la lista de métricas junto con el valor deseado. El escalador automático multidimensional de Pods intenta permanecer cerca de los valores deseados. |
MultidimConstraints
MultidimConstraints
describen las restricciones para el ajuste de escala automático. Las restricciones tienen prioridad sobre los objetivos.
Campo | Tipo | Descripción |
---|---|---|
Global |
*GlobalConstraints |
Restricciones que se aplican a la aplicación con ajuste de escala automático en conjunto. |
Pod |
*PodConstraints |
Restricciones que se aplican a un solo Pod desde la aplicación objetivo. |
ContainerControlledResources |
[]ResourceName |
Recursos de contenedores que el escalador automático debe controlar. memory es el único valor admitido. |
Container |
[]ContainerConstraints |
Restricciones que se aplican a los contenedores de los Pods. |
ResourceConstraints
ResourceConstraints
definen la cantidad mínima y máxima de recursos que puedes asignar a un contenedor, un Pod o una aplicación.
Campo | Tipo | Descripción |
---|---|---|
MinAllowed |
ResourceList |
Cantidad mínima de recursos que puedes asignar. Si no se proporciona, se usa 0. |
MaxAllowed |
ResourceList |
Cantidad máxima de recursos que puedes asignar. Si no se proporciona, no hay límites para la cantidad máxima de recursos. |
GlobalConstraints
GlobalConstraints
definen las restricciones que se aplican a la aplicación por completo. Estas restricciones incluyen la cantidad de réplicas o la cantidad total de recursos.
Campo | Tipo | Descripción |
---|---|---|
MinReplicas |
*Int32 |
Cantidad mínima de réplicas que puede tener la aplicación. Si no se proporciona, se usa 1. |
MaxReplicas |
*Int32 |
Cantidad máxima de réplicas que puede tener la aplicación. Si no se proporciona, no hay límites para la cantidad máxima de recursos. |
Requests |
*ResourceConstraints |
Cantidad mínima y máxima de recursos que una aplicación puede solicitar, sumados en todos los Pods. |
PodConstraints
PodConstraints
define la cantidad mínima y máxima de recursos que puede solicitar un solo Pod, sumados en todos los contenedores que pertenecen al Pod.
Campo | Tipo | Descripción |
---|---|---|
Requests |
*ResourceConstraints |
Cantidad mínima y máxima de recursos que puede solicitar un solo Pod, sumados en todos los contenedores que pertenecen al Pod. |
ContainerConstraints
ContainerConstraints
son restricciones que se aplican a los contenedores de los Pods.
Campos | Tipo | Descripción |
---|---|---|
Name |
String |
Nombre del contenedor para el que se especifican las restricciones. También puedes usar * a fin de especificar restricciones para todos los contenedores en un Pod. |
Requests |
*ResourceConstraints |
Cantidad mínima y máxima de recursos que puede solicitar el contenedor especificado. |
UpdateMode
Usa UpdateMode
para controlar cómo se aplican las recomendaciones calculadas.
Campos | Tipo | Descripción |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
AutoUpdates significa que todas las recomendaciones del escalador automático se pueden aplicar en cualquier momento. |
AutoUpdates |
UpdateMode = "Off" |
Las actualizaciones automáticas implican que las recomendaciones del escalador automático no se aplican en absoluto. |
MultidimPolicy
Campos | Tipo | Descripción |
---|---|---|
Update |
UpdateMode |
Define cómo se deben aplicar las recomendaciones. Un valor vacío falla en la validación. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
describe el estado del entorno de ejecución del escalador automático.
Campos | Tipo | Descripción |
---|---|---|
ObservedGeneration |
*Int64 |
La generación más reciente de este escalador automático. |
RecommendedPodResources |
*RecommendedPodResources |
La cantidad de recursos calculado más reciente que recomienda el escalador automático para los Pods controlados. |
CurrentReplicas |
Int32 |
CurrentReplicas es la cantidad actual de réplicas de Pods administradas por este escalador automático, según la información más reciente del escalador automático. |
DesiredReplicas |
Int32 |
DesiredReplicas es la cantidad deseada de réplicas de Pods administradas por este escalador automático, según el cálculo más reciente del escalador automático. |
CurrentMetrics |
[]autoscaling.MetricStatus |
El último estado de lectura de las métricas usadas por este escalador automático. |
Conditions |
[]metav1.Condition |
Conditions es el conjunto de condiciones necesarias para que este escalador automático escale su objetivo y también indica si se cumplen o no esas condiciones. |
¿Qué sigue?
- Obtén más información sobre cómo configurar el ajuste automático de escala horizontal de Pods.
- Obtén más información sobre la configuración del ajuste de escala automático vertical de Pods.