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
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:
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:
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 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,
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
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 -
Usa lo strumento di analisi per l'allocazione dei costi e la pianificazione della capacità di Kubernetes
Kubernetes Opex Analytics
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
Altri strumenti
Kubernetes Garbage Collection
Il ruolo del Garbage Collector di Kubernetes
Conteggio di Fargate
Fargatecount
Popeye: un Kubernetes Cluster Sanitizer
Popeye - Un Kubernetes Cluster Sanitizer
Resources
Fai riferimento alle seguenti risorse per saperne di più sulle best practice per l'ottimizzazione dei costi.