Conscientização sobre despesas - Amazon EKS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conscientização sobre despesas

Conscientizar as despesas é entender quem, onde e o que está causando despesas em seu cluster EKS. Obter uma imagem precisa desses dados ajudará a aumentar a conscientização sobre seus gastos e destacar áreas a serem corrigidas.

Recomendações

Use o Cost Explorer

O AWS Cost Explorer tem uma easy-to-use interface que permite visualizar, entender e gerenciar seus custos e uso da AWS ao longo do tempo. Você pode analisar dados de custo e uso, em vários níveis, usando os filtros disponíveis no Cost Explorer.

Custos do plano de controle EKS e do EKS Fargate

Usando os filtros, podemos consultar os custos incorridos com os custos do EKS no Plano de Controle e no Fargate Pod, conforme mostrado no diagrama abaixo:

Cost Explorer - Plano de controle EKS

Usando os filtros, podemos consultar os custos agregados dos Fargate Pods em todas as regiões do EKS, o que inclui horas de vCPU por CPU e GB por hora, conforme mostrado no diagrama abaixo:

Cost Explorer - EKS Fargate

Marcação de recursos

O Amazon EKS oferece suporte à adição de tags da AWS aos seus clusters do Amazon EKS. Isso facilita o controle do acesso à API EKS para gerenciar seus clusters. As tags adicionadas a um cluster do EKS são específicas do recurso de cluster do AWS EKS e não se propagam para outros recursos da AWS usados pelo cluster, como EC2 instâncias ou balanceadores de carga. Atualmente, a marcação de clusters é compatível com todos os clusters EKS novos e existentes por meio da API, console e. SDKs

O AWS Fargate é uma tecnologia que fornece capacidade computacional sob demanda e do tamanho certo para contêineres. Antes de agendar pods no Fargate no cluster, é necessário definir pelo menos um perfil do Fargate que especifique quais pods devem usá-lo quando forem executados.

Adicionar e listar tags a um 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" } }

Depois de ativar as tags de alocação de custos no AWS Cost Explorer, a AWS usa as tags de alocação de custos para organizar seus custos de recursos em seu relatório de alocação de custos, para facilitar a categorização e o controle de seus custos da AWS.

As etiquetas não têm significado semântico no Amazon EKS e são interpretadas estritamente como uma sequência de caracteres. Por exemplo, você pode definir um conjunto de etiquetas para os clusters do Amazon EKS para ajudar a monitorar o proprietário e o nível da pilha de cada cluster.

Use o AWS Trusted Advisor

O AWS Trusted Advisor oferece um rico conjunto de verificações e recomendações de melhores práticas em cinco categorias: otimização de custos; segurança; tolerância a falhas; desempenho; e limites de serviço.

Para otimização de custos, o Trusted Advisor ajuda a eliminar recursos não utilizados e ociosos e recomenda assumir compromissos com a capacidade reservada. Os principais itens de ação que ajudarão o Amazon EKS envolverão EC2 instâncias pouco utilizadas, endereços IP elásticos não associados, balanceadores de carga ociosos, volumes subutilizados do EBS, entre outras coisas. A lista completa de verificações é fornecida em https://aws.amazon.com/premiumsupport/technology/trusted-advisor/best-practice-checklist/.

O Trusted Advisor também fornece recomendações de Savings Plans e Reserved EC2 Instances para instâncias e Fargate, o que permite que você se comprometa com um valor de uso consistente em troca de tarifas com desconto.

nota

As recomendações do Trusted Advisor são recomendações genéricas e não específicas do EKS.

Use o painel do Kubernetes

Painel do Kubernetes

O Kubernetes Dashboard é uma interface de usuário baseada na web de uso geral para clusters Kubernetes, que fornece informações sobre o cluster Kubernetes, incluindo o uso de recursos em nível de cluster, nó e pod. A implantação do painel do Kubernetes em um cluster do Amazon EKS é descrita na documentação do Amazon EKS.

O painel fornece detalhamentos do uso de recursos para cada nó e pod, bem como metadados detalhados sobre pods, serviços, implantações e outros objetos do Kubernetes. Essas informações consolidadas fornecem visibilidade do seu ambiente Kubernetes.

Painel do Kubernetes

comandos kubectl top e describe

Visualizando métricas de uso de recursos com os comandos kubectl top e kubectl describe. O kubectl top mostrará o uso atual da CPU e da memória para os pods ou nós em todo o cluster ou para um pod ou nó específico. O comando kubectl describe fornecerá informações mais detalhadas sobre um nó ou pod específico.

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

Usando o comando top, a saída exibirá a quantidade total de CPU (em núcleos) e memória (em MiB) que o nó está usando e as porcentagens da capacidade alocável do nó que esses números representam. Em seguida, você pode detalhar até o próximo nível, o nível do contêiner dentro dos pods, adicionando uma sinalização --containers.

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

kubectl describe retorna a porcentagem da capacidade total disponível que cada solicitação ou limite de recurso representa.

kubectl top e descreva, acompanhe a utilização e a disponibilidade de recursos essenciais, como CPU, memória e armazenamento em pods, nós e contêineres do Kubernetes. Essa conscientização ajudará a entender o uso de recursos e a controlar os custos.

Use o CloudWatch Container Insights

Use o CloudWatch Container Insights para coletar, agregar e resumir métricas e registros de seus aplicativos e microsserviços em contêineres. O Container Insights está disponível para o Amazon Elastic Kubernetes Service EC2 no Amazon e para as plataformas Kubernetes na Amazon. EC2 As métricas incluem a utilização de recursos, como CPU, memória, disco e rede.

A instalação dos insights é fornecida na documentação.

CloudWatch cria métricas agregadas no nível de cluster, nó, pod, tarefa e serviço como CloudWatch métricas.

A consulta a seguir mostra uma lista de nós, ordenada pela utilização média da CPU do nó

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

Uso da CPU por nome do contêiner

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

Uso do disco por nome do contêiner

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

Mais exemplos de consultas são fornecidos na documentação do Container Insights

Essa conscientização ajudará a entender o uso de recursos e a controlar os custos.

Usando o Kubecost para conscientização e orientação sobre despesas

Ferramentas de terceiros, como o kubecost, também podem ser implantadas no Amazon EKS para obter visibilidade do custo de execução do seu cluster Kubernetes. Consulte este blog da AWS para monitorar os custos usando o Kubecost

Implantando o kubecost usando o 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

Painel do Kubecost - Kubernetes Cluster Auto Scaler logs

Use a ferramenta de análise de alocação de custos e planejamento de capacidade do Kubernetes

O Kubernetes Opex Analytics é uma ferramenta para ajudar as organizações a rastrear os recursos consumidos por seus clusters Kubernetes para evitar pagamentos excessivos. Para fazer isso, ele gera relatórios de uso de curto (7 dias), médio (14 dias) e longo prazo (12 meses) mostrando informações relevantes sobre a quantidade de recursos que cada projeto está gastando ao longo do tempo.

Análise Opex do Kubernetes

Escala de Yota

O Yotascale ajuda a alocar com precisão os custos do Kubernetes. O recurso de alocação de custos do Kubernetes do Yotascale utiliza dados de custo reais, que incluem descontos de instâncias reservadas e preços de instâncias spot, em vez de estimativas genéricas de taxa de mercado, para informar o custo total do Kubernetes

Mais detalhes podem ser encontrados em seu site.

Conselheiro Alcide

Alcide é parceiro de tecnologia avançada da AWS Partner Network (APN). O Alcide Advisor ajuda a garantir que a configuração do cluster, dos nós e dos pods do Amazon EKS seja ajustada para ser executada de acordo com as melhores práticas de segurança e as diretrizes internas. O Alcide Advisor é um serviço sem agente para auditoria e conformidade do Kubernetes, criado para garantir um DevSecOps fluxo seguro e sem atrito, fortalecendo o estágio de desenvolvimento antes de passar para a produção.

Mais detalhes podem ser encontrados nesta postagem do blog.

Outras ferramentas

Coleta de lixo do Kubernetes

A função do coletor de lixo do Kubernetes é excluir certos objetos que já tiveram um proprietário, mas não têm mais um proprietário.

Condado de Fargate

O Fargatecount é uma ferramenta útil que permite aos clientes da AWS rastrear, com uma CloudWatch métrica personalizada, o número total de pods EKS que foram implantados no Fargate em uma região específica de uma conta específica. Isso ajuda a acompanhar todos os pods do Fargate em execução em um cluster EKS.

Popeye - Um desinfetante de cluster Kubernetes

Popeye - A Kubernetes Cluster Sanitizer é um utilitário que escaneia o cluster Kubernetes ativo e relata possíveis problemas com os recursos e configurações implantados. Ele limpa seu cluster com base no que está implantado e não no que está no disco. Ao escanear seu cluster, ele detecta configurações incorretas e ajuda você a garantir que as melhores práticas estejam em vigor

Recursos

Consulte os recursos a seguir para saber mais sobre as melhores práticas para otimização de custos.

Documentação e blogs

Ferramentas