Obtén estadísticas clave sobre la inversión para la asignación de recursos y los costos del clúster de GKE

En esta página, se muestra cómo obtener estadísticas clave sobre la inversión para tomar decisiones fundamentadas sobre la asignación de recursos y la optimización de costos con la asignación de costos de Google Kubernetes Engine (GKE). Obtén información sobre la diferencia entre la asignación de costos de GKE y la medición del uso del clúster, las limitaciones de la asignación de costos de GKE, cómo activar la asignación de costos de GKE en clústeres nuevos y existentes, 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 necesitan administrar los costos a medida que crean y configuran clústeres, y también implementan cargas de trabajo en GKE. Para obtener más información sobre los roles comunes, consulta Roles y tareas comunes de los usuarios de GKE.

Antes de leer esta página, te recomendamos que te familiarices con las prácticas recomendadas para ejecutar aplicaciones de Kubernetes con optimización de costos en GKE.

Posible aumento del volumen de datos

Habilitar la asignación de costos de GKE puede aumentar tus costos de almacenamiento y consulta en BigQuery. El aumento exacto depende de la cantidad de combinaciones de etiquetas y espacios de nombres distintas que usas en los Pods y los clústeres.

La habilitación de la asignación de costos de GKE no cambia el costo total del uso de GKE. La suma de los elementos de una sola línea de costo de tu exportación es la misma, y los informes que compilaste en la exportación de facturación muestran los mismos valores.

Asignación de costos de GKE y medición del uso del clúster

La asignación de costos de GKE es diferente de la medición del uso del clúster de las siguientes maneras:

  • La asignación de costos de GKE proporciona una alternativa a la medición del uso del clúster para obtener información del clúster.
  • La asignación de costos de GKE calcula los costos del clúster en tu cuenta de Facturación de Cloud en lugar de agregar los datos en una plantilla de Looker Studio.
  • La asignación de costos de GKE te permite ver los datos de costos de un clúster en la consola de Google Cloud Facturación de Cloud y en la exportación detallada de la Facturación de Cloud.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.

Limitaciones y restricciones

  • Solo puedes ver los datos de la asignación de costos de GKE en la exportación de datos detallado de costo de uso de BigQuery de la Facturación de Cloud.
  • Debes tener la versión 392.0.0 de Google Cloud CLI o una posterior
  • Si habilitas la asignación de costos de GKE, la exportación de la facturación comenzará a incluir elementos de una sola línea adicionales para los recursos de GKE a partir de esa fecha. La exportación de facturación no reabastece los datos.
  • Si inhabilitas la asignación de costos de GKE, tu exportación de facturación deja de incluir elementos de una sola línea adicionales, pero no modifica ni quita los elementos de una sola línea anteriores que se generaron mientras la función estaba habilitada.
  • Los datos de asignación de costos de GKE se basan en solicitudes de recursos, no en 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 Prácticas recomendadas de Kubernetes: solicitudes y límites de recursos.
  • La asignación de costos de GKE admite los siguientes tipos de SKU de recursos:
    • SKUs de CPU virtual de instancia de VM de Compute Engine
    • SKU de RAM de instancia de VM de Compute Engine
    • SKU de RAM de instancias extendidas personalizadas de VM de Compute Engine
    • SKU de GPU de instancia de VM de Compute Engine
    • SKU de capacidad de PD de Compute Engine
    • SKU de instancias de Cloud TPU
  • Si un Pod tiene más de 50 etiquetas de Kubernetes, ninguna de esas etiquetas estará disponible en la sección Facturación de Cloud de la consola de Google Cloud o en la exportación detallada de la Facturación de Cloud.
  • Después de habilitar la asignación de costos de GKE, los datos pueden tardar hasta tres días en aparecer en Facturación de Cloud.
  • La asignación de costos de GKE incluye datos de discos persistentes, con las siguientes excepciones:
    • Solo admite recursos PersistentVolume aprovisionados de forma dinámica a través de PersistentVolumeClaims o volúmenes efímeros genéricos.
    • Solo admite los recursos PersistentVolume aprovisionados por el controlador CSI del disco persistente de Compute Engine o con el complemento de almacenamiento kubernetes.io/gce-pd obsoleto con el modo de acceso ReadWriteOnce o ReadWriteOncePod.
    • Es posible que no se realice un seguimiento de los discos persistentes con un tiempo de actividad inferior a 30 minutos. Siempre se realiza un seguimiento de los discos persistentes con un tiempo de actividad de al menos 30 minutos.
  • La versión de Cloud TPU debe ser Cloud TPU v4 o posterior.

Visualiza los costos del clúster de GKE

Cuando habilitas la asignación de costos 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 del 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}, en el que ${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 entra en conflicto 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 del clúster y del grupo de nodos se aplican a los recursos con la siguiente prioridad de mayor a menor:
  • Recurso individual, como instancia o almacenamiento
  • Grupo de nodos
  • Clúster
Nombre del clúster goog-k8s-cluster-name [cluster-name]
Espacio de nombres k8s-namespace [namespace]
Tipo de carga de trabajo k8s-workload-type [workload-type]
(p.ej., 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 Esquema de los datos de costos de uso detallados.

Además, los siguientes espacios de nombres se usan para realizar un seguimiento de los gastos generales y de los recursos sin asignar:

  • kube:system-overhead: Esto tiene en cuenta los recursos de nodo 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). Esta es la diferencia entre la capacidad del nodo y los recursos asignables.
  • kube:unallocated: Las cargas de trabajo no solicitan los recursos ni la sobrecarga del sistema.

Si GKE no puede determinar la asignación de costos de un recurso, la exportación incluye uno de los siguientes valores:

  • goog-k8s-unknown: La Facturación de Cloud no pudo procesar el SKU. Esto puede ocurrir cuando se aprovisiona una nueva instancia de Compute Engine. Puedes esperar algunos valores de goog-k8s-unknown durante el inicio y el cierre del nodo, por ejemplo, cuando GKE ajusta la escala automáticamente de un clúster.
  • goog-k8s-unsupported-sku: La asignación de costos de GKE no admite el SKU. Trata esto como <blank>/NULL. No se garantiza que un SKU siempre esté etiquetado con este valor.
  • <blank>/NULL: La asignación de costos de GKE no realiza un seguimiento de este recurso. Esto puede ocurrir cuando la asignación de costos de GKE no está habilitada o el recurso no pertenece a un clúster administrado por GKE.

Se realiza un seguimiento de los costos de los discos persistentes cuando los pods reclaman el respaldo PersistentVolumeClaims del disco persistente. Los costos de Persistent Disk heredan todos los metadatos, como las etiquetas y los espacios de nombres de Pods, del Pod que se reclama, hasta que se borran sus PersistentVolumeClaims. En el caso de las PersistentVolumeClaims que se borran, pero conservan PersistentVolumes de acuerdo con la política de reclamo, los costos de Persistent Disk se rastrean como no asignados.

Las etiquetas que se aplican 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 extendida, se asigna la misma proporción del costo total a una carga de trabajo para los SKU de RAM normal y RAM extendida según el recurso solicitado.

Habilita la asignación de costos de GKE

Puedes habilitar la asignación de costos de GKE en un clúster nuevo o existente con gcloud CLI o la consola de Google Cloud .

gcloud

Actualiza un clúster con la marca --enable-cost-allocation:

gcloud container clusters update CLUSTER_NAME \
    --enable-cost-allocation

Reemplaza CLUSTER_NAME por el nombre del clúster.

También puedes usar la marca --enable-cost-allocation cuando creas un clúster nuevo con el comando gcloud container clusters create.

Console

Para habilitar la asignación de costos de GKE en un clúster existente, haz lo siguiente:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud . Ir a Google Kubernetes Engine
  2. Haz clic en el nombre del clúster que deseas modificar.
  3. En la página Clústeres, en la sección Funciones, haz clic en junto a Asignación de costos.
  4. En el diálogo Editar asignación de costos, selecciona la casilla de verificación Habilitar asignación de costos.
  5. Haga clic en Guardar cambios.

Verifica que la asignación de costos de GKE esté habilitada

gcloud

Describe el clúster:

gcloud container clusters describe CLUSTER_NAME

El resultado es similar a este:

...
costManagementConfig:
  enabled: true
...

En este resultado, costManagementConfig indica que la asignación de costos de GKE está habilitada.

Consola

Para verificar si la asignación de costos de GKE está habilitada en un clúster existente, haz lo siguiente:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud . Ir a Google Kubernetes Engine
  2. Haz clic en el nombre del clúster que deseas modificar.
  3. En la página Clústeres, en la sección Funciones, junto a Asignación de costos, se mostrará si la asignación de costos de GKE está habilitada.

Filtra datos de costos de GKE

Las siguientes consultas de ejemplo muestran cómo filtrar y agrupar los costos de GKE para los tipos de recursos admitidos por nombre de clúster, espacio de nombres y etiqueta.

Reemplaza BILLING_DATASET_TABLE por el nombre del conjunto de datos que creaste en BigQuery.

El nombre de la tabla es similar a gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.

Limpia

Para evitar que se apliquen cargos a tu Google Cloud cuenta por los recursos que se usan en este instructivo, inhabilita la asignación de costos de GKE en el clúster:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-cost-allocation

También puedes borrar el clúster que creaste.

¿Qué sigue?