La scalabilità automatica multidimensionale dei pod ti evita di dover scegliere una sola modalità per la scalabilità dei 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
- Versione del cluster GKE 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 saperne di più 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 storico e in tempo reale.
| Campo | Tipo | Descrizione |
|---|---|---|
metadata |
ObjectMeta |
Metadati degli oggetti standard. |
spec |
MultidimPodAutoscalerSpec |
Il comportamento desiderato di Horizontal Pod Autoscaler 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 ti consente di specificare come vengono applicati i consigli. |
MultidimGoals
MultidimGoals sono obiettivi che la 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 per 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 la modalità di applicazione dei 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 consigli di 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 gestore della scalabilità automatica. |
RecommendedPodResources |
*RecommendedPodResources |
La quantità di risorse calcolata più di recente consigliata 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 gestore della scalabilità automatica, come calcolato l'ultima volta dal gestore della scalabilità automatica. |
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 richieste per la scalabilità della destinazione di questo gestore della scalabilità automatica 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.