Revisión de Kubecost para ahorrar dinero en Kubernetes en las nubes

Revisión de Kubecost para ahorrar dinero en Kubernetes en las nubes

Actualmente, cada vez son más las empresas que trasladan su infraestructura desde servidores hardware y sus propias máquinas virtuales a la nube. Esta solución es fácil de explicar: no hay necesidad de preocuparse por el hardware, el clúster se configura fácilmente de muchas maneras diferentes... y lo más importante, las tecnologías existentes (como Kubernetes) permiten escalar simplemente la potencia informática dependiendo de la carga. .

El aspecto financiero siempre es importante. La herramienta que se analiza en este artículo está diseñada para ayudar a reducir los presupuestos al utilizar la infraestructura de la nube con Kubernetes.

introducción

Costo de Kube es una startup californiana de Google que crea una solución para calcular los costos de infraestructura en servicios en la nube (dentro de un clúster de Kubernetes + recursos compartidos), encontrar cuellos de botella en la configuración del clúster y enviar notificaciones apropiadas a Slack.

Tenemos clientes con Kubernetes tanto en las nubes familiares de AWS como de GCP y, más raramente para la comunidad de Linux, en Azure; en general, en todas las plataformas compatibles con Kubecost. Para algunos de ellos, calculamos nosotros mismos los costos de los servicios dentro del clúster (usando un método similar al utilizado por Kubecost), y también monitoreamos los costos de infraestructura e intentamos optimizarlos. Por tanto, es lógico que nos interesara la posibilidad de automatizar este tipo de tareas.

El código fuente del módulo principal de Kubecost está abierto según los términos de la licencia de código abierto (Licencia Apache 2.0). Se puede utilizar libremente y las funciones disponibles deberían ser suficientes para proyectos pequeños. Sin embargo, el negocio es el negocio: el resto del producto está cerrado, puede ser utilizado por suscripciones pagas, que también implican apoyo comercial. Además, los autores ofrecen una licencia gratuita para clústeres pequeños (1 clúster con 10 nodos; durante la redacción de este artículo, este límite se ha ampliado a 20 nodos) o un período de prueba con capacidades completas durante 1 mes.

como funciona todo

Entonces, la parte principal de Kubecost es la aplicación. modelo de costos, escrito en Go. Un diagrama de Helm que describe todo el sistema se llama analizador de costos y en esencia es un ensamblaje de un modelo de costos con Prometheus, Grafana y varios paneles.

En general, Cost-Model tiene su propia interfaz web, que muestra gráficos y estadísticas detalladas de costes en forma de tabla, así como, por supuesto, consejos para optimizar costes. Los paneles presentados en Grafana son una etapa anterior en el desarrollo de Kubecost y contienen gran parte de los mismos datos que el modelo de costos, complementándolos con las estadísticas habituales sobre el consumo de CPU/memoria/red/espacio en disco en el clúster y su componentes.

¿Cómo funciona Kubecost?

  • El modelo de costos recibe precios de servicios a través de la API de los proveedores de la nube.
  • Además, según el tipo de hierro del nodo y la región, se calcula el costo por nodo.
  • Según el costo de ejecutar nodos, cada módulo hoja obtiene un costo por hora de uso de CPU, por gigabyte de memoria consumido y por hora por gigabyte de datos almacenados, según el nodo en el que se estaba ejecutando o la clase de almacenamiento.
  • Según el costo de operar pods individuales, el pago se calcula por espacios de nombres, servicios, implementaciones y StatefulSets.
  • Las estadísticas se calculan utilizando métricas proporcionadas por kube-state-metrics y node-exporter.

Es importante considerar que Kubecost De forma predeterminada, solo cuenta los recursos disponibles en Kubernetes.. Las bases de datos externas, los servidores GitLab, los almacenamientos S3 y otros servicios que no están en el clúster (incluso si están ubicados en la misma nube) no son visibles para él. Aunque para GCP y AWS puedes agregar las claves de tus cuentas de servicio y calcular todo en conjunto.

Instalación

Kubecost requiere:

  • Kubernetes versión 1.8 y superior;
  • métricas de estado de kube;
  • Prometeo;
  • exportador de nodos.

Dio la casualidad de que en nuestros clústeres todas estas condiciones se cumplían de antemano, por lo que resultó que bastaba con especificar el punto final correcto para acceder a Prometheus. Sin embargo, el gráfico oficial de kubecost Helm contiene todo lo que necesita para ejecutarse en un clúster simple.

Hay varias formas de instalar Kubecost:

  1. Método de instalación estándar descrito en instrucciones en el sitio web del desarrollador. agregue el repositorio del analizador de costos a Helm y luego instale el gráfico. Todo lo que queda es reenviar su puerto y ajustar la configuración al estado deseado manualmente (a través de kubectl) y/o usando la interfaz web del modelo de costo.

    Ni siquiera hemos probado este método, ya que no utilizamos configuraciones listas para usar de terceros, pero parece una buena opción de "pruébelo usted mismo". Si ya tiene algunos de los componentes del sistema instalados o desea realizar más ajustes, es mejor considerar la segunda ruta.

  2. Usar esencialmente el mismo cuadro, pero configúrelo e instálelo usted mismo de cualquier forma conveniente.

    Como ya se mencionó, además del propio kubecost, este gráfico contiene gráficos de Grafana y Prometheus, que también se pueden personalizar según se desee.

    Disponible en el gráfico values.yaml para el analizador de costos le permite configurar:

    • una lista de componentes del analizador de costos que deben implementarse;
    • su punto final para Prometheus (si ya tiene uno);
    • dominios y otras configuraciones de ingreso para cost-model y Grafana;
    • anotaciones para pods;
    • la necesidad de utilizar almacenamiento permanente y su tamaño.

    Una lista completa de las opciones de configuración disponibles con descripciones está disponible en documentación.

    Dado que kubecost en su versión básica no puede restringir el acceso, deberá configurar inmediatamente la autenticación básica para el panel web.

  3. Instalar sólo el núcleo del sistema - modelo de costos. Para hacer esto, debe tener instalado Prometheus en el clúster y especificar el valor correspondiente de su dirección en la variable prometheusEndpoint para Yelmo. Después de eso - aplicar conjunto de configuraciones YAML en el cúmulo.

    Nuevamente, tendrás que agregar manualmente Ingress con autenticación básica. Finalmente, deberá agregar una sección para recopilar métricas del modelo de costos en extraScrapeConfigs en la 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

¿Qué obtenemos?

Con una instalación completa, tenemos a nuestra disposición el panel web de kubecost y Grafana con un conjunto de paneles.

El costo total, que se muestra en la pantalla principal, en realidad muestra el costo estimado de los recursos para el mes. Este previsible precio que refleja el costo de uso del clúster (por mes) en el nivel actual de consumo de recursos.

Esta métrica sirve más para analizar gastos y optimizarlos. No es muy conveniente mirar los costos totales del resumen de julio en kubecost: tendrás que ir a facturación. Pero puede ver los costos desglosados ​​por espacios de nombres, etiquetas y grupos durante 1/2/7/30/90 días, algo que la facturación nunca le mostrará.

Revisión de Kubecost para ahorrar dinero en Kubernetes en las nubes

Hablando de etiquetas. Debes ir inmediatamente a la configuración y establecer los nombres de las etiquetas que se utilizarán como categorías adicionales para agrupar costos:

Revisión de Kubecost para ahorrar dinero en Kubernetes en las nubes

Puedes colgarles cualquier etiqueta, lo que resulta práctico si ya tienes tu propio sistema de etiquetado.

Allí también puede cambiar la dirección del punto final API al que se conecta el modelo de costos, ajustar el tamaño del descuento en GCP y establecer sus propios precios para los recursos y la moneda para su medición (por alguna razón, la característica no afecta el costo total).

Kubecost puede mostrar varios problemas en el cluster (e incluso alerta en caso de peligro). Desafortunadamente, la opción no es configurable y por lo tanto, si tienes entornos para desarrolladores y los utilizas, verás constantemente algo como esto:

Revisión de Kubecost para ahorrar dinero en Kubernetes en las nubes

Una herramienta importante - Ahorros del grupo. Mide la actividad de los pods (consumo de recursos, incluidos los de red) y también calcula cuánto dinero y en qué se puede ahorrar.

Puede parecer que los consejos de optimización son bastante obvios, pero la experiencia sugiere que todavía hay algo que considerar. En particular, se monitorea la actividad de red de los pods (Kubecost sugiere prestar atención a los inactivos), se compara la memoria solicitada y real y el consumo de CPU, así como la CPU utilizada por los nodos del clúster (sugiere colapsar varios nodos en uno), el disco cargar y un par de docenas de parámetros más.

Como ocurre con cualquier problema de optimización, optimizar los recursos basándose en los datos de Kubecost requiere: tratar con precaución. Por ejemplo, Cluster Savings sugiere eliminar nodos, afirmando que es seguro, pero no tiene en cuenta la presencia de selectores de nodos y taints en los pods implementados en ellos que no están disponibles en otros nodos. Y en general, incluso los autores del producto en su artículo reciente (por cierto, puede resultar muy útil para quienes estén interesados ​​​​en el tema del proyecto), se recomienda no precipitarse hacia la optimización de costos, sino abordar el tema con atención.

resultados

Después de usar kubecost durante un mes en un par de proyectos, podemos concluir que es una herramienta interesante (y además fácil de aprender e instalar) para analizar y optimizar costes de los servicios de los proveedores de nube utilizados para los clústeres de Kubernetes. Los cálculos resultan ser muy precisos: en nuestros experimentos coincidieron con lo que realmente necesitaban los proveedores.

También hay algunas desventajas: hay errores que no son críticos y, en algunos lugares, la funcionalidad no cubre las necesidades específicas de algunos proyectos. Sin embargo, si necesita comprender rápidamente dónde se va el dinero y qué se puede "recortar" para reducir constantemente la factura de los servicios en la nube entre un 5% y un 30% (esto es lo que sucedió en nuestro caso), esta es una excelente opción. .

PS

Lea también en nuestro blog:

Fuente: habr.com

Añadir un comentario