La scalabilità automatica multidimensionale dei pod ti evita di dover scegliere un solo modo per scalare i tuoi cluster. Con la scalabilità automatica multidimensionale dei pod, puoi utilizzare contemporaneamente la scalabilità orizzontale basata sulla CPU e la scalabilità verticale basata sulla memoria.
Un oggetto MultidimPodAutoscaler
modifica le richieste di memoria e aggiunge repliche in modo che l'utilizzo medio della CPU di ogni replica corrisponda all'utilizzo target.
Prerequisiti
- Cluster GKE versione 1.19.4-gke.1700 o successiva.
- Per i cluster standard, abilita la scalabilità automatica dei pod verticali nel cluster. La scalabilità automatica dei pod verticali è già abilitata nei cluster Autopilot.
Utilizzo della scalabilità automatica dei pod multidimensionale
Questo esempio mostra come creare un deployment e un MultidimPodAutoscaler
per scalare automaticamente il deployment.
Creazione di un deployment
Per poter creare un MultidimPodAutoscaler
, devi prima creare il carico di lavoro
che monitora. Il seguente file, php-apache.yaml
, specifica un valore per le richieste di 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
Per creare il deployment, applica il manifest php-apache.yaml
:
kubectl apply -f php-apache.yaml
Creazione di un MultidimPodAutoscaler
Dopo aver creato il deployment, puoi creare un MultidimPodAutoscaler
. Il seguente manifest MultidimPodAutoscaler
si regola automaticamente
il numero di repliche e richieste di memoria in base ai valori specificati.
Per ulteriori informazioni sui campi di questo esempio, consulta il Riferimento 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
Per creare il MultidimPodAutoscaler
, applica il manifest php-apache-autoscaler.yaml
:
kubectl apply -f php-apache-autoscaler.yaml
Visualizzazione di un MultidimPodAutoscaler
Visualizza tutti gli oggetti MultidimPodAutoscaler
utilizzando il comando kubectl get
:
kubectl get mpa
Eliminazione di un MultidimPodAutoscaler
Elimina un oggetto MultidimPodAutoscaler
utilizzando il comando kubectl delete
:
kubectl delete -f php-apache-autoscaler.yaml
Riferimento API
Le seguenti sezioni forniscono informazioni sui possibili campi che puoi aggiungere
all'oggetto MultidimPodAutoscaler
.
Tutti i campi sono per apiVersion
v1beta1 autoscaling.gke.io
.
MultidimPodAutoscaler
MultidimPodAutoscaler
è la configurazione di un'autoscalabilità dei pod multidimensionale, che gestisce automaticamente le risorse dei pod e il relativo conteggio in base all'utilizzo delle risorse storico e in tempo reale.
Campo | Tipo | Descrizione |
---|---|---|
metadata |
ObjectMeta |
Metadati degli oggetti standard. |
spec |
MultidimPodAutoscalerSpec |
Il comportamento desiderato del gestore della scalabilità automatica dei pod multidimensionale. |
status |
MultidimPodAutoscalerStatus |
Lo stato osservato più di recente del gestore della scalabilità automatica dei pod multidimensionale. |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec
è la specifica che definisce il comportamento del gestore della scalabilità.
Campo | Tipo | Descrizione |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
Un riferimento che punta a una risorsa di destinazione da scalare (con la risorsa secondaria Scala). |
Goals |
*MultidimGoals |
Obiettivi che il gestore della scalabilità automatica dei pod multidimensionale cerca di raggiungere e mantenere. |
Constraints |
*MultidimConstraints |
Descrive i vincoli per la scalabilità automatica. I vincoli hanno la precedenza sugli obiettivi. Se i vincoli bloccano un obiettivo, questo non verrà raggiunto. Ad esempio, il raggiungimento del numero massimo di repliche impedisce un ulteriore scale up, anche se potrebbe essere necessario scalare le repliche. |
Policy |
*MultidimPolicy |
Il criterio consente di specificare come vengono applicati i consigli. |
MultidimGoals
MultidimGoals
sono gli obiettivi che il gestore della scalabilità automatica dei pod multidimensionale tenta di raggiungere.
Campo | Tipo | Descrizione |
---|---|---|
Metrics |
[]MetricSpec |
Contiene l'elenco di metriche insieme al valore desiderato. Il gestore della scalabilità automatica dei pod multidimensionale cerca di rimanere vicino ai valori desiderati. |
MultidimConstraints
MultidimConstraints
descrivono i vincoli per la scalabilità automatica. I vincoli prendono
la precedenza sugli obiettivi.
Campo | Tipo | Descrizione |
---|---|---|
Global |
*GlobalConstraints |
Vincoli che si applicano all'applicazione con scalabilità automatica nel suo complesso. |
Pod |
*PodConstraints |
Vincoli che si applicano a singoli pod dell'applicazione di destinazione. |
ContainerControlledResources |
[]ResourceName |
Risorse del contenitore che devono essere controllate dal gestore della scalabilità automatica. memory è l'unico valore supportato. |
Container |
[]ContainerConstraints |
Vincoli che si applicano ai pod containerizzati. |
ResourceConstraints
ResourceConstraints
definiscono la quantità minima e massima di risorse
che puoi assegnare a un container, un pod o un'applicazione.
Campo | Tipo | Descrizione |
---|---|---|
MinAllowed |
ResourceList |
Quantità minima di risorse che puoi assegnare. Se non viene fornito, viene utilizzato 0. |
MaxAllowed |
ResourceList |
Quantità massima di risorse che puoi assegnare. Se non viene specificato, non sono previsti limiti alla quantità massima di risorse. |
GlobalConstraints
GlobalConstraints
definiscono i vincoli che si applicano all'applicazione nel suo complesso. Questi vincoli includono il numero di repliche o la quantità totale di risorse.
Campo | Tipo | Descrizione |
---|---|---|
MinReplicas |
*Int32 |
Quantità minima di repliche che l'applicazione può avere. Se non viene fornito, viene utilizzato il valore 1. |
MaxReplicas |
*Int32 |
Quantità massima di repliche che l'applicazione può avere. Se non viene fornito, non ci sono limiti al numero massimo di repliche. |
Requests |
*ResourceConstraints |
Quantità minima e massima di risorse che un'applicazione può richiedere, sommate in tutti i pod. |
PodConstraints
PodConstraints
definiscono la quantità minima e massima di risorse che
che un singolo pod può richiedere, sommate per tutti i container che appartengono al pod.
Campo | Tipo | Descrizione |
---|---|---|
Requests |
*ResourceConstraints |
Quantità minima e massima di risorse che un singolo pod può richiedere, sommate per tutti i container che appartengono al pod. |
ContainerConstraints
ContainerConstraints
sono i vincoli che si applicano ai pod containerizzati.
Campi | Tipo | Descrizione |
---|---|---|
Name |
String |
Nome del contenitore per cui sono specificati i vincoli. Puoi anche utilizzare * per specificare i vincoli per tutti i container in un pod. |
Requests |
*ResourceConstraints |
Quantità minima e massima di risorse che il contenitore specificato può richiedere. |
UpdateMode
Utilizza UpdateMode
per controllare la modalità di applicazione dei consigli calcolati.
Campi | Tipo | Descrizione |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
Aggiornamenti automatici significa che tutti i suggerimenti del gestore della scalabilità automatica possono essere applicati in qualsiasi momento. |
AutoUpdates |
UpdateMode = "Off" |
Aggiornamenti automatici significa che i suggerimenti del gestore della scalabilità automatica non vengono applicati. |
MultidimPolicy
Campi | Tipo | Descrizione |
---|---|---|
Update |
UpdateMode |
Definisce in che modo devono essere applicati i consigli. Un valore vuoto non supera la convalida. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
descrive lo stato del runtime del gestore della scalabilità automatica.
Campi | Tipo | Descrizione |
---|---|---|
ObservedGeneration |
*Int64 |
La generazione più recente osservata da questo gestore della scalabilità automatica. |
RecommendedPodResources |
*RecommendedPodResources |
La quantità calcolata più di recente di risorse consigliate dal gestore della scalabilità automatica per i pod controllati. |
CurrentReplicas |
Int32 |
CurrentReplicas è il numero corrente di repliche di pod gestite da questo regolatore automatico, come visto per l'ultima volta dal regolatore automatico. |
DesiredReplicas |
Int32 |
DesiredReplicas è il numero desiderato di repliche di pod gestite da questo gestore della scalabilità automatica, come calcolato per l'ultima volta dal gestore della scalabilità automatica. |
CurrentMetrics |
[]autoscaling.MetricStatus |
L'ultimo stato di lettura delle metriche utilizzate da questo regolatore automatico. |
Conditions |
[]metav1.Condition |
Conditions è l'insieme di condizioni necessarie per la scalabilità automatica del target e indica se queste condizioni sono soddisfatte o meno. |
Passaggi successivi
- Scopri di più sulla configurazione della scalabilità automatica dei pod orizzontali.
- Scopri di più sulla configurazione della scalabilità automatica pod verticale.