La scalabilità automatica multidimensionale dei pod ti evita di dover scegliere una sola modalità 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 successive.
- Per i cluster Standard, abilita la scalabilità automatica verticale dei pod nel cluster. La scalabilità automatica pod verticale è già abilitata nei cluster Autopilot.
Utilizzo della scalabilità automatica multidimensionale dei pod
Questo esempio mostra come creare un deployment e un oggetto MultidimPodAutoscaler
per scalare automaticamente il deployment.
Creazione di un deployment
Prima di poter creare un MultidimPodAutoscaler
, devi 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 oggetto MultidimPodAutoscaler
Una volta creato il deployment, puoi creare un oggetto MultidimPodAutoscaler
. Il seguente manifest MultidimPodAutoscaler
regola automaticamente
il numero di repliche e le richieste di memoria in base ai valori specificati.
Per ulteriori informazioni sui campi di questo esempio, consulta la sezione 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 MultidimPodAutoscaler
, applica il manifest php-apache-autoscaler.yaml
:
kubectl apply -f php-apache-autoscaler.yaml
Visualizzazione di un oggetto MultidimPodAutoscaler
Visualizza tutti gli oggetti MultidimPodAutoscaler
utilizzando il comando kubectl get
:
kubectl get mpa
Eliminazione di un oggetto MultidimPodAutoscaler
Elimina un oggetto MultidimPodAutoscaler
utilizzando il comando kubectl delete
:
kubectl delete -f php-apache-autoscaler.yaml
Riferimento API
Le sezioni seguenti 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 gestore della scalabilità automatica dei pod multidimensionale, che gestisce automaticamente le risorse dei pod e il loro conteggio in base all'utilizzo delle risorse storiche e in tempo reale.
Campo | Tipo | Descrizione |
---|---|---|
metadata |
ObjectMeta |
Metadati degli oggetti standard. |
spec |
MultidimPodAutoscalerSpec |
Il comportamento desiderato 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à automatica.
Campo | Tipo | Descrizione |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
Un riferimento che punta a una risorsa di destinazione da scalare (con la risorsa secondaria Scale). |
Goals |
*MultidimGoals |
Obiettivi che il gestore della scalabilità automatica dei pod multidimensionale tenta 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, quest'ultimo non verrà raggiunto. Ad esempio, il raggiungimento del numero massimo di repliche impedisce un ulteriore aumento anche se le repliche potrebbero dover essere scalate. |
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 cerca di
raggiungere.
Campo | Tipo | Descrizione |
---|---|---|
Metrics |
[]MetricSpec |
Contiene l'elenco delle metriche insieme al valore desiderato. Il gestore della scalabilità automatica dei pod multidimensionale tenta di rimanere vicino ai valori desiderati. |
MultidimConstraints
MultidimConstraints
descrivi i vincoli per la scalabilità automatica. I vincoli hanno
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 un singolo pod dell'applicazione di destinazione. |
ContainerControlledResources |
[]ResourceName |
Risorse container che devono essere controllate dal gestore della scalabilità automatica. memory è l'unico valore supportato. |
Container |
[]ContainerConstraints |
Vincoli che si applicano ai container dei pod. |
ResourceConstraints
ResourceConstraints
definisci 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 |
Importo massimo delle risorse che puoi assegnare. Se non viene fornito, non ci sono limiti alla quantità massima di risorse. |
GlobalConstraints
GlobalConstraints
definisci 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 1. |
MaxReplicas |
*Int32 |
Quantità massima di repliche che l'applicazione può avere. Se non viene fornito, non ci sono limiti all'importo massimo delle repliche. |
Requests |
*ResourceConstraints |
Quantità minima e massima di risorse che un'applicazione può richiedere, sommate in tutti i pod. |
PodConstraints
PodConstraints
definisci la quantità minima e massima di risorse che un
singolo pod può richiedere, sommate in 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 in tutti i container appartenenti al pod. |
ContainerConstraints
ContainerConstraints
sono vincoli che si applicano ai container dei pod.
Campi | Tipo | Descrizione |
---|---|---|
Name |
String |
Nome del contenitore per il quale 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 container specificato può richiedere. |
UpdateMode
Utilizza UpdateMode
per controllare come vengono applicati i consigli calcolati.
Campi | Tipo | Descrizione |
---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
Aggiornamenti automatici significa che tutti i consigli 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 suggerimenti. Un valore vuoto non supera la convalida. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus
descrive lo stato di runtime del gestore della scalabilità automatica.
Campi | Tipo | Descrizione |
---|---|---|
ObservedGeneration |
*Int64 |
La generazione più recente osservata da questo autoscaler. |
RecommendedPodResources |
*RecommendedPodResources |
L'importo delle risorse calcolato più di recente consigliato dallo strumento di scalabilità automatica per i pod controllati. |
CurrentReplicas |
Int32 |
CurrentReplicas è il numero attuale di repliche dei pod gestiti da questo gestore della scalabilità automatica, come visto l'ultima volta dal gestore della scalabilità automatica. |
DesiredReplicas |
Int32 |
DesiredReplicas è il numero desiderato di repliche dei pod gestiti da questo autoscaler, come calcolato l'ultima volta dall'autoscaler. |
CurrentMetrics |
[]autoscaling.MetricStatus |
L'ultimo stato di lettura delle metriche utilizzate da questo gestore della scalabilità automatica. |
Conditions |
[]metav1.Condition |
Conditions è l'insieme di condizioni necessarie per la scalabilità automatica della destinazione e indica se queste condizioni sono soddisfatte o meno. |
Passaggi successivi
- Scopri di più sulla configurazione della scalabilità automatica orizzontale dei pod.
- Scopri di più sulla configurazione della scalabilità automatica verticale dei pod.