Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo offre una panoramica del ridimensionamento dei componenti aggiuntivi ottimizzati per i costi nel servizio Azure Kubernetes. Con il ridimensionamento dei componenti aggiuntivi ottimizzati per i costi, è possibile gestire componenti aggiuntivi che richiedono CPU e memoria personalizzate eseguendo l'override delle configurazioni predefinite o abilitando la scalabilità automatica. Questa funzionalità garantisce che le risorse non siano eccessivamente allocate ai pod dei componenti aggiuntivi, migliorando i risparmi sui costi e l'efficienza del cluster.
Informazioni generali
L'abilitazione del ridimensionamento del componente aggiuntivo ottimizzato per i costi installa il componente aggiuntivo Vertical Pod Autoscaler (VPA), consentendo ai componenti aggiuntivi supportati di ridimensionare automaticamente in base all'utilizzo.
Questa funzionalità consente anche di personalizzare le richieste di CPU/memoria predefinite della risorsa e i limiti in Distribuzioni e DaemonSet, la CPU/memoria massima e minima consentita e la modalità di aggiornamento VPA all'interno delle risorse personalizzate VPA. Per ulteriori informazioni, vedere personalizzare la configurazione delle risorse per i componenti aggiuntivi AKS.
Componenti aggiuntivi supportati di AKS
I seguenti componenti aggiuntivi gestiti di AKS supportano la funzionalità di scalabilità ottimizzata per i costi dei componenti aggiuntivi.
| Componente aggiuntivo | Comportamento di facilitazione | Nome della risorsa personalizzata VPA | Comando per controllare la risorsa personalizzata VPA |
|---|---|---|---|
| CoreDNS | Abilitato per impostazione predefinita nei nuovi cluster del servizio Azure Kubernetes. | coredns |
kubectl get vpa coredns --namespace kube-system |
| Identità del carico di lavoro | Componente aggiuntivo facoltativo che richiede l'abilitazione manuale. | azure-wi-webhook-controller-manager |
kubectl get vpa azure-wi-webhook-controller-manager --namespace kube-system |
| L'integrità dell'immagine | Componente aggiuntivo facoltativo che richiede l'abilitazione manuale. | ratify |
kubectl get vpa ratify --namespace gatekeeper-system |
| Osservabilità di rete (Retina) | Componente aggiuntivo facoltativo che richiede l'abilitazione manuale. |
retina-agent e retina-operator |
kubectl get vpa retina-agent --namespace kube-system e kubectl get vpa retina-operator --namespace kube-system |
Modalità VPA supportate per il ridimensionamento dei componenti aggiuntivi ottimizzati per i costi
VPA supporta attualmente le modalità seguenti per il ridimensionamento dei componenti aggiuntivi ottimizzati per i costi:
- Off: La VPA fornisce i dati delle raccomandazioni sulle risorse, ma non li applica al pod di destinazione.
- Iniziale (modalità predefinita): la VPA applica automaticamente le raccomandazioni relative alla CPU e alla memoria al pod di destinazione al riavvio, ma non avvia il riavvio stesso.
- Auto: la vpa aggiorna automaticamente le richieste di CPU e memoria per i pod in base alle raccomandazioni.
Annotazioni
Quando si abilita il ridimensionamento del componente aggiuntivo ottimizzato per i costi, prendere in considerazione le informazioni seguenti:
- Se si elimina la risorsa personalizzata Deployment, DaemonSet o VPA, le modifiche tornano alla configurazione iniziale dell'add-on AKS.
- La funzionalità di scalabilità ottimizzata per i costi consente al componente aggiuntivo VPA di scalare automaticamente i componenti aggiuntivi AKS supportati. Non funziona con VPA self-hosted.
- Il servizio Azure Kubernetes riavvia i pod del componente aggiuntivo quando si abilita il ridimensionamento dei componenti aggiuntivi ottimizzati per i costi. CoreDNS è attualmente l'unica eccezione per evitare potenziali interruzioni durante il riavvio. Per altre informazioni, vedere Comportamento di scalabilità automatica CoreDNS.
Avvertimento
Assicurarsi di disporre di risorse di calcolo sufficienti nel pool di nodi di sistema per i componenti aggiuntivi quando si abilita il ridimensionamento del componente aggiuntivo ottimizzato per i costi. AKS consiglia di attivare il ridimensionamento automatico del cluster o il autoprovisioning dei nodi per garantire il ridimensionamento corretto e automatico delle risorse di calcolo. Monitorare i pod dei componenti aggiuntivi in sospeso quando si usa la funzionalità di scalabilità dei componenti aggiuntivi ottimizzata per i costi. La VPA potrebbe consigliare richieste di risorse che superano la capacità del nodo disponibile, causando potenzialmente pod non pianificabili. È possibile controllare questo comportamento personalizzando i valori min/max per le richieste e i limiti dei componenti aggiuntivi supportati.
Prerequisiti
- Un cluster AKS che esegue Kubernetes versione 1.25 o successiva.
- Azure CLI versione 2.60.0 o successiva installata e configurata. Eseguire
az --versionper trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. -
Installare l'
aks-previewestensione dell'interfaccia della riga di comando di Azure e registrare la funzionalità di anteprima del ridimensionamento dei componenti aggiuntivi ottimizzati per i costi.
Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Installare l'estensione dell'interfaccia della riga di comando di Azure aks-preview
Installare l'estensione
aks-previewusando il comandoaz extension add.az extension add --name aks-previewEseguire l'aggiornamento alla versione più recente dell'estensione usando il comando
az extension update.az extension update --name aks-preview
Registrare la funzionalità di anteprima del componente aggiuntivo ottimizzata per i costi
Registrare la funzionalità di anteprima del ridimensionamento dei componenti aggiuntivi ottimizzati per i costi usando il comando
az feature register.az feature register --namespace "Microsoft.ContainerService" --name "AKS-AddonAutoscalingPreview"Servono alcuni minuti prima che lo stato venga visualizzato come Registrato.
Verificare lo stato della registrazione usando il comando
az feature show.az feature show --namespace "Microsoft.ContainerService" --name "AKS-AddonAutoscalingPreview"Quando lo stato viene visualizzato come Registrato, aggiornare la registrazione del provider Microsoft.ContainerService usando il
az provider registercomando .az provider register --namespace Microsoft.ContainerService
Abilitare il ridimensionamento ottimizzato per i costi dei componenti aggiuntivi in un cluster AKS
Quando si abilita il componente aggiuntivo, il cluster del servizio Azure Kubernetes installa automaticamente il componente aggiuntivo VPA. I componenti aggiuntivi AKS che supportano la funzionalità di scalabilità ottimizzata per i costi degli add-on hanno un comportamento di abilitazione diverso.
Annotazioni
Se si usa Bicep, modelli ARM o Terraform, impostare VerticalPodAutoscaler su "True" e AddonAutoscaling su "enabled".
Abilitare la scalabilità dei componenti aggiuntivi ottimizzati per i costi in un nuovo cluster
Abilitare il ridimensionamento del componente aggiuntivo ottimizzato per i costi in un nuovo cluster del servizio Azure Kubernetes usando il comando
az aks createcon il flag--enable-optimized-addon-scaling.az aks create --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --enable-optimized-addon-scaling
Abilitare il ridimensionamento del componente aggiuntivo ottimizzato per i costi in un cluster esistente
Abilitare il ridimensionamento del componente aggiuntivo ottimizzato per i costi in un cluster del servizio Azure Kubernetes esistente usando il comando
az aks updatecon il flag--enable-optimized-addon-scaling.az aks update --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --enable-optimized-addon-scaling
Disabilitare il ridimensionamento ottimizzato per i costi dei componenti aggiuntivi in un cluster AKS
Disabilitare il ridimensionamento del componente aggiuntivo ottimizzato per i costi in un cluster del servizio Azure Kubernetes usando il comando
az aks updatecon il flag--disable-optimized-addon-scaling.az aks update --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --disable-optimized-addon-scaling
Annotazioni
La disabilitazione della funzionalità di ridimensionamento dei componenti aggiuntivi ottimizzati per i costi non disabilita il componente aggiuntivo VPA per impostazione predefinita. Per disabilitare la VPA, vedere Disabilitare VPA in un cluster AKS.
Personalizzare la configurazione predefinita delle risorse
Con la funzionalità di ridimensionamento dei componenti aggiuntivi ottimizzata per i costi abilitata nel cluster, è possibile personalizzare le impostazioni predefinite della CPU/memoria per le risorse del componente aggiuntivo, nonché la configurazione vpa predefinita per i componenti aggiuntivi del servizio Azure Kubernetes supportati. Per ulteriori informazioni, vedere personalizzare la configurazione delle risorse per i componenti aggiuntivi AKS.
Applicazione manuale dei valori consigliati di VPA
Annotazioni
Con la modalità Iniziale, la VPA applica le richieste di CPU e memoria consigliate solo quando un pod viene creato o aggiornato. Se si vuole che le raccomandazioni vengano applicate immediatamente, aggiornare manualmente i pod. Prima di applicare manualmente i valori consigliati, assicurarsi che la modalità di aggiornamento VPA sia impostata su Initial o Auto nella risorsa personalizzata VPA.
Controllare lo stato del pod e l'utilizzo della CPU/memoria per verificare che il pod sia in esecuzione come previsto.
L'esempio seguente usa il
kubectl get podcomando per controllare lo stato di un pod CoreDNS:kubectl get pod <coredns-pod-name> --namespace kube-system -o yamlL'output seguente mostra uno stato di esempio di un pod CoreDNS:
apiVersion: v1 kind: Pod metadata: name: <coredns-pod-name> namespace: kube-system spec: ... containers: - name: coredns resources: limits: cpu: "3" memory: "500Mi" requests: cpu: "100m" memory: "70Mi"Ottenere il valore consigliato di VPA usando il
kubectl get vpacomando .kubectl get vpa coredns --namespace kube-systemL'output seguente mostra un esempio del valore consigliato di VPA per un pod CoreDNS:
NAME MODE CPU MEM PROVIDED AGE coredns Initial 11m 23574998 True 44mSe si vogliono usare i valori consigliati da VPA, eliminare manualmente il pod usando il
kubectl delete podcomando per riavviare il pod con i valori consigliati da VPA.kubectl delete pod <coredns-pod-name> --namespace kube-systemDopo il riavvio del pod, verificare lo stato del pod e gli aggiornamenti cpu/memoria usando il
kubectl get podcomando .kubectl get pod <coredns-pod-name> --namespace kube-system -o yamlL'output seguente mostra uno stato di esempio di un pod CoreDNS dopo l'applicazione dei valori consigliati di VPA:
apiVersion: v1 kind: Pod metadata: name: <coredns-pod-name> namespace: kube-system spec: ... containers: - name: coredns resources: limits: cpu: "330m" memory: "168392842" requests: cpu: "11m" memory: "23574998"
Risoluzione dei problemi
Con la funzionalità di scalabilità dei componenti aggiuntivi ottimizzata per i costi abilitati nel cluster, è possibile personalizzare le impostazioni predefinite di CPU e memoria per le risorse del componente aggiuntivo, nonché modificare la configurazione VPA predefinita per i componenti aggiuntivi gestiti supportati da Azure Kubernetes.
Se i pod dei componenti aggiuntivi abilitati per la scalabilità automatica sono in sospeso o non vengono visualizzati suggerimenti per la scalabilità automatica dei componenti aggiuntivi abilitati per la scalabilità automatica, seguire questa procedura per risolvere il problema.
Controllare lo stato del componente aggiuntivo VPA gestito dal servizio Azure Kubernetes
Controllare se tutti i componenti del sistema VPA sono in esecuzione usando il
kubectl get podscomando .kubectl get pods --namespace kube-system | grep vpaL'output dovrebbe mostrare tre pod (vpa-admission-controller, vpa-recommender e vpa-updater) in esecuzione nello spazio dei nomi
kube-system, come nell'esempio seguente:vpa-admission-controller 2/2 2 2 4m11s vpa-recommender 1/1 1 1 4m11s vpa-updater 1/1 1 1 4m11sPer ognuno dei tre pod VPA, controllare i log per eventuali errori usando il
kubectl logscomando . Assicurarsi di sostituire<pod-name>con i nomi dei pod VPA.kubectl logs <pod-name> --namespace kube-system | grep -e '^E[0-9]\{4\}'Verificare che la definizione di risorsa personalizzata (CRD) sia stata creata usando il
kubectl getcomando .kubectl get customresourcedefinition | grep verticalpodautoscalers
Controllare lo stato del pod e l'utilizzo della CPU/memoria
Controllare lo stato del pod usando il
kubectl get podcomando .kubectl get pod <pod-name> --namespace=kube-systemSe il pod ha uno stato
Pending, controllare la proprietà di stato del pod per determinare il motivo per cui il pod non è in esecuzione.kubectl describe pod <pod-name> --namespace kube-system -o yamlL'output seguente mostra uno stato di esempio di un pod con stato
Pending:apiVersion: v1 kind: Pod ... status: conditions: - lastProbeTime: null lastTransitionTime: "2023-05-03T17:05:26Z" message: '0/1 nodes are available: 1 Insufficient cpu, 1 Insufficient memory. preemption: 0/1 nodes are available: 1 Insufficient cpu, 1 Insufficient memory..' reason: Unschedulable status: "False" type: PodScheduled phase: Pending qosClass: GuaranteedSe l'output indica che il pod è
Pendingper insufficienza di CPU o di memoria, si possono considerare le seguenti azioni:- Aggiungere altri nodi in modo che i pod possano essere pianificati nei nodi con un utilizzo inferiore delle risorse.
- Disabilitare vpa per il pod del componente aggiuntivo di destinazione impostando la modalità di aggiornamento su Disattivato e quindi aggiornare manualmente le richieste/limiti ai valori delle risorse disponibili nel nodo. Prestare attenzione quando si impostano i limiti delle risorse su valori estremamente bassi, in quanto ciò può comportare l'interruzione del pod o la limitazione della CPU se tenta di usare più risorse rispetto a quelle disponibili nel nodo.
Passaggi successivi
- Configurare Cluster Autoscaler o Node Autoprovisioning nel cluster per ridimensionare automaticamente il cluster.