La scalabilità automatica multidimensionale dei pod ti evita di dover scegliere una sola modalità per la scalabilità dei tuoi cluster. Grazie alla 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 pod verticale 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 oggetto 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 monitorato. Il seguente file, php-apache.yaml
, specifica un valore per le richieste 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 di php-apache.yaml
:
kubectl apply -f php-apache.yaml
Creazione di un MultidimPodAutoscaler
Dopo aver creato il deployment, puoi creare un oggetto MultidimPodAutoscaler
. Il seguente manifest di MultidimPodAutoscaler
regola automaticamente il numero di repliche e 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 il file 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 per un gestore della scalabilità automatica multidimensionale dei pod, che gestisce automaticamente le risorse dei pod e il loro conteggio in base all'utilizzo storico e in tempo reale delle risorse.
Campo | Tipo | Descrizione |
---|---|---|
metadata |
ObjectMeta |
Metadati degli oggetti standard. |
spec |
MultidimPodAutoscalerSpec |
Il comportamento desiderato del gestore della scalabilità automatica dei pod multidimensionali. |
status |
MultidimPodAutoscalerStatus |
Lo stato osservato più di recente del gestore della scalabilità automatica dei pod multidimensionali. |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec
è la specifica che definisce il comportamento del gestore della scalabilità automatica.
Campo | Tipo | Descrizione |
---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
Un riferimento che rimanda a una risorsa di destinazione da scalare (con la sottorisorsa 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 superano gli obiettivi. Se i vincoli bloccano alcuni obiettivi, l'obiettivo non verrà raggiunto. Ad esempio, raggiungere il numero massimo di repliche impedisce un ulteriore scale up anche se potrebbe essere necessario scalare le repliche. |
Policy |
*MultidimPolicy |
Le norme ti consentono di specificare in che modo vengono applicati i consigli. |
MultidimGoals
Gli MultidimGoals
sono obiettivi che il gestore della scalabilità automatica dei pod multidimensionale cerca di raggiungere.
Campo | Tipo | Descrizione |
---|---|---|
Metrics |
[]MetricSpec |
Contiene l'elenco di metriche insieme al valore desiderato. Il gestore della scalabilità automatica dei pod multidimensionali cerca di avvicinarsi ai valori desiderati. |
MultidimConstraints
MultidimConstraints
descrive 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 target. |
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
definiscono la quantità minima e massima di risorse che
puoi assegnare a un container, a un pod o a un'applicazione.
Campo | Tipo | Descrizione |
---|---|---|
MinAllowed |
ResourceList |
Quantità minima di risorse che puoi assegnare. Se non specificato, 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 completamente all'applicazione. Questi vincoli includono il numero di repliche o la quantità totale di risorse.
Campo | Tipo | Descrizione |
---|---|---|
MinReplicas |
*Int32 |
Quantità minima di repliche che può avere l'applicazione. Se non viene specificato, ne viene utilizzato uno. |
MaxReplicas |
*Int32 |
Quantità massima di repliche che può avere l'applicazione. Se non specificato, non sono previsti 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 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 che appartengono 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 in che modo vengono applicati i 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 indica 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 di 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 attuale di repliche di pod gestiti da questo gestore della scalabilità automatica, come indicato per l'ultima volta dal gestore della scalabilità automatica. |
DesiredReplicas |
Int32 |
DesiredReplicas è il numero desiderato di repliche di pod gestiti da questo gestore della scalabilità automatica, come calcolato per ultimo dal gestore della scalabilità automatica. |
CurrentMetrics |
[]autoscaling.MetricStatus |
Lo stato dell'ultima lettura delle metriche utilizzate da questo gestore della scalabilità automatica. |
Conditions |
[]metav1.Condition |
Conditions è l'insieme di condizioni necessarie a questo gestore della scalabilità automatica per scalare il target e indica se queste condizioni sono soddisfatte. |
Passaggi successivi
- Scopri di più sulla configurazione della scalabilità automatica pod orizzontale.
- Scopri di più sulla configurazione della scalabilità automatica pod verticale.