En esta página se explica cómo obtener información valiosa sobre los gastos para tomar decisiones sobre la asignación de recursos y la optimización de costes mediante la asignación de costes de Google Kubernetes Engine (GKE). Consulta información sobre la diferencia entre la asignación de costes de GKE y la medición del uso de los clústeres, las limitaciones de la asignación de costes de GKE, cómo activar la asignación de costes de GKE en clústeres nuevos y actuales, y cómo filtrar y consultar tu exportación de BigQuery de Facturación de Cloud.
Esta página está dirigida a operadores, arquitectos de Cloud, desarrolladores y administradores de datos que necesiten gestionar los costes al crear y configurar clústeres, así como al desplegar cargas de trabajo en GKE. Para obtener más información sobre los roles habituales, consulta Roles y tareas habituales de usuario de GKE.
Antes de leer esta página, te recomendamos que consultes las prácticas recomendadas para ejecutar aplicaciones de Kubernetes de coste optimizado en GKE.
Posible aumento del volumen de datos
Si habilitas la asignación de costes de GKE, pueden aumentar los costes de almacenamiento y de consulta en BigQuery. El aumento exacto depende del número de combinaciones distintas de etiquetas y espacios de nombres que utilices en pods y clústeres.
Habilitar la asignación de costes de GKE no cambia el coste total de tu uso de GKE. La suma de las líneas de pedido de costes de su exportación es la misma y las consultas e informes que haya creado a partir de la exportación de facturación devuelven los mismos valores.
Asignación de costes y medición del uso de clústeres de GKE
La asignación de costes de GKE se diferencia de la medición del uso de clústeres en los siguientes aspectos:
- La asignación de costes de GKE ofrece una alternativa a la medición del uso de clústeres para obtener información sobre los clústeres.
- La asignación de costes de GKE calcula los costes de los clústeres en tu cuenta de facturación de Cloud en lugar de agregar los datos en una plantilla de Looker Studio.
- La asignación de costes de GKE te permite ver los datos de costes de un clúster en la consola de facturación de Cloud Google Cloud y en la exportación detallada de facturación de Cloud.
Antes de empezar
Antes de empezar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
- Asegúrate de haber completado los pasos para exportar datos detallados de costes de uso a BigQuery. Si tu organización ya está exportando datos, debes tener acceso para consultar las tablas.
- Asegúrate de que tienes un clúster Standard. Para crear un clúster estándar, consulta Crear un clúster regional.
Limitaciones y restricciones
- Solo puedes ver los datos de asignación de costes de GKE en la exportación de datos de costes de uso detallados de Facturación de Cloud a BigQuery.
- Debes tener la versión 392.0.0 o una posterior de Google Cloud CLI.
- Si habilitas la asignación de costes de GKE, tu exportación de facturación empezará a incluir partidas adicionales de tus recursos de GKE a partir de esa fecha. En la exportación de la facturación no se rellenan los datos.
- Si inhabilitas la asignación de costes de GKE, tu exportación de facturación dejará de incluir líneas de pedido adicionales, pero no modificará ni eliminará las líneas de pedido anteriores que se generaron mientras la función estaba habilitada.
- Los datos de asignación de costes de GKE se basan en las solicitudes de recursos, no en los recursos consumidos. Para obtener más información sobre las diferencias entre las solicitudes de recursos, los límites de recursos y el consumo de recursos, consulta el artículo Prácticas recomendadas de Kubernetes: solicitudes y límites de recursos.
- La asignación de costes de GKE admite los siguientes tipos de SKU de recursos:
- SKUs de vCPUs de instancias de VM de Compute Engine
- SKUs de RAM de instancias de VM de Compute Engine
- SKUs de RAM de instancias ampliadas personalizadas de VMs de Compute Engine
- SKUs de GPU de instancias de VM de Compute Engine
- SKUs de capacidad de PD de Compute Engine
- SKUs de instancias de TPU de Cloud
- Si un pod tiene más de 50 etiquetas de Kubernetes, ninguna de ellas estará disponible en la sección Facturación de Cloud de la Google Cloud consola ni en la exportación detallada de Facturación de Cloud.
- Después de habilitar la asignación de costes de GKE, los datos pueden tardar hasta tres días en aparecer en Facturación de Cloud.
- La asignación de costes de GKE incluye datos de discos persistentes, con las siguientes excepciones:
- Solo admite recursos
PersistentVolume
aprovisionados dinámicamente a través dePersistentVolumeClaims
o volúmenes efímeros genéricos. - Solo admite recursos
PersistentVolume
aprovisionados por el controlador de CSI para Persistent Disk en Compute Engine o con el complemento de almacenamientokubernetes.io/gce-pd
obsoleto con el modo de accesoReadWriteOnce
oReadWriteOncePod
. - Es posible que no se haga un seguimiento de los discos persistentes con un tiempo de actividad inferior a 30 minutos. Los discos persistentes con al menos 30 minutos de tiempo de actividad se monitorizan siempre.
- Solo admite recursos
- La versión de TPU de Cloud debe ser la 4 o una posterior.
Ver los costes de los clústeres de GKE
Cuando habilitas la asignación de costes de GKE, el nombre del clúster y el espacio de nombres de tus cargas de trabajo de GKE aparecen en el campo labels
de la exportación de facturación a BigQuery:
Clave de etiqueta de recurso (labels.key ) |
Valor de la etiqueta del recurso (labels.value ) |
|
Descripción |
Las
etiquetas de Kubernetes
tienen el siguiente formato: k8s-label/${k8s-label-key} , donde ${k8s-label-key} es la clave de la etiqueta de Kubernetes del pod. La etiqueta de facturación k8s-label/${k8s-label-key} tiene el mismo valor que la etiqueta de pod de Kubernetes correspondiente. |
Si una clave de etiqueta de Kubernetes coincide con una clave de etiqueta de VM, el valor de la etiqueta de Kubernetes anula el valor de la etiqueta de VM.
Las etiquetas de recursos de clústeres y grupos de nodos se aplican a los recursos siguiendo este orden de prioridad (de mayor a menor):
|
Nombre del clúster | goog-k8s-cluster-name |
[cluster-name] |
Espacio de nombres | k8s-namespace |
[namespace] |
Tipo de carga de trabajo | k8s-workload-type |
[tipo-de-carga-de-trabajo] (por ejemplo, apps/v1-Deployment , apps/v1-StatefulSet , apps/v1-DaemonSet , apps/v1-ReplicaSet , batch/v1-Job , batch/v1-CronJob , core/v1-Pod ) |
Nombre de la carga de trabajo | k8s-workload-name |
[workload-name] |
Para obtener más información, consulta el esquema de los datos de costes de uso detallados.
Además, se usan los siguientes espacios de nombres para monitorizar la sobrecarga y los recursos no asignados:
kube:system-overhead
: Esto tiene en cuenta los recursos de los nodos que no están disponibles para los pods. El sistema reserva estos recursos para ejecutar el framework de Kubernetes (incluidos, entre otros, kubelet, kube-proxy y containerd). Es la diferencia entre la capacidad del nodo y los recursos asignables.kube:unallocated
: las cargas de trabajo no solicitan recursos ni se solicitan para la sobrecarga del sistema.
Si GKE no puede determinar la asignación de costes de un recurso, la exportación incluye uno de los siguientes valores:
goog-k8s-unknown
: Facturación de Cloud no ha podido procesar el SKU. Esto puede ocurrir cuando se aprovisiona una nueva instancia de Compute Engine. Puedes esperar algunos valores degoog-k8s-unknown
durante el inicio y el cierre de los nodos, por ejemplo, cuando GKE autoescala un clúster.goog-k8s-unsupported-sku
: la asignación de costes de GKE no admite esta SKU. Se trata igual que<blank>
/NULL
. No hay ninguna garantía de que un SKU siempre se etiquete con este valor.<blank>
/NULL
: la asignación de costes de GKE no hace un seguimiento de este recurso. Esto puede ocurrir cuando la asignación de costes de GKE no está habilitada o cuando el recurso no pertenece a un clúster gestionado de GKE.
Los costes de los discos persistentes se registran cuando los pods reclaman el almacenamiento subyacente de los discos persistentes.PersistentVolumeClaims
Los costes de los discos persistentes heredan todos los metadatos, como las etiquetas y los espacios de nombres de los pods, hasta que se eliminan sus PersistentVolumeClaims
. En el caso de los PersistentVolumeClaims
que se eliminan, pero que conservan PersistentVolumes
de acuerdo con la política de reclamación, los costes de los discos persistentes se registran como
sin asignar.
Las etiquetas aplicadas directamente a PersistentVolumeClaims
no aparecen en la sección Facturación de Cloud de la consola de Google Cloud ni en la exportación detallada de Facturación de Cloud.
En el caso de la RAM ampliada, se asigna a una carga de trabajo la misma proporción del coste total para las SKUs de RAM normal y de RAM ampliada en función del recurso solicitado.
Habilitar la asignación de costes de GKE
Puedes habilitar la asignación de costes de GKE en un clúster nuevo o en uno que ya tengas mediante la CLI de gcloud o la Google Cloud consola.
gcloud
Actualiza un clúster con la marca --enable-cost-allocation
:
gcloud container clusters update CLUSTER_NAME \
--enable-cost-allocation
Sustituye CLUSTER_NAME
por el nombre del clúster.
También puedes usar la marca --enable-cost-allocation
cuando crees un clúster con el comando gcloud container clusters create
.
Consola
Para habilitar la asignación de costes de GKE en un clúster, haz lo siguiente:
- Ve a la página Google Kubernetes Engine en la Google Cloud consola. Ir a Google Kubernetes Engine
- Haz clic en el nombre del clúster que quieras modificar.
- En la página Clusters (Clústeres), en la sección Features (Funciones), haz clic en edit junto a Cost Allocation (Asignación de costes).
- En el cuadro de diálogo Editar asignación de costes, marca la casilla Habilitar asignación de costes.
- Haz clic en Guardar cambios.
Verificar que la asignación de costes de GKE esté habilitada
gcloud
Describe el clúster:
gcloud container clusters describe CLUSTER_NAME
El resultado debería ser similar al siguiente:
...
costManagementConfig:
enabled: true
...
En este resultado, costManagementConfig
indica que la asignación de costes de GKE está habilitada.
Consola
Para comprobar si la asignación de costes de GKE está habilitada en un clúster, sigue estos pasos:
- Ve a la página Google Kubernetes Engine en la Google Cloud consola. Ir a Google Kubernetes Engine
- Haz clic en el nombre del clúster que quieras modificar.
- En la página Clústeres, en la sección Funciones, junto a Asignación de costes, se mostrará si la asignación de costes de GKE está habilitada.
Filtrar datos de costes de GKE
En las siguientes consultas de ejemplo se muestra cómo filtrar y agrupar los costes de GKE de los tipos de recursos admitidos por nombre de clúster, espacio de nombres y etiqueta.
Sustituye BILLING_DATASET_TABLE
por el nombre del conjunto de datos que has creado en BigQuery.
El nombre de la tabla es similar a gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>
.
Limpieza
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, inhabilita la asignación de costes de GKE en el clúster:
gcloud container clusters update CLUSTER_NAME \
--no-enable-cost-allocation
También puedes eliminar el clúster que hayas creado.
Siguientes pasos
- Consulta más ejemplos de consultas para la exportación de datos de Facturación de Cloud.
- Consulta cómo visualizar tus costes con Looker Studio.