View a markdown version of this page

Consapevolezza della spesa - Amazon EKS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Consapevolezza della spesa

La consapevolezza della spesa consiste nel capire chi, dove e cosa causa le spese nel cluster EKS. Ottenere un quadro accurato di questi dati contribuirà ad aumentare la consapevolezza della spesa e ad evidenziare le aree da correggere.

Raccomandazioni

Usa Cost Explorer

AWS Cost Explorer dispone di un'interfaccia facile da usare che consente di visualizzare, comprendere e gestire i costi e l'utilizzo di AWS nel tempo. Puoi analizzare i dati sui costi e sull'utilizzo a vari livelli utilizzando i filtri disponibili in Cost Explorer.

Costi di EKS Control Plane ed EKS Fargate

Utilizzando i filtri, possiamo interrogare i costi sostenuti per i costi EKS al Control Plane e al Fargate Pod, come mostrato nel diagramma seguente:

Cost Explorer - EKS Control Plane

Utilizzando i filtri, possiamo interrogare i costi aggregati sostenuti per i Fargate Pod nelle diverse regioni in EKS, che includono sia v CPU-Hours per CPU che GB Hrs, come mostrato nel diagramma seguente:

Cost Explorer - EKS Fargate

Etichettatura delle risorse

Amazon EKS supporta l'aggiunta di tag AWS ai tuoi cluster Amazon EKS. Ciò semplifica il controllo dell'accesso all'API EKS per la gestione dei cluster. I tag aggiunti a un cluster EKS sono specifici della risorsa del cluster AWS EKS e non si propagano ad altre risorse AWS utilizzate dal cluster, come le istanze EC2 o i sistemi di bilanciamento del carico. Oggi, il tag dei cluster è supportato per tutti i cluster EKS nuovi ed esistenti tramite l'API, la console e gli SDK AWS.

AWS Fargate è una tecnologia che fornisce capacità di calcolo su richiesta e di dimensioni adeguate per i contenitori. Prima di poter pianificare i pod su Fargate nel tuo cluster, devi definire almeno un profilo Fargate che specifichi quali pod devono usare Fargate al momento del lancio.

Aggiungere ed elencare i tag a un cluster EKS:

$ aws eks tag-resource --resource-arn arn:aws:eks:us-west-2:xxx:cluster/ekscluster1 --tags team=devops,env=staging,bu=cio,costcenter=1234 $ aws eks list-tags-for-resource --resource-arn arn:aws:eks:us-west-2:xxx:cluster/ekscluster1 { "tags": { "bu": "cio", "env": "staging", "costcenter": "1234", "team": "devops" } }

Dopo aver attivato i tag di allocazione dei costi in AWS Cost Explorer, AWS utilizza i tag di allocazione dei costi per organizzare i costi delle risorse nel report di allocazione dei costi, in modo da semplificare la classificazione e il monitoraggio dei costi AWS.

I tag non hanno alcun significato semantico per Amazon EKS e vengono interpretati rigorosamente come una stringa di caratteri. Ad esempio, puoi definire un set di tag per i cluster Amazon EKS per monitorare il proprietario di ogni cluster e il livello di stack.

Usa AWS Trusted Advisor

AWS Trusted Advisor offre un ricco set di controlli e raccomandazioni sulle migliori pratiche in cinque categorie: ottimizzazione dei costi, sicurezza, tolleranza ai guasti, prestazioni e limiti di servizio.

Per l'ottimizzazione dei costi, Trusted Advisor aiuta a eliminare le risorse inutilizzate e inutilizzate e consiglia di impegnarsi a favore della capacità riservata. Le azioni chiave che aiuteranno Amazon EKS riguarderanno, tra le altre cose, le istanze EC2 poco utilizzate, gli indirizzi IP elastici non associati, i sistemi di bilanciamento del carico inattivi e i volumi EBS sottoutilizzati. L'elenco completo dei controlli è disponibile all'indirizzo https://aws.amazon.com/premiumsupport/technology/trusted-advisor/best-practice-checklist/.

Il Trusted Advisor fornisce inoltre raccomandazioni sui piani di risparmio e sulle istanze riservate per le istanze EC2 e Fargate, che consente di impegnarsi a garantire un importo di utilizzo costante in cambio di tariffe scontate.

Nota

Le raccomandazioni di Trusted Advisor sono raccomandazioni generiche e non specifiche di EKS.

Visualizza l'utilizzo delle risorse all'interno del cluster

Nota

Il progetto Kubernetes Dashboard è archiviato e non è più gestito attivamente, quindi la sua implementazione non è più consigliata. Per la visibilità delle risorse all'interno del cluster, utilizza i kubectl describe comandi kubectl top and seguenti o gli approcci CloudWatch Container Insights e Kubecost descritti nelle sezioni seguenti. Per la visibilità e l'attribuzione dei costi a livello di pod AWS-native, consulta la sezione Split Cost Allocation Data (SCAD) per Amazon EKS di seguito.

comandi kubectl interrompi e descrivi

Visualizzazione delle metriche sull'utilizzo delle risorse con i comandi kubectl top e kubectl describe. kubectl top mostrerà l'uso corrente della CPU e della memoria per i pod o i nodi del cluster o per un pod o nodo specifico. Il comando kubectl describe fornirà informazioni più dettagliate su un nodo o un pod specifico.

$ kubectl top pods $ kubectl top nodes $ kubectl top pod pod-name --namespace mynamespace --containers

Utilizzando il comando top, l'output mostrerà la quantità totale di CPU (in core) e memoria (in MiB) che il nodo sta utilizzando e le percentuali della capacità allocabile del nodo rappresentate da quei numeri. È quindi possibile passare al livello successivo, il livello di contenitore all'interno dei pod, aggiungendo un flag --containers.

$ kubectl describe node <node> $ kubectl describe pod <pod>

kubectl describe restituisce la percentuale della capacità totale disponibile rappresentata da ciascuna richiesta o limite di risorse.

kubectl top e description, traccia l'utilizzo e la disponibilità di risorse critiche come CPU, memoria e storage su pod, nodi e contenitori kubernetes. Questa consapevolezza aiuterà a comprendere l'utilizzo delle risorse e a controllare i costi.

Usa Split Cost Allocation Data (SCAD) per Amazon EKS

Split Cost Allocation Data (SCAD) per Amazon EKS aggiunge i dati sui costi e sull'utilizzo a livello di contenitore all'AWS Cost and Usage Report (CUR). In precedenza, CUR riportava i costi solo a livello di istanza Amazon EC2; SCAD attribuisce il costo ai singoli pod prendendo il costo ammortizzato dell'istanza EC2 e moltiplicandolo per la percentuale di CPU e memoria consumata da ciascun pod su quell'istanza. Per ogni pod aggiunge due record di utilizzo all'ora (CPU e memoria) o tre su istanze di calcolo accelerato (acceleratore, CPU e memoria) che coprono le GPU NVIDIA e AMD, AWS Trainium e AWS Inferentia. Ciò consente di attribuire la spesa EKS a unità aziendali, team, namespace e carichi di lavoro.

SCAD per Amazon EKS crea automaticamente tag di allocazione AWS-generated dei costi, tra cui,,, aws:eks:cluster-name eaws:eks:namespace. aws:eks:workload-name aws:eks:workload-type aws:eks:deployment aws:eks:node A partire da ottobre 2025, puoi anche importare fino a 50 etichette personalizzate Kubernetes per pod come tag di allocazione dei costi, consentendone l'attribuzione in base ad attributi quali centro di costo, applicazione, unità aziendale e ambiente. Le etichette diventano disponibili in AWS CUR entro 24 ore dall'attivazione.

Per abilitare SCAD, esegui l'attivazione dalla console di fatturazione e gestione dei costi di AWS nelle preferenze di gestione dei costi (solo management/payer gli account possono attivare l'attivazione; gli account membri possono quindi visualizzare i dati), scegli una base di misurazione per Amazon EKS (richieste di risorse, Amazon Managed Service for Prometheus o CloudWatch Container Insights) e includi i dati di allocazione dei costi frazionati nel rapporto su costi e utilizzo. SCAD è disponibile nelle versioni precedenti di CUR e CUR 2.0 (tramite Data Exports), ma non in AWS Cost Explorer. Dal CUR, i dati vengono in genere interrogati con Amazon Athena e visualizzati in Amazon QuickSight utilizzando i Cloud Intelligence Dashboards (CID), come il dashboard di allocazione dei costi dei contenitori SCAD costruito direttamente sui dati di allocazione dei costi frazionati (è disponibile anche un Kubecost-based dashboard quando si utilizza Kubecost come origine dati).

Usa Container Insights CloudWatch

Usa CloudWatch Container Insights per raccogliere, aggregare e riepilogare metriche e log dalle tue applicazioni e microservizi containerizzati. Container Insights è disponibile per Amazon Elastic Kubernetes Service su EC2 e le piattaforme Kubernetes su Amazon EC2. I parametri includono l'utilizzo di risorse come CPU, memoria, dischi e rete.

L'installazione di Insights è riportata nella documentazione. https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-EKS.html

CloudWatch crea metriche aggregate a livello di cluster, nodo, pod, attività e servizio come CloudWatch metriche.

La seguente query mostra un elenco di nodi, ordinati in base all'utilizzo medio della CPU dei nodi

STATS avg(node_cpu_utilization) as avg_node_cpu_utilization by NodeName
| SORT avg_node_cpu_utilization DESC

Utilizzo della CPU in base al nome del contenitore

stats pct(container_cpu_usage_total, 50) as CPUPercMedian by kubernetes.container_name
| filter Type="Container"

Utilizzo del disco in base al nome del contenitore

stats floor(avg(container_filesystem_usage/1024)) as container_filesystem_usage_avg_kb by InstanceId, kubernetes.container_name, device
| filter Type="ContainerFS"
| sort container_filesystem_usage_avg_kb desc

Altre domande di esempio sono fornite nella documentazione di Container Insights

Questa consapevolezza aiuterà a comprendere l'utilizzo delle risorse e a controllare i costi.

Utilizzo di Kubecost per la consapevolezza e l'orientamento della spesa

Strumenti di terze parti come kubecost possono essere implementati anche su Amazon EKS per ottenere visibilità sui costi di gestione del cluster Kubernetes. Fai riferimento a questo blog AWS per monitorare i costi utilizzando Kubecost

Distribuzione di kubecost utilizzando Helm 3:

$ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash $ helm version --short v3.2.1+gfe51cd1 $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/ $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/c^C $ kubectl create namespace kubecost namespace/kubecost created $ helm repo add kubecost https://kubecost.github.io/cost-analyzer/ "kubecost" has been added to your repositories $ helm install kubecost kubecost/cost-analyzer --namespace kubecost --set kubecostToken="aGRoZEBqc2pzLmNvbQ==xm343yadf98" NAME: kubecost LAST DEPLOYED: Mon May 18 08:49:05 2020 NAMESPACE: kubecost STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: --------------------------------------------------Kubecost has been successfully installed. When pods are Ready, you can enable port-forwarding with the following command: kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 Next, navigate to http://localhost:9090 in a web browser. $ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 NOTE: If you are using Cloud 9 or have a need to forward it to a different port like 8080, issue the following command $ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 8080:9090

Dashboard Kubecost - Kubernetes Cluster Auto Scaler logs

Usa lo strumento di analisi per l'allocazione dei costi e la pianificazione della capacità di Kubernetes

Kubernetes Opex Analytics è uno strumento che aiuta le organizzazioni a tenere traccia delle risorse consumate dai loro cluster Kubernetes per evitare pagamenti eccessivi. A tal fine, genera report di utilizzo a breve (7 giorni), medio (14 giorni) e lungo termine (12 mesi) che mostrano informazioni pertinenti sulla quantità di risorse che ciascun progetto sta spendendo nel tempo.

Analisi Opex di Kubernetes

Scala Yotascale

Yotascale aiuta ad allocare con precisione i costi di Kubernetes. La funzionalità di allocazione dei costi di Kubernetes di Yotascale utilizza i dati sui costi effettivi, che includono gli sconti sulle istanze riservate e i prezzi spot delle istanze anziché le stime generiche dei tassi di mercato, per calcolare l'impatto complessivo dei costi di Kubernetes

Maggiori dettagli sono disponibili sul loro sito Web. https://www.yotascale.com/

Alcide Advisor

Alcide è un partner tecnologico avanzato di AWS Partner Network (APN). Alcide Advisor aiuta a garantire che la configurazione del cluster, dei nodi e dei pod Amazon EKS sia ottimizzata per l'esecuzione in base alle migliori pratiche di sicurezza e alle linee guida interne. Alcide Advisor è un servizio senza agenti per l'audit e la conformità di Kubernetes creato per garantire un flusso sicuro e senza intoppi rafforzando la fase di sviluppo prima di passare alla produzione. DevSecOps

Maggiori dettagli sono disponibili in questo post del blog.

Altri strumenti

Kubernetes Garbage Collection

Il ruolo del Garbage Collector di Kubernetes è eliminare determinati oggetti che una volta avevano un proprietario, ma che non lo hanno più.

Conteggio di Fargate

Fargatecount è uno strumento utile che consente ai clienti AWS di tracciare, con una CloudWatch metrica personalizzata, il numero totale di pod EKS distribuiti su Fargate in una regione specifica di un account specifico. Questo aiuta a tenere traccia di tutti i pod Fargate in esecuzione su un cluster EKS.

Popeye: un Kubernetes Cluster Sanitizer

Popeye - Un Kubernetes Cluster Sanitizer è un'utilità che analizza il cluster Kubernetes in tempo reale e segnala potenziali problemi con le risorse e le configurazioni distribuite. Disinfetta il cluster in base a ciò che è distribuito e non a ciò che è su disco. Scansionando il cluster, rileva le configurazioni errate e ti aiuta a garantire che siano applicate le migliori pratiche

Resources

Fai riferimento alle seguenti risorse per saperne di più sulle best practice per l'ottimizzazione dei costi.

Documentazione e blog

Tools (Strumenti)