Supervisión de costos - Amazon EKS

Supervisión de costos

Amazon EKS admite Kubecost, que puede utilizar para supervisar sus costos desglosados por los recursos de Kubernetes que incluyen Pods, nodos, espacios de nombres y etiquetas. Como administrador de plataforma y líder financiero de Kubernetes, puede usar Kubecost para visualizar un desglose de los cargos de Amazon EKS, asignar costos y aplicar cargos a las unidades organizativas, como los equipos de aplicaciones. Puede proporcionar a sus equipos internos y unidades de negocio datos de costes transparentes y precisos basados en su factura de AWS real. Además, también puede obtener recomendaciones personalizadas para la optimización de costos en función de su entorno de infraestructura y los patrones de uso dentro de sus clústeres. Para obtener más información sobre Kubecost, consulte la documentación de Kubecost.

Amazon EKS ofrece un paquete optimizado por AWS de Kubecost para obtener visibilidad de los costos del clúster. Puede utilizar sus acuerdos de soporte de AWS existentes para obtener soporte.

Requisitos previos
  • Un clúster existente de Amazon EKS. Para implementar uno, consulte Introducción a Amazon EKS. El clúster debe tener nodos de Amazon EC2 porque no se puede ejecutar Kubecost en los nodos de Fargate.

  • La herramienta de línea de comandos de kubectl está instalada en su dispositivo o AWS CloudShell. La versión puede ser la misma o hasta una versión secundaria anterior o posterior a la versión de Kubernetes de su clúster. Por ejemplo, si la versión del clúster es 1.28, puede usar la versión 1.27, 1.28 o 1.29 de kubectl con él. Para instalar o actualizar kubectl, consulte Instalación o actualización del kubectl.

  • Versión 3.9.0 o posterior de Helm configurada en su dispositivo o AWS CloudShell. Para instalar o actualizar Helm, consulte Utilizar Helm con Amazon EKS.

  • Si la versión del clúster es 1.23 o una posterior, debe haber instalado antes Controlador CSI de Amazon EBS en el clúster.

Para instalar Kubecost
  1. Determine la versión de Kubecost que desea instalar. Puede ver las versiones disponibles en kubecost/cost-analyzer en la galería pública de Amazon ECR. Para obtener más información sobre la compatibilidad de las versiones de Kubecost y Amazon EKS, consulte Requisitos del entorno en la documentación de Kubecost.

  2. Instale Kubecost con el siguiente comando. Sustituya kubecost-version con el valor obtenido de ECR, como 1.108.1.

    helm upgrade -i kubecost oci://public.ecr.aws/kubecost/cost-analyzer --version kubecost-version \ --namespace kubecost --create-namespace \ -f https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/develop/cost-analyzer/values-eks-cost-monitoring.yaml

    Kubecost publica nuevas versiones con regularidad. Puede actualizar su versión mediante helm upgrade. De manera predeterminada, la instalación incluye un servidor de Prometheus local y kube-state-metrics. Puede personalizar su implementación para usar el Servicio administrado de Amazon para Prometheus siguiendo la documentación de Integración con la supervisión de costos de Amazon EKS. Para obtener una lista de todas las opciones que puede configurar, consulte el archivo de configuración de muestra en GitHub.

  3. Asegúrese de que los Pods necesarios estén en ejecución.

    kubectl get pods -n kubecost

    Un ejemplo de salida sería el siguiente.

    NAME READY STATUS RESTARTS AGE kubecost-cost-analyzer-b9788c99f-5vj5b 2/2 Running 0 3h27m kubecost-kube-state-metrics-99bb8c55b-bn2br 1/1 Running 0 3h27m kubecost-prometheus-server-7d9967bfc8-9c8p7 2/2 Running 0 3h27m
  4. En el dispositivo, habilite el reenvío de puertos para exponer el panel de control de Kubecost.

    kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090

    También puede utilizar el AWS Load Balancer Controller para exponer Kubecost y usar Amazon Cognito para la autenticación, autorización y administración de usuarios. Para obtener más información, consulte Cómo usar el equilibrador de carga de aplicación y Amazon Cognito para autenticar usuarios de las aplicaciones web de Kubernetes.

  5. En el mismo dispositivo en el que hizo el paso anterior, abra un navegador web e ingrese la siguiente dirección.

    http://localhost:9090

    Verá la página de descripción general de Kubecost en su navegador. Es posible que Kubecost tarde entre 5 y 10 minutos en recopilar las métricas. Puede ver sus gastos de Amazon EKS, incluidos los costos acumulados del clúster, los costos de los activos asociados de Kubernetes y los gastos mensuales agregados.

    
                    panel de Kubecost
  6. Para hacer un seguimiento de los costos del clúster, etiquete sus recursos de Amazon EKS para la facturación. Para obtener más información, consulte Etiquetado de los recursos para facturación.

También puede ver la siguiente información al seleccionarla en el panel izquierdo:
  • Cost allocation (Asignación de costos): vea los costos mensuales de Amazon EKS y los costos acumulados para cada uno de sus espacios de nombres y otras dimensiones durante los últimos siete días. Esto es útil para entender qué partes de su aplicación están contribuyendo al gasto de Amazon EKS.

  • Assets (Activos): vea los costos de los activos de infraestructura de AWS que se asocian a sus recursos de Amazon EKS.

Características adicionales
  • Export cost metrics (Métricas de costos de exportación): la supervisión de costos optimizada de Amazon EKS se implementa con Kubecost y Prometheus, que es un sistema de supervisión de código abierto y una base de datos de serie temporal. Kubecost lee la métrica de Prometheus y luego calcula la asignación de costos y vuelve a escribir las métricas en Prometheus. El módulo frontal de Kubecost lee las métricas de Prometheus y las muestra en la interfaz de usuario de Kubecost. La arquitectura se ilustra en el siguiente diagrama.

    
                    Kubecost architecture

    Con Prometheus preinstalado, puede escribir consultas para ingerir datos de Kubecost en su actual sistema de inteligencia empresarial para su posterior análisis. También puede utilizarlo como origen de datos para su panel de control actual de Grafana para mostrar los costos del clúster de Amazon EKS con los que sus equipos internos están familiarizados. Para obtener más información sobre cómo escribir consultas de Prometheus, consulte el archivo readme de Configuración de Prometheus en GitHub o utilice los modelos JSON de Grafana de ejemplo en el repositorio de GitHub de Kubecost como referencia.

  • Integración de AWS Cost and Usage Report: para calcular la asignación de costos de un clúster de Amazon EKS, Kubecost recupera la información pública de precios de los Servicios de AWS y recursos de AWS desde la API de lista de precios de AWS. También puede integrar Kubecost con AWS Cost and Usage Report para mejorar la precisión de la información de precios específica de su Cuenta de AWS. Esta información incluye programas de descuento para empresas, uso de instancias reservadas, Savings Plans y uso puntual. Para más información sobre el funcionamiento de la integración de AWS Cost and Usage Report, consulte Integración de facturación de AWS Cloud en la documentación de Kubecost.

Remove Kubecost

Puede eliminar Kubecost del clúster con los siguientes comandos.

helm uninstall kubecost --namespace kubecost kubectl delete ns kubecost

Preguntas frecuentes

Consulte las siguientes preguntas y respuestas frecuentes sobre el uso de Kubecost con Amazon EKS.

AWS y Kubecost han colaborado para ofrecer una versión personalizada de Kubecost. Esta versión incluye un subconjunto de características comerciales sin cargo adicional. Consulte la siguiente tabla para ver las características que se incluyen en el paquete personalizado de Kubecost.

Característica Nivel gratuito de Kubecost Paquete personalizado Kubecost de Amazon EKS optimizado Kubecost Enterprise
Implementación Alojado por el usuario Alojado por el usuario Alojado por el usuario u hospedado por Kubecost (SaaS)
Número de clústeres compatibles Sin límite Sin límite Sin límite
Bases de datos admitidas Prometheus local Prometheus local o Amazon Managed Service for Prometheus Prometheus, Amazon Managed Service for Prometheus, Cortex o Thanos
Soporte de retención de bases de datos 15 días Datos históricos ilimitados Datos históricos ilimitados
Retención de API de Kubecost (ETL) 15 días 15 días Datos históricos ilimitados
Visibilidad de costos del clúster Clústeres individuales Varios clústeres unificados Varios clústeres unificados
Visibilidad en la nube híbrida - Clústeres de Amazon EKS y Amazon EKS Anywhere Compatibilidad con multinubes y nubes híbridas
Alertas e informes periódicos - Soporte para alertas de eficiencia, alertas de presupuesto, alertas de cambio de gastos y más Soporte para alertas de eficiencia, alertas de presupuesto, alertas de cambio de gastos y más
Informes guardados - Informes con datos de 15 días Informes que utilizan datos históricos ilimitados
Integración de facturación en la nube Necesario para cada clúster individual Soporte de precios personalizado para AWS (incluidos varios clústeres y múltiples cuentas) Soporte de precios personalizado para AWS(incluidos varios clústeres y múltiples cuentas)
Recomendaciones de guardado Información sobre un único clúster Información sobre un único clúster Información sobre múltiples clústeres
Gobernanza: auditorías - - Audite los eventos de costos históricos
Compatibilidad con inicio de sesión único (SSO) - Compatible con Amazon Cognito Okta, Auth0, PingID, KeyCloak
Control de acceso basado en roles (RBAC) con 2.0 SAML - - Okta, Auth0, PingID, Keycloak
Formación e incorporación empresarial - - Servicio completo de formación e incorporación de FinOps
Qué es la característica de retención de API (ETL) de Kubecost?

La característica ETL de Kubecost agrega y organiza las métricas para mostrar la visibilidad de los costos en varios niveles de granularidad (como namespace-levelpod-level, y deployment-level). Para el paquete personalizado de Kubecost, los clientes obtienen datos e información de las métricas de los últimos 15 días.

¿Qué es la característica de alertas e informes periódicos? ¿Qué alertas e informes incluye?

Las alertas de Kubecost permiten a los equipos recibir actualizaciones de gasto en tiempo real de Kubernetes, así como el gasto en la nube. Los informes periódicos permiten a los equipos recibir vistas personalizadas del historial de Kubernetes y gastos en la nube. Ambos se pueden configurar mediante el UI de Kubecost o valores de Helm. Admiten el correo electrónico, Slack y Microsoft Teams.

¿Qué incluyen los informes guardados?

Los informes guardados de Kubecost son vistas predefinidas de las métricas de costes y eficiencia. Incluyen el costo por clúster, espacio de nombres, etiqueta y más.

¿Qué es la integración de facturación en la nube?

La integración con las API de facturación de AWS permite a Kubecost mostrar los costos fuera del clúster (como Amazon S3). Además, permite a Kubecost conciliar las predicciones integradas de Kubecost en el clúster con datos de facturación reales para tener en cuenta el uso puntual, los planes de ahorro y los descuentos empresariales.

¿Qué incluyen las recomendaciones de ahorro?

Kubecost proporciona información y automatización para ayudar a los usuarios a optimizar su infraestructura y gastos de Kubernetes.

No. Puede usar esta versión de Kubecost sin cargo adicional. Si desea capacidades adicionales de Kubecost que no están incluidas en este paquete, puede comprar una licencia empresarial de Kubecost a través de AWS Marketplace o directamente desde Kubecost.

Sí. Puede abrir un caso de soporte con el equipo de AWS Support en Contacte con AWS.

No.

Sí. Puede configurar Kubecost para que capture datos de AWS Cost and Usage Report y así obtener una visibilidad precisa de los costos, incluidos descuentos, precios de spot, precios de instancias reservadas y otros. Para más información, consulte Integración de facturación de AWS Cloud en la documentación de Kubecost.

No. Esta versión solo es compatible con los clústeres de Amazon EKS.

Kubecost ofrece el mejor esfuerzo para mostrar la visibilidad de los costos de los clústeres de Amazon EKS en Fargate, pero con una precisión inferior a la de Amazon EKS en Amazon EC2. Esto se debe principalmente a la diferencia en la forma en que se le factura el uso. Con Amazon EKS en Fargate, se le facturan los recursos consumidos. Con Amazon EKS en los nodos de Amazon EC2, se le facturan los recursos aprovisionados. Kubecost calcula el costo de un nodo de Amazon EC2 en función de la especificación del nodo, lo cual incluye la CPU, la RAM y el almacenamiento efímero. Con Fargate, los costos se calculan en función de los recursos solicitados para los Pods de Fargate.

Puede actualizar su versión de Kubecost mediante procedimientos de actualización estándar de Helm. Las versiones más recientes se encuentran en la Galería pública de Amazon ECR.

Sí. Kubectl-cost es una herramienta de código abierto de Kubecost (Licencia Apache 2.0) que proporciona acceso de CLI a las métricas de asignación de costos de Kubernetes. Para instalar kubectl-cost, consulte Installation (Instalación) en GitHub.

Kubecost proporciona un panel web al que puede acceder a través del reenvío de puertos kubectl, una entrada o un equilibrador de carga. También puede usar el AWS Load Balancer Controller para exponer Kubecost y usar Amazon Cognito para la autenticación, autorización y administración de usuarios. Para obtener más información, consulte Cómo usar el equilibrador de carga de aplicación y Amazon Cognito para autenticar a usuarios de las aplicaciones web de Kubernetes en el blog de AWS.

No.