El Ajuste de escala automático de Pods multidimensional te libera de elegir una sola manera de escalar tus clústeres. Con el Ajuste de escala automático multidimensional, puedes usar el Escalamiento horizontal en función de la CPU y el Escalamiento vertical según la memoria al mismo tiempo.
Un objeto MultidimPodAutoscaler
modifica las solicitudes de memoria y agrega réplicas para que el uso promedio de CPU de cada réplica coincida con tu uso objetivo.
Requisitos previos
- Versión del clúster de GKE 1.19.4-gke.1700 o posterior.
- Habilita el Ajuste de escala automático vertical de pods en tu clúster.
Usa el ajuste de escala automático multidimensional de pods
En este ejemplo, se muestra cómo crear una implementación y un objeto MultidimPodAutoscaler
para realizar un ajuste de escala automático de la implementación.
Crea un Deployment
Antes de crear un MultidimPodAutoscaler
, debes crear la carga de trabajo que supervisa. 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: k8s.gcr.io/hpa-example
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 que hayas creado la implementación, puedes crear un objeto MultidimPodAutoscaler
. Con 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 MultidPodAutoscaler
Visualiza todos los objetos MultidimPodAutoscaler
con 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 campos posibles que puedes agregar a tu objeto MultidimPodAutoscaler
.
Todos los campos corresponden a v1beta1 autoscaling.gke.io
de apiVersion
.
MultidimPodAutoscaler
MultidimPodAutoscaler
es la configuración de un escalador automático de Pods multidimensional, que administra de forma automática los recursos de Pod y su recuento según el uso histórico y de recursos en tiempo real.
Campo | Tipo | Descripción |
---|---|---|
metadata |
ObjectMeta |
Metadatos de objeto estándar |
spec |
MultidimPodAutoscalerSpec |
El comportamiento deseado del escalador automático de pods multidimensional |
status |
MultidimPodAutoscalerStatus |
El estado más reciente del escalador automático de Pods multidimensional. |
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 objetivo para escalar (con el subrecurso Scale). |
Goals |
*MultidimGoals |
Objetivos que el escalador automático de Pods multidimensional 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, entonces no se alcanzará. Por ejemplo, si se alcanza el recuento máximo de réplicas, es posible que no se pueda escalar aún más, incluso si es necesario escalar las réplicas. |
Policy |
*MultidimPolicy |
La política le permite especificar cómo se aplican las recomendaciones. |
MultidimGoals
MultidimGoals
son los objetivos que el escalador automático de pods multidimensional intenta alcanzar.
Campo | Tipo | Descripción |
---|---|---|
Metrics |
[]MetricSpec |
Contiene la lista de métricas junto con el valor deseado. El escalador automático de pods multidimensional intenta mantenerse 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 |
Las restricciones que se aplican a la aplicación con ajuste de escala automático. |
ContainerControlledResources |
[]ResourceName |
Recursos de contenedor que el escalador automático debe controlar. memory es el único valor admitido. |
Container |
[]ContainerConstraints |
Restricciones que se aplican a los contenedores de Pods |
Restricciones de recursos
ResourceConstraints
define 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 |
[]ResourceName |
Cantidad máxima de recursos que puedes asignar. Si no se proporcionan, 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. |
Restricciones de contenedores
ContainerConstraints
son restricciones que se aplican a los contenedores de 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 el contenedor especificado puede solicitar. |
Modo de actualización
Usa UpdateMode
para controlar cómo se aplican las recomendaciones calculadas.
Campos | Tipo | Descripción |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
La opción Actualizaciones automáticas significa que todas las recomendaciones del escalador automático se pueden aplicar en cualquier momento. |
MultidimPolicy
Campos | Tipo | Descripción |
---|---|---|
Update |
UpdateMode |
Define cómo se deben aplicar las recomendaciones. Un valor vacío no se valida. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
describe el estado del entorno de ejecución del escalador automático.
Campos | Tipo | Descripción |
---|---|---|
RecommendedPodResources |
*RecommendedPodResources |
La cantidad calculada más recientemente de recursos que recomienda el escalador automático para los pods controlados. |
CurrentReplicas |
Int32 |
CurrentReplicas : Es la cantidad actual de réplicas de Pods que administra este escalador automático, que lo vio por última vez. |
DesiredReplicas |
Int32 |
DesiredReplicas es la cantidad deseada de réplicas de Pods que administra este escalador automático, que es el que calcula este último. |
Conditions |
[]metav1.Condition |
Conditions es el conjunto de condiciones necesarias para que este escalador automático ajuste su objetivo y, además, indica si se cumplen o no esas condiciones. |
¿Qué sigue?
- Obtén más información sobre cómo configurar el ajuste de escala automático horizontal de pods.
- Obtén más información sobre cómo configurar el ajuste de escala automático vertical de pods.