Questa pagina spiega come utilizzare la scalabilità automatica del pod orizzontale per eseguire la scalabilità automatica di un deployment utilizzando diversi tipi di metriche. Puoi utilizzare le stesse linee guida per configurare un HorizontalPodAutoscaler
per qualsiasi oggetto Deployment scalabile.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Versioni API per gli oggetti HorizontalPodAutoscaler
Quando utilizzi la console Google Cloud, gli oggetti HorizontalPodAutoscaler
vengono creati utilizzando l'API autoscaling/v2
.
Quando utilizzi kubectl
per creare o visualizzare informazioni su un Horizontal Pod Autoscaler, puoi specificare l'API autoscaling/v1
o l'API autoscaling/v2
.
apiVersion: autoscaling/v1
è l'impostazione predefinita e ti consente di eseguire la scalabilità automatica solo in base all'utilizzo della CPU. Per eseguire la scalabilità automatica in base ad altre metriche, ti consigliamo di utilizzareapiVersion: autoscaling/v2
. L'esempio in Creare il deployment di esempio utilizzaapiVersion: autoscaling/v1
.apiVersion: autoscaling/v2
è consigliato per la creazione di nuovi oggettiHorizontalPodAutoscaler
. Ti consente di eseguire la scalabilità automatica in base a più metriche, tra cui quelle personalizzate o esterne. Tutti gli altri esempi in questa pagina utilizzanoapiVersion: autoscaling/v2
.
Per controllare quali versioni dell'API sono supportate, usa il comando kubectl api-versions
.
Puoi specificare quale API utilizzare quando
visualizzi i dettagli di un Horizontal Pod Autoscaler che utilizza apiVersion: autoscaling/v2
.
Crea il deployment di esempio
Prima di poter creare un Horizontal Pod Autoscaler, devi creare il carico di lavoro che monitora. Gli esempi in questa pagina applicano diverse configurazioni di Horizontal Pod Autoscaler al seguente deployment nginx
. Esempi separati mostrano un Horizontal Pod Autoscaler basato su
utilizzo delle risorse, su una
metrica personalizzata o esterna,
e su più metriche.
Salva quanto segue in un file denominato nginx.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
resources:
# You must specify requests for CPU to autoscale
# based on CPU utilization
requests:
cpu: "250m"
Questo manifest specifica un valore per le richieste di CPU. Se vuoi applicare la scalabilità automatica in base all'utilizzo di una risorsa in percentuale, devi specificare le richieste per quella risorsa. Se non specifichi le richieste, puoi eseguire la scalabilità automatica in base solo al valore assoluto dell'utilizzo della risorsa, ad esempio milliCPU per l'utilizzo della CPU.
Per creare il deployment, applica il manifest nginx.yaml
:
kubectl apply -f nginx.yaml
Il valore spec.replicas
del deployment è impostato su 3, quindi vengono dispiacchiati tre pod.
Puoi verificarlo utilizzando il comando kubectl get deployment nginx
.
Ciascuno degli esempi in questa pagina applica un Horizontal Pod Autoscaler diverso a un deployment nginx di esempio.
Scalabilità automatica in base all'utilizzo delle risorse
Questo esempio crea l'oggetto HorizontalPodAutoscaler
per scalare automaticamente il
deployment nginx
quando l'utilizzo della CPU
supera il 50% e garantisce che sia sempre presente un minimo di 1
replica e un massimo di 10 repliche.
Puoi creare un Horizontal Pod Autoscaler che ha come target la CPU utilizzando la console Google Cloud, il comando kubectl apply
o, solo per la CPU media, il comando kubectl autoscale
.
Console
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Fai clic sul nome del deployment
nginx
.Fai clic su list Azioni > Autoscale.
Specifica i seguenti valori:
- Numero minimo di repliche: 1
- Numero massimo di repliche:10
- Metrica di scalabilità automatica: CPU
- Target: 50
- Unità: %
Fai clic su Fine.
Fai clic su Scalabilità automatica.
kubectl apply
Salva il seguente manifest YAML come file denominato nginx-hpa.yaml
:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
Per creare l'HPA, applica il manifest utilizzando il seguente comando:
kubectl apply -f nginx-hpa.yaml
kubectl autoscale
Per creare un oggetto HorizontalPodAutoscaler
che abbia come target solo l'utilizzo medio della CPU, puoi utilizzare il comando kubectl autoscale
:
kubectl autoscale deployment nginx --cpu-percent=50 --min=1 --max=10
Per ottenere un elenco di Horizontal Pod Autoscaler nel cluster, utilizza il seguente comando:
kubectl get hpa
L'output è simile al seguente:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx Deployment/nginx 0%/50% 1 10 3 61s
Per visualizzare i dettagli di Horizontal Pod Autoscaler, puoi utilizzare la console Google Cloud o il comando kubectl
.
Console
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Fai clic sul nome del deployment
nginx
.Visualizza la configurazione di Horizontal Pod Autoscaler nella sezione Gestione della scalabilità automatica.
Visualizza ulteriori dettagli sugli eventi di scalabilità automatica nella scheda Eventi.
kubectl get
Per visualizzare i dettagli sull'Horizontal Pod Autoscaler, puoi utilizzare kubectl get hpa
con il flag -o yaml
. Il campo status
contiene informazioni sul numero corrente di repliche e su eventuali eventi di scalabilità automatica recenti.
kubectl get hpa nginx -o yaml
L'output è simile al seguente:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
annotations:
autoscaling.alpha.kubernetes.io/conditions: '[{"type":"AbleToScale","status":"True","lastTransitionTime":"2019-10-30T19:42:59Z","reason":"ScaleDownStabilized","message":"recent
recommendations were higher than current one, applying the highest recent recommendation"},{"type":"ScalingActive","status":"True","lastTransitionTime":"2019-10-30T19:42:59Z","reason":"ValidMetricFound","message":"the
HPA was able to successfully calculate a replica count from cpu resource utilization
(percentage of request)"},{"type":"ScalingLimited","status":"False","lastTransitionTime":"2019-10-30T19:42:59Z","reason":"DesiredWithinRange","message":"the
desired count is within the acceptable range"}]'
autoscaling.alpha.kubernetes.io/current-metrics: '[{"type":"Resource","resource":{"name":"cpu","currentAverageUtilization":0,"currentAverageValue":"0"}}]'
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"autoscaling/v1","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"maxReplicas":10,"minReplicas":1,"scaleTargetRef":{"apiVersion":"apps/v1","kind":"Deployment","name":"nginx"},"targetCPUUtilizationPercentage":50}}
creationTimestamp: "2019-10-30T19:42:43Z"
name: nginx
namespace: default
resourceVersion: "220050"
selfLink: /apis/autoscaling/v1/namespaces/default/horizontalpodautoscalers/nginx
uid: 70d1067d-fb4d-11e9-8b2a-42010a8e013f
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
targetCPUUtilizationPercentage: 50
status:
currentCPUUtilizationPercentage: 0
currentReplicas: 3
desiredReplicas: 3
Prima di seguire gli esempi rimanenti in questa pagina, elimina l'HPA:
kubectl delete hpa nginx
Quando elimini un Horizontal Pod Autoscaler, il numero di repliche del deployment rimane invariato. Un deployment non torna automaticamente allo stato precedente all'applicazione di Horizontal Pod Autoscaler.
Scopri di più su come eliminare un Horizontal Pod Autoscaler.
Scalabilità automatica in base al traffico del bilanciatore del carico
La scalabilità automatica in base al traffico è una funzionalità di GKE che integra gli indicatori di utilizzo del traffico dei bilanciatori del carico per scalare automaticamente i pod.
L'utilizzo del traffico come indicatore di scalabilità automatica potrebbe essere utile, poiché il traffico è un indicatore principale del carico complementare alla CPU e alla memoria. L'integrazione integrata con GKE garantisce una configurazione facile e un'automazione che reagisce rapidamente ai picchi di traffico per soddisfare la domanda.
L'autoscaling basato sul traffico è abilitato da Gateway Controller e dalle sue funzionalità di gestione del traffico globale. Per saperne di più, consulta Scalabilità automatica basata sul traffico.
La scalabilità automatica in base al traffico del bilanciatore del carico è disponibile solo per i carichi di lavoro di gateway.
Requisiti
La scalabilità automatica basata sul traffico ha i seguenti requisiti:
- Supportato su GKE 1.31.1-gke.2008000 e versioni successive.
- L'API Gateway è abilitata nel tuo cluster GKE.
- Supportato per il traffico che passa attraverso i bilanciatori di carico di cui è stato eseguito il deployment utilizzando l'API Gateway e
gke-l7-global-external-managed
,gke-l7-regional-external-managed
,gke-l7-rilb
ogke-l7-gxlb
GatewayClass.
Limitazioni
La scalabilità automatica in base al traffico presenta le seguenti limitazioni:
- Non supportato da GatewayClasses
(
gke-l7-global-external-managed-mc
,gke-l7-regional-external-managed-mc
,gke-l7-rilb-mc
egke-l7-gxlb-mc
) multi-cluster. - Non supportato per il traffico che utilizza servizi di tipo
LoadBalancer
. - Deve esistere una relazione chiara e isolata tra i componenti coinvolti nell'autoscaling in base al traffico. Un Horizontal Pod Autoscaler deve essere dedicato alla scalabilità di un singolo deployment (o di qualsiasi risorsa scalabile) esposto da un singolo servizio.
- Dopo aver configurato la capacità del servizio utilizzando il campo
maxRatePerEndpoint
, attendi il tempo sufficiente (di solito un minuto, ma potenzialmente fino a 15 minuti in cluster di grandi dimensioni) per consentire l'aggiornamento del bilanciatore del carico con questa modifica, prima di configurare il Horizontal Pod Autoscaler con le metriche basate sul traffico. In questo modo, il servizio non riscontrerà temporaneamente una situazione in cui il cluster tenta di eseguire la scalabilità automatica in base alle metriche emesse da un bilanciatore del carico ancora in fase di configurazione. - Se la scalabilità automatica basata sul traffico viene utilizzata per un servizio gestito da più bilanciatori del carico (ad esempio da un Ingress e un gateway o da due gateway), il gestore della scalabilità automatica dei pod orizzontali potrebbe prendere in considerazione il valore di traffico più elevato dei singoli bilanciatori del carico per prendere decisioni di scalabilità, anziché la somma dei valori di traffico di tutti i bilanciatori del carico.
Esegui il deployment della scalabilità automatica in base al traffico
L'esercizio seguente utilizza HorizontalPodAutoscaler
per eseguire la scalabilità automatica del deployment store-autoscale
in base al traffico che riceve. Un gateway accetta il traffico in entrata da internet per i pod. Il gestore della scalabilità automatica confronta gli indicatori di traffico
del gateway con la
capacità di traffico per pod
configurata nella risorsa di servizio store-autoscale
. Generando traffico verso il gateway, puoi influire sul numero di pod di cui viene eseguito il deployment.
Il seguente diagramma mostra come funziona il ridimensionamento automatico in base al traffico:
Per eseguire il deployment della scalabilità automatica in base al traffico:
Per i cluster standard, verifica che le classi Gateway siano installate nel cluster. Per i cluster Autopilot, le classi Gateway sono installate per impostazione predefinita.
kubectl get gatewayclass
L'output conferma che le risorse GKE GatewayClass sono pronte per l'uso nel cluster:
NAME CONTROLLER ACCEPTED AGE gke-l7-global-external-managed networking.gke.io/gateway True 16h gke-l7-regional-external-managed networking.gke.io/gateway True 16h gke-l7-gxlb networking.gke.io/gateway True 16h gke-l7-rilb networking.gke.io/gateway True 16h
Se non vedi questo output, abilita l'API Gateway nel tuo cluster GKE.
Esegui il deployment dell'applicazione di esempio e del bilanciatore del carico Gateway nel cluster:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/gke-networking-recipes/master/gateway/docs/store-autoscale.yaml
L'applicazione di esempio crea:
- Un deployment con 2 repliche.
- Un servizio con un'impostazione
GCPBackendPolicy
associatamaxRatePerEndpoint
impostata su10
. Per scoprire di più sulle funzionalità di Gateway, consulta Funzionalità di GatewayClass. - Un gateway esterno per accedere all'applicazione su internet. Per scoprire di più su come utilizzare i bilanciatori del carico Gateway, consulta Eseguire il deployment di Gateway.
- Un parametro HTTPRoute che corrisponde a tutto il traffico e lo invia al servizio
store-autoscale
.
La capacità di servizio è un elemento fondamentale quando si utilizza la scalabilità automatica basata sul traffico perché determina la quantità di traffico per pod che attiva un evento di scalabilità automatica. Viene configurato utilizzando un campo
maxRatePerEndpoint
in un GCPBackendPolicy associato al servizio, che definisce il traffico massimo che un servizio deve ricevere in richieste al secondo per pod. La capacità del servizio è specifica per la tua applicazione.Per ulteriori informazioni, consulta Determinare la capacità del servizio.
Salva il seguente manifest come
hpa.yaml
:apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: store-autoscale spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: store-autoscale minReplicas: 1 maxReplicas: 10 metrics: - type: Object object: describedObject: kind: Service name: store-autoscale metric: name: "autoscaling.googleapis.com|gclb-capacity-fullness" target: averageValue: 70 type: AverageValue
Questo manifest descrive un
HorizontalPodAutoscaler
con le seguenti proprietà:minReplicas
emaxReplicas
: impostano il numero minimo e massimo di repliche per questo deployment. In questa configurazione, il numero di pod può essere scalato da 1 a 10 repliche.describedObject.name: store-autoscale
: il riferimento al serviziostore-autoscale
che definisce la capacità di traffico.scaleTargetRef.name: store-autoscale
: il riferimento al deploymentstore-autoscale
che definisce la risorsa scalata dal Horizontal Pod Autoscaler.averageValue: 70
: valore medio target dell'utilizzo della capacità. In questo modo, il Horizontal Pod Autoscaler ha un margine di crescita in modo che i pod in esecuzione possano elaborare il traffico in eccesso durante la creazione di nuovi pod.
Horizontal Pod Autoscaler genera il seguente comportamento del traffico:
- Il numero di pod viene modificato tra 1 e 10 repliche per raggiungere il 70% della frequenza massima per endpoint. Il risultato è 7 RPS per pod quando
maxRatePerEndpoint=10
. - A più di 7 RPS per pod, i pod vengono scalati fino a raggiungere il numero massimo di 10 repliche o fino a quando il traffico medio non è pari a 7 RPS per pod.
- Se il traffico viene ridotto, i pod fare lo scale down a una frequenza ragionevole utilizzando l'algoritmo Horizontal Pod Autoscaler.
Puoi anche implementare un generatore di traffico per convalidare il comportamento della scalabilità automatica in base al traffico.
A 30 RPS, il deployment viene scalato a 5 repliche in modo che ogni replica riceva idealmente 6 RPS di traffico, ovvero il 60% di utilizzo per pod. Questo valore è inferiore all'utilizzo target del 70%, pertanto i pod vengono scalati di conseguenza. A seconda delle fluttuazioni del traffico, anche il numero di repliche con scalabilità automatica potrebbe oscillare. Per una descrizione più dettagliata di come viene calcolato il numero di repliche, consulta Comportamento della scalabilità automatica.
Scalabilità automatica in base a una metrica personalizzata o esterna
Per creare gestori della scalabilità automatica orizzontale dei pod per le metriche personalizzate e quelle esterne, consulta Ottimizzare la scalabilità automatica dei pod in base alle metriche.
Scalabilità automatica in base a più metriche
Questo esempio crea un Horizontal Pod Autoscaler che esegue la scalabilità automatica in base all'utilizzo della CPU e a una metrica personalizzata denominata packets_per_second
.
Se hai seguito l'esempio precedente e hai ancora un Horizontal Pod Autoscaler denominato nginx
,
eliminalo prima di seguire questo esempio.
Questo esempio richiede apiVersion: autoscaling/v2
. Per maggiori informazioni sulle API disponibili, consulta Versioni API per gli oggetti HorizontalPodAutoscaler
.
Salva questo manifest YAML come file denominato nginx-multiple.yaml
:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- type: Resource
resource:
name: memory
target:
type: AverageValue
averageValue: 100Mi
# Uncomment these lines if you create the custom packets_per_second metric and
# configure your app to export the metric.
# - type: Pods
# pods:
# metric:
# name: packets_per_second
# target:
# type: AverageValue
# averageValue: 100
Applica il manifest YAML:
kubectl apply -f nginx-multiple.yaml
Una volta creato, Horizontal Pod Autoscaler monitora il deployment nginx
per l'utilizzo medio della CPU,
l'utilizzo medio della memoria e (se hai rimosso il commento) la metrica personalizzatapackets_per_second
. Horizontal Pod Autoscaler esegue la scalabilità automatica del deployment in base alla metrica il cui valore creerebbe l'evento di scalabilità automatica più grande.
Configurazione del profilo HPA per le prestazioni
Il profilo HPA per le prestazioni accelera il tempo di reazione dell'HPA e consente il ricomputo rapido di fino a 1000 oggetti HPA. Puoi attivarlo sia per i cluster nuovi sia per quelli esistenti. Tuttavia, non può essere attivato per i progetti registrati in un perimetro VPC-SC.
Requisiti
Il profilo HPA per il rendimento ha i seguenti requisiti:
- Sul control plane deve essere installata la versione GKE 1.31.2-gke.1138000 o successive.
- Assicurati che l'API Autoscaling sia abilitata nel tuo cluster.
- Assicurati che a tutti gli account di servizio dei nodi sia stato assegnato il ruolo
roles/autoscaling.metricsWriter
. - Assicurati che Cloud Monitoring sia abilitato nel cluster.
Attivare il profilo HPA per le prestazioni in un nuovo cluster
Autopilot
Per creare un nuovo cluster Autopilot con il profilo HPA per le prestazioni abilitato, utilizza il seguente comando:
gcloud beta container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--cluster-version=CLUSTER_VERSION \
--hpa-profile=performance
Sostituisci:
CLUSTER_NAME
: il nome del cluster che stai creando.LOCATION
: la zona o la regione di calcolo (ad es. us-central1-a o us-central1) per il cluster.PROJECT_ID
: l'ID del tuo progetto Google Cloud.CLUSTER_VERSION
: versione GKE 1.31.2-gke.1138000 o successiva.
Standard
Per creare un nuovo cluster standard con il profilo HPA per le prestazioni abilitato, utilizza il seguente comando:
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--cluster-version=CLUSTER_VERSION \
--hpa-profile=performance
Sostituisci:
CLUSTER_NAME
: il nome del cluster che stai creando.LOCATION
: la zona o la regione di calcolo (ad es. us-central1-a o us-central1) per il cluster.PROJECT_ID
: l'ID del tuo progetto Google Cloud.CLUSTER_VERSION
: versione GKE 1.31.2-gke.1138000 o successiva.
Attivare il profilo HPA per le prestazioni in un cluster esistente
Per attivare il profilo HPA di prestazioni in un cluster esistente, utilizza il seguente comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--hpa-profile=performance
Sostituisci:
CLUSTER_NAME
: il nome del cluster.LOCATION
: la zona o la regione di calcolo (ad es. us-central1-a o us-central1) per il cluster.PROJECT_ID
: l'ID del tuo progetto Google Cloud.
Disattivare il profilo HPA per le prestazioni
Per disattivare il profilo HPA di prestazioni in un cluster, utilizza il seguente comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--hpa-profile=none
Sostituisci:
CLUSTER_NAME
: il nome del cluster.LOCATION
: la zona o la regione di calcolo (ad es. us-central1-a o us-central1) per il cluster.PROJECT_ID
: l'ID del tuo progetto Google Cloud.
Visualizzazione dei dettagli di un Horizontal Pod Autoscaler
Per visualizzare la configurazione e le statistiche di un Horizontal Pod Autoscaler, utilizza il seguente comando:
kubectl describe hpa HPA_NAME
Sostituisci HPA_NAME
con il nome dell'oggetto HorizontalPodAutoscaler
.
Se Horizontal Pod Autoscaler utilizza apiVersion: autoscaling/v2
e si basa su più
metriche, il comando kubectl describe hpa
mostra solo la metrica CPU. Per visualizzare tutte le metriche, utilizza invece il seguente comando:
kubectl describe hpa.v2.autoscaling HPA_NAME
Sostituisci HPA_NAME
con il nome dell'oggetto HorizontalPodAutoscaler
.
Lo stato attuale di ogni Horizontal Pod Autoscaler è mostrato nel campo Conditions
e gli eventi di scalabilità automatica
sono elencati nel campo Events
.
L'output è simile al seguente:
Name: nginx
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"autoscaling/v2","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"s...
CreationTimestamp: Tue, 05 May 2020 20:07:11 +0000
Reference: Deployment/nginx
Metrics: ( current / target )
resource memory on pods: 2220032 / 100Mi
resource cpu on pods (as a percentage of request): 0% (0) / 50%
Min replicas: 1
Max replicas: 10
Deployment pods: 1 current / 1 desired
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True ReadyForNewScale recommended size matches current size
ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from memory resource
ScalingLimited False DesiredWithinRange the desired count is within the acceptable range
Events: <none>
Eliminare un Horizontal Pod Autoscaler
Puoi eliminare un Horizontal Pod Autoscaler utilizzando la console Google Cloud o il comando kubectl delete
.
Console
Per eliminare il Horizontal Pod Autoscaler nginx
:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Fai clic sul nome del deployment
nginx
.Fai clic su list Azioni > Autoscale.
Fai clic su Elimina.
kubectl delete
Per eliminare nginx
Horizontal Pod Autoscaler, utilizza il seguente comando:
kubectl delete hpa nginx
Quando elimini un Horizontal Pod Autoscaler, il deployment o (o un altro oggetto di deployment) rimane
nella scala esistente e non torna al numero di repliche nel
manifest originale del deployment. Per ripristinare manualmente lo scale down del deployment a tre pod, puoi utilizzare il comando kubectl scale
:
kubectl scale deployment nginx --replicas=3
Pulizia
Se non l'hai ancora fatto, elimina il Horizontal Pod Autoscaler:
kubectl delete hpa nginx
Elimina il deployment
nginx
:kubectl delete deployment nginx
Se vuoi, elimina il cluster.
Risoluzione dei problemi
Questa sezione mostra i passaggi per la risoluzione dei problemi relativi all'utilizzo della scalabilità automatica dei pod orizzontali.
Horizontal Pod Autoscaler mostra un errore unable to fetch pod metrics for pod
Quando configuri un Horizontal Pod Autoscaler, potresti visualizzare messaggi di avviso come il seguente:
unable to fetch pod metrics for pod
È normale visualizzare questo messaggio all'avvio del server delle metriche. Tuttavia, se continui a visualizzare gli avvisi e noti che i pod non vengono scalati per il tuo carico di lavoro, assicurati di aver specificato le richieste di risorse per ogni contenitore nel tuo carico di lavoro. Per utilizzare i target di percentuale di utilizzo delle risorse con scalabilità automatica orizzontale dei pod, devi configurare le richieste per quella risorsa per ogni contenitore in esecuzione in ogni pod nel workload. In caso contrario, Horizontal Pod Autoscaler non può eseguire i calcoli necessari e non intraprende alcuna azione relativa alla metrica.
Horizontal Pod Autoscaler mostra un evento multiple services selecting the same target of...
Un Horizontal Pod Autoscaler mostra un errore multiple services selecting the same target of <hpa>: <services>
se rileva che stai utilizzando la scalabilità automatica basata sul traffico con più servizi associati al target di Horizontal Pod Autoscaler (in genere un deployment).
La scalabilità automatica in base al traffico supporta solo le configurazioni in cui è associato esattamente un servizio alla risorsa con scalabilità automatica. Consulta Scalabilità automatica in base al traffico del bilanciatore del carico. Nel messaggio di errore vengono elencati i servizi trovati.
Per risolvere il problema, assicurati che a Horizontal Pod Autoscaler sia associato un solo servizio.
Passaggi successivi
- Scopri di più sulla scalabilità automatica pod orizzontale.
- Scopri di più sulla scalabilità automatica pod verticale.
- Scopri di più sulla scalabilità automatica dei pod multidimensionale.
- Scopri di più sulla scalabilità automatica dei deployment con metriche personalizzate.
- Scopri come assegnare risorse CPU a container e pod.
- Scopri come assegnare risorse di memoria a container e pod.