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 delle spese consiste nel capire chi, dove e cosa causa le spese nel cluster EKS. Ottenere un quadro preciso di questi dati contribuirà a sensibilizzare l'opinione pubblica sulla spesa e a evidenziare le aree da correggere.

Raccomandazioni

Usa Cost Explorer

AWS Cost Explorer ha un' easy-to-useinterfaccia che consente di visualizzare, comprendere e gestire i costi e l'utilizzo di AWS nel tempo. È possibile analizzare i dati di costi e utilizzo a vari livelli utilizzando i filtri disponibili in Cost Explorer.

Costi di EKS Control Plane e EKS Fargate

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

Cost Explorer - Piano di controllo EKS

Utilizzando i filtri, possiamo interrogare i costi aggregati sostenuti per i Fargate Pod nelle diverse regioni di EKS, che includono sia le ore vCPU per CPU che i GB/ora, come mostrato nel diagramma seguente:

Cost Explorer - EKS Fargate

Etichettatura delle risorse

Amazon EKS supporta l'aggiunta di tag AWS ai 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, non si propagano ad altre risorse AWS utilizzate dal cluster come EC2 istanze o sistemi di bilanciamento del carico. Oggi, il tagging dei cluster è supportato per tutti i cluster EKS nuovi ed esistenti tramite l'API AWS, la console e. SDKs

AWS Fargate è una tecnologia che fornisce capacità di elaborazione on-demand e della giusta dimensione per i container. Prima di poter pianificare i pod su Fargate nel cluster, è necessario definire almeno un profilo Fargate che specifichi quali pod devono utilizzare Fargate al momento del lancio.

Aggiungere ed elencare 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, per semplificare la categorizzazione 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 tuoi cluster Amazon EKS per aiutarti a tracciare il proprietario e il livello di stack di ogni cluster.

Usa AWS Trusted Advisor

AWS Trusted Advisor offre una vasta gamma di controlli e raccomandazioni sulle best practice in cinque categorie: ottimizzazione dei costi, sicurezza, tolleranza agli errori, prestazioni e limiti del servizio.

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

Il Trusted Advisor fornisce anche consigli su Savings Plans e Reserved EC2 Instances per le istanze e Fargate, che consente di impegnarsi a utilizzare un importo costante in cambio di tariffe scontate.

Nota

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

Usa la dashboard di Kubernetes

Dashboard Kubernetes

Kubernetes Dashboard è un'interfaccia utente generica basata sul Web per i cluster Kubernetes, che fornisce informazioni sul cluster Kubernetes, incluso l'utilizzo delle risorse a livello di cluster, nodo e pod. La distribuzione della dashboard Kubernetes su un cluster Amazon EKS è descritta nella documentazione di Amazon EKS.

La dashboard fornisce informazioni dettagliate sull'utilizzo delle risorse per ogni nodo e pod, oltre a metadati dettagliati su pod, servizi, implementazioni e altri oggetti Kubernetes. Queste informazioni consolidate forniscono visibilità sull'ambiente Kubernetes.

Pannello di controllo Kubernetes

kubectl ferma e descrive i comandi

Visualizzazione delle metriche sull'utilizzo delle risorse con i comandi kubectl top e kubectl descrizione. kubectl top mostrerà l'uso corrente di CPU e memoria per i pod o i nodi del cluster o per un pod o un 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) utilizzata dal nodo e le percentuali della capacità allocabile del nodo rappresentate da tali numeri. È quindi possibile eseguire il drill-down fino al livello successivo, il livello del contenitore all'interno dei pod, aggiungendo il flag --containers.

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

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

kubectl top and describe, monitora 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 CloudWatch Container Insights

Usa CloudWatch Container Insights per raccogliere, aggregare e riepilogare metriche e log delle tue applicazioni e microservizi containerizzati. Container Insights è disponibile per Amazon Elastic Kubernetes Service EC2 su e 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.

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

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

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 interrogazioni 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 la guida alla 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 di AWS per tracciare i costi con Kubecost

Implementazione di kubecost con 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

Utilizza lo strumento di analisi dell'allocazione dei costi e della pianificazione della capacità Kubernetes

Kubernetes Opex Analytics è uno strumento che aiuta le organizzazioni a tenere traccia delle risorse consumate dai propri cluster Kubernetes per evitare di pagare più del dovuto. A tal fine, genera report di utilizzo a breve (7 giorni), medio (14 giorni) e a lungo termine (12 mesi) che mostrano informazioni pertinenti sulla quantità di risorse impiegate da ciascun progetto nel tempo.

Analisi Kubernetes Opex

Yotascale

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

Maggiori dettagli sono disponibili sul loro sito Web.

Alcide Advisor

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

Maggiori dettagli sono disponibili in questo post del blog.

Altri strumenti

Raccolta dei rifiuti Kubernetes

Il ruolo del Garbage Collector di Kubernetes consiste nell'eliminare determinati oggetti che prima avevano un proprietario, ma che ora non lo hanno più.

Contea di Fargate

Fargatecount è uno strumento utile che consente ai clienti AWS di tracciare, con una CloudWatch metrica personalizzata, il numero totale di pod EKS che sono stati 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 disinfettante per cluster Kubernetes

Popeye - A Kubernetes Cluster Sanitizer è un'utilità che esegue la scansione del 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 è memorizzato sul disco. Scansionando il cluster, rileva le configurazioni errate e aiuta a garantire l'adozione delle migliori pratiche

Risorse

Consulta le seguenti risorse per saperne di più sulle migliori pratiche per l'ottimizzazione dei costi.

Documentazione e blog

Strumenti