Revisión de Kubecost para aforrar diñeiro en Kubernetes nas nubes

Revisión de Kubecost para aforrar diñeiro en Kubernetes nas nubes

Actualmente, cada vez son máis as empresas que están a transferir a súa infraestrutura desde os servidores de hardware e as súas propias máquinas virtuais á nube. Esta solución é fácil de explicar: non hai que preocuparse polo hardware, o clúster se configura facilmente de moitas formas diferentes... e o máis importante, as tecnoloxías existentes (como Kubernetes) permiten simplemente escalar a potencia de cómputo dependendo da carga. .

O aspecto financeiro sempre é importante. A ferramenta que se comenta neste artigo está deseñada para axudar a reducir os orzamentos ao utilizar a infraestrutura na nube con Kubernetes.

Introdución

Kubecost é unha startup californiana de Google, que crea unha solución para calcular os custos de infraestrutura en servizos na nube (dentro dun clúster de Kubernetes + recursos compartidos), buscar colos de botella na configuración do clúster e enviar as notificacións adecuadas a Slack.

Temos clientes con Kubernetes tanto nas nubes coñecidas de AWS como GCP e, máis raramente para a comunidade Linux, Azure, en xeral, en todas as plataformas admitidas por Kubecost. Para algúns deles, nós mesmos calculamos os custos dos servizos dentro do clúster (utilizando un método similar ao utilizado por Kubecost), e tamén supervisamos os custos de infraestrutura e intentamos optimizalos. Polo tanto, é lóxico que nos interesara a posibilidade de automatizar este tipo de tarefas.

O código fonte do módulo principal de Kubecost está aberto baixo os termos da licenza de código aberto (Licenza Apache 2.0). Pódese usar libremente e as funcións dispoñibles deberían ser suficientes para proxectos pequenos. Non obstante, o negocio é negocio: o resto do produto está pechado, pode ser usado por subscricións de pago, que tamén implican apoio comercial. Ademais, os autores ofrecen unha licenza gratuíta para pequenos clústeres (1 clúster con 10 nodos - durante a redacción deste artigo, este límite ampliouse a 20 nodos) ou un período de proba con capacidades completas durante 1 mes.

Como funciona todo

Entón, a parte principal de Kubecost é a aplicación modelo de custo, escrito en Go. Chámase un gráfico Helm que describe todo o sistema analizador de custos e no seu núcleo está unha montaxe a partir dun modelo de custo con Prometheus, Grafana e varios cadros de mando.

En xeral, cost-model ten a súa propia interface web, que mostra gráficos e estatísticas detalladas sobre os custos en forma de táboa, así como, por suposto, consellos para optimizar os custos. Os paneis presentados en Grafana son unha etapa anterior do desenvolvemento de Kubecost e conteñen os mesmos datos que o modelo de custos, complementándoos coas estatísticas habituais sobre o consumo de CPU/memoria/rede/espazo en disco no clúster e os seus compoñentes. .

Como funciona Kubecost?

  • Cost-model recibe prezos dos servizos a través da API dos provedores de nube.
  • Ademais, dependendo do tipo de ferro do nodo e da rexión, calcúlase o custo por nodo.
  • En función do custo de execución dos nodos, cada pod de folla obtén un custo por hora de uso da CPU, por gigabyte de memoria consumido e por hora por gigabyte de datos almacenados, dependendo do nodo no que se executaba ou da clase de almacenamento.
  • En función do custo de operación de pods individuais, o pago calcúlase para espazos de nomes, servizos, implementacións e StatefulSets.
  • As estatísticas calcúlanse utilizando as métricas proporcionadas por kube-state-metrics e node-exporter.

É importante ter en conta que Kubecost por defecto só conta os recursos dispoñibles en Kubernetes. As bases de datos externas, os servidores GitLab, os almacenamentos S3 e outros servizos que non estean no clúster (aínda que se atopen na mesma nube) non son visibles para el. Aínda que para GCP e AWS podes engadir as claves das túas contas de servizo e calcular todo xunto.

Instalación

Kubecost require:

  • Kubernetes versión 1.8 e superior;
  • métricas de estado de kube;
  • Prometeo;
  • nodo-exportador.

Aconteceu que nos nosos clústeres todas estas condicións cumpríanse con antelación, polo que resultou que bastaba con especificar o punto final correcto para acceder a Prometheus. Non obstante, o gráfico oficial de Kubecost Helm contén todo o que precisa para executar nun clúster.

Hai varias formas de instalar Kubecost:

  1. Método de instalación estándar descrito en instrucións no sitio web do programador. Obrigatorio engade o repositorio do analizador de custos a Helm e, a continuación, instale o gráfico. Todo o que queda é reenviar o teu porto e axustar a configuración ao estado desexado manualmente (a través de kubectl) e/ou usando a interface web do modelo de custo.

    Nin sequera probamos este método, xa que non usamos configuracións preparadas de terceiros, pero parece unha boa opción "só probalo por ti mesmo". Se xa tes algúns dos compoñentes do sistema instalados ou queres máis axustes, é mellor considerar o segundo camiño.

  2. Use esencialmente o mesmo cadro, pero configúrao e instálao vostede mesmo de calquera forma conveniente.

    Como xa se mencionou, ademais do propio kubecost, este gráfico contén gráficos de Grafana e Prometheus, que tamén se poden personalizar segundo se desexe.

    Dispoñible no gráfico values.yaml for cost-analyzer permítelle configurar:

    • unha lista de compoñentes do analizador de custos que deben ser implantados;
    • o teu punto final para Prometheus (se xa tes un);
    • dominios e outras opcións de entrada para o modelo de custo e Grafana;
    • anotacións para vainas;
    • a necesidade de utilizar almacenamento permanente e o seu tamaño.

    Está dispoñible unha lista completa de opcións de configuración dispoñibles con descricións en documentación.

    Dado que kubecost na súa versión básica non pode restrinxir o acceso, terá que configurar inmediatamente a autenticación básica para o panel web.

  3. Instala só o núcleo do sistema - Modelo de custos. Para iso, debes ter instalado Prometheus no clúster e especificar o valor correspondente do seu enderezo na variable prometheusEndpoint para Helm. Despois diso - aplicar conxunto de configuracións YAML no clúster.

    De novo, terás que engadir manualmente Ingress con basic-auth. Finalmente, terás que engadir unha sección para recoller métricas do modelo de custos extraScrapeConfigs na configuración de Prometheus:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <адрес вашего сервиса kubecost>
        type: 'A'
        port: 9003

Que conseguimos?

Cunha instalación completa, temos á nosa disposición o panel web kubecost e Grafana cun conxunto de cadros de mando.

Custo total, que se mostra na pantalla principal, mostra en realidade o custo estimado dos recursos para o mes. Isto proxectado prezo que reflicte o custo de uso do clúster (por mes) ao nivel actual de consumo de recursos.

Esta métrica é máis para analizar os gastos e optimizalos. Non é moi conveniente mirar os custos totais de xullo abstracto en kubecost: terás que facelo ir á facturación. Pero podes ver os custos desglosados ​​por espazos de nomes, etiquetas e pods durante 1/2/7/30/90 días, que a facturación nunca che mostrará.

Revisión de Kubecost para aforrar diñeiro en Kubernetes nas nubes

Falando de etiquetas. Debes ir inmediatamente á configuración e establecer os nomes das etiquetas que se usarán como categorías adicionais para agrupar os custos:

Revisión de Kubecost para aforrar diñeiro en Kubernetes nas nubes

Podes colgar neles calquera etiqueta, conveniente se xa tes o teu propio sistema de etiquetado.

Tamén pode cambiar o enderezo do punto final da API ao que se conecta o modelo de custo, axustar o tamaño do desconto en GCP e establecer os seus propios prezos para os recursos e a moeda para a súa medición (por algún motivo a función non afecta o custo total).

Kubecost pode mostrar varios problemas no clúster (e mesmo alerta en caso de perigo). Desafortunadamente, a opción non é configurable e, polo tanto, se tes ambientes para desenvolvedores e usalos, verás constantemente algo así:

Revisión de Kubecost para aforrar diñeiro en Kubernetes nas nubes

Unha ferramenta importante - Aforro Clúster. Mide a actividade dos pods (consumo de recursos, incluídos os de rede), e tamén calcula canto diñeiro e en que pode aforrar.

Pode parecer que os consellos de optimización son bastante obvios, pero a experiencia indica que aínda hai algo que mirar. En particular, monitorízase a actividade da rede dos pods (Kubecost suxire prestar atención aos inactivos), compárase a memoria solicitada e real e o consumo de CPU, así como a CPU utilizada polos nodos do clúster (suxire que se colapsen varios nodos nun só), disco. carga e un par de ducias de parámetros máis.

Como ocorre con calquera problema de optimización, a optimización dos recursos baseados nos datos de Kubecost require: tratar con precaución. Por exemplo, Cluster Savings suxire eliminar nodos, alegando que é seguro, pero non ten en conta a presenza de selectores de nodos e contaminacións nos pods despregados neles que non están dispoñibles noutros nodos. E, en xeral, mesmo os autores do produto no seu artigo recente (por certo, pode ser moi útil para aqueles que estean interesados ​​no tema do proxecto) recoméndase non apresurarse á optimización de custos, senón abordar o problema con atención.

Resultados de

Despois de utilizar kubecost durante un mes nun par de proxectos, podemos concluír que é unha ferramenta interesante (e tamén fácil de aprender e instalar) para analizar e optimizar os custos dos servizos dos provedores de nube utilizados para os clústeres de Kubernetes. Os cálculos resultan moi precisos: nos nosos experimentos coincidiron co que realmente esixían os provedores.

Tamén hai algúns inconvenientes: hai erros non críticos e nalgúns lugares a funcionalidade non cobre as necesidades específicas dalgúns proxectos. Non obstante, se precisas comprender rapidamente a onde vai o diñeiro e que se pode "cortar" para reducir de forma consistente a factura dos servizos na nube nun 5-30% (isto é o que pasou no noso caso), esta é unha excelente opción. .

PS

Lea tamén no noso blog:

Fonte: www.habr.com

Engadir un comentario