Habilitar el almacenamiento en bloques de alto rendimiento

Google Distributed Cloud (GDC) con air gap ofrece un nivel de almacenamiento de alto rendimiento diseñado para cargas de trabajo exigentes. Este nivel ofrece un rendimiento de hasta 30 IOPS por GB, lo que supone un aumento en comparación con el nivel de almacenamiento en bloques estándar, que ofrece hasta 3 IOPS por GB. En este documento se describe cómo habilitar el almacenamiento en bloques de alto rendimiento y cómo monitorizar las métricas, las alertas y los detalles de facturación asociados. Está pensada para audiencias que forman parte del grupo de administradores de la plataforma (como los administradores de TI) o del grupo de operadores de la aplicación (como los desarrolladores de aplicaciones).

La clase de almacenamiento de performance-rwoalto rendimiento está disponible para el clúster de Kubernetes.

Con la incorporación de la SKU de alto rendimiento, en los volúmenes que usan clases de almacenamiento performance-*, el proceso de creación y restauración de instantáneas de volumen es similar al de las clases de almacenamiento standard-*. Puedes crear una instantánea de volumen y restaurar un PVC similar sin cambiar la clase de almacenamiento ni los valores de calidad de servicio (QoS) subyacentes. El performance volumesnapshotclass captura el tipo de volumen y, con este volumesnapshot, puedes restaurar el volumen con la misma clase de almacenamiento.

Antes de empezar

Antes de empezar, asegúrate de que cumples los siguientes requisitos:

  • Entorno y versión de GDC

    • Una instancia de GDC en ejecución que se haya actualizado a la versión 1.15.1 o a una posterior.
  • Proyecto

    • Un proyecto de GDC en una organización en la que quieras aprovisionar volúmenes de alto rendimiento.
  • Acceso y permisos

    • Permisos de Kubernetes suficientes para crear, gestionar y usar recursos PersistentVolumeClaim (PVC) para cargas de trabajo de contenedores o recursos VirtualMachineDisk para máquinas virtuales en el espacio de nombres del proyecto de destino. Entre los roles habituales que se necesitan se incluyen los siguientes:
      • project-vm-admin para gestionar máquinas virtuales y discos de máquinas virtuales.
      • Roles que permiten gestionar los PVCs, que suelen incluirse en los roles de edición o personalizados.
      • Por lo general, los usuarios finales no necesitan ningún rol especial a nivel de organización para consumir el almacenamiento si las clases de almacenamiento de alto rendimiento ya están disponibles en el clúster de su proyecto. La configuración y la exposición de estas clases son responsabilidad del operador de infraestructura (IO) o del proveedor de acceso (PA).
  • Conocimientos sobre las clases de almacenamiento

    • Familiaridad con el concepto de objetos de Kubernetes StorageClass. Los niveles de alto rendimiento se exponen a través de clases de almacenamiento específicas.
    • Debe especificar una clase de almacenamiento de alto rendimiento al crear un PVC o un disco de máquina virtual.
  • Capacidad y cuotas

    • Asegúrate de que la organización y el proyecto tengan suficiente cuota de almacenamiento asignada al nivel de alto rendimiento.
    • Ten en cuenta las limitaciones de capacidad o las medidas de protección del rendimiento del entorno y el hardware de GDC específicos.

Aplica subcomponentOverride a los clústeres necesarios.

De forma predeterminada, el FeatureGate de la SKU de alto rendimiento es State: TEST. Para habilitar las performance-* clases de almacenamiento, el administrador de la plataforma o el operador de la aplicación deben aplicar un subcomponentOverride a los clústeres necesarios con un valor de FileHighPerformanceStorageClassStage superior al valor predeterminado value. En el siguiente ejemplo se usa el valor más alto de production.

apiVersion: lcm.private.gdc.goog/v1
kind: SubcomponentOverride
metadata:
  name: file-common
  namespace: NAMESPACE
spec:
  features:
    operableParameters:
      FileHighPerformanceStorageClassStage: production
  subComponentRef: file-common

El espacio de nombres de SubcomponentOverride especifica el espacio de nombres del clúster (por ejemplo, cluster-1) en el que se va a definir la marca. Sustituye NAMESPACE por los espacios de nombres correspondientes de los clústeres y crea los archivos SubcomponentOverride. Aplica este cambio con el siguiente comando:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

Haz los cambios siguientes:

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH: la ruta al archivo kubeconfig del clúster del servidor de la API Management.
  • SUBOVERRIDE_USER_FILE: la ruta al archivo SubcomponentOverride YAML del clúster de Kubernetes.

Para habilitar la SKU de alto rendimiento en los clústeres de Kubernetes, aplica la subcomponentOverride al clúster del servidor de la API de gestión.

Monitorizar métricas y alertas de alto rendimiento

El almacenamiento de alto rendimiento también incluye métricas adicionales, como los QOSPolicy detalles. Esta función permite filtrar y agregar métricas en función del QOSPolicy de ONTAP, lo que permite distinguir los volúmenes de alto rendimiento de los estándar.

Observar métricas

Las siguientes métricas de alto rendimiento están disponibles para la pila de observabilidad de archivos:

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

Ambas métricas se han enriquecido con qos_policy información de ONTAP.

Paneles de control de Observe

Además de las mejoras de las métricas anteriores, las alertas están disponibles para el almacenamiento estándar y de alto rendimiento, lo que permite una monitorización específica y una detección más rápida de los problemas en función de la clase de rendimiento. Para visualizar estos datos, hay disponibles paneles de alto rendimiento que usan las métricas enriquecidas para proporcionar estadísticas sobre el rendimiento y el uso de los volúmenes de alto rendimiento.

Para ver estos paneles de control, accede a Grafana y ve a Paneles de control> FILE y Paneles de control> FILE/ONTAP.

Estos son los paneles de control de alto rendimiento disponibles:

  • Panel de equilibrio del rendimiento del almacenamiento en bloques de archivos de la organización.
  • Los paneles de control FILE/ONTAP son paneles que extraen datos de Harvest. De esta forma, puede monitorizar directamente el rendimiento de ONTAP desde Grafana.

Observar alertas

Además de las métricas y los paneles de control, también hay alertas relacionadas con el alto rendimiento. Estas alertas ayudan a detectar problemas de almacenamiento y dirigen a los usuarios a los runbooks que contienen instrucciones para resolver las alertas. Si se activa una alerta, esta proporcionará un código de manual de operaciones que se puede consultar en el manual de servicio. Los asistentes deben seguir estos manuales de operaciones para resolver la alerta. Estas alertas se pueden ver en la sección Alert Rules (Reglas de alertas) de Grafana. Para ello, ve a infra-obs > file-block-storage-perf-monitoring-rules (infra-obs > reglas-de-monitorización-del-rendimiento-del-almacenamiento-en-bloques-de-archivos).

Estas son las alertas de alto rendimiento disponibles:

  • fb_high_org_volume_latency y fb_high_org_avg_volume_latency para monitorizar la latencia media del volumen de una organización y de cada usuario, respectivamente.
  • fb_storage_node_too_busy para monitorizar el uso de CPU de un nodo y enviar alertas si el uso de CPU es demasiado alto.
  • fb_current_ops_higher_than_expected para alertar si la cantidad de operaciones en un nodo actual es superior a la esperada.

Consultar la facturación de alto rendimiento

La SKU del almacenamiento en bloques de alto rendimiento es C008-4FF2-45E7. La facturación de este SKU se realiza con la siguiente consulta de Prometheus:


sum_over_time(metering_storage_allocated_capacity_bytes{sku_id='c008-4ff2-45e7'}[{{.RangeHalfOpen}}:1m]) / 2^30 / 60 / {{.Hours}}

Si usas metering_storage_allocated_capacity_bytes, la facturación se basa en los bytes asignados en lugar de en los bytes utilizados.

La clase de almacenamiento y la política de QoS de los volúmenes se definen cuando se aprovisionan por primera vez. Como la política de calidad del servicio es una variable que se puede cambiar directamente en ONTAP, definimos sku_id en las métricas en función de qos_policy y, después, facturamos por sku_id.

Ejemplos de flujos de trabajo

Puede usar SKUs de alto rendimiento en sus flujos de trabajo mediante diferentes tipos de declaraciones de volumen. En última instancia, el mecanismo subyacente sigue siendo el mismo, por ejemplo, un PVC respaldado por performance-*. En los siguientes ejemplos se muestran las diferentes formas de crear un nuevo nivel de volúmenes.

Aplica las siguientes configuraciones de YAML al clúster correspondiente haciendo referencia al nombre de clase de almacenamiento performance-* correcto.

PVCs y montajes de pods de alto rendimiento:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: PVC_NAME
spec:
  storageClassName: performance-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

---

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  volumes:
    - name: VOLUME_NAME
      persistentVolumeClaim:
        claimName: PVC_NAME
  containers:
    - name: CONTAINER_NAME
      image: gcr.io/GKE_RELEASE/asm/proxyv2:1.23.6-asm.14
      ports:
        - containerPort: 80
      volumeMounts:
        - name: VOLUME_NAME
          mountPath: "/data"

Discos y máquinas virtuales de alto rendimiento:

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: BOOT_DISK_NAME
  namespace: NAMESPACE
spec:
  source:
    image:
      name: ubuntu-24.04-v20250809-gdch
      namespace: vm-system
  size: 25Gi
  type: Performance

---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: DATA_DISK_NAME
  namespace: NAMESPACE
spec:
  size: 2Gi
  type: Performance
---

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: VM_NAME
  namespace: NAMESPACE
spec:
  compute:
    virtualMachineType: n3-standard-2-gdc
  disks:
  - virtualMachineDiskRef:
      name: BOOT_DISK_NAME
    boot: true
    autoDelete: true
  - virtualMachineDiskRef:
      name: DATA_DISK_NAME
    autoDelete: true

Capturas y restauraciones de volumen de alto rendimiento:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: SOURCE_PVC_NAME
spec:
  storageClassName: performance-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
---

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: VOLUME_SNAPSHOT_NAME
  namespace: NAMESPACE
spec:
  volumeSnapshotClassName: performance
  source:
    persistentVolumeClaimName: SOURCE_PVC_NAME

---


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: RESTORED_PVC_NAME
  namespace: NAMESPACE
spec:
  dataSource:
    name: VOLUME_SNAPSHOT_NAME
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  storageClassName: performance-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5i

Haz los cambios siguientes:

  • BOOT_DISK_NAME: el nombre del disco de arranque de la máquina virtual.
  • CONTAINER_NAME: el nombre del contenedor.
  • DATA_DISK_NAME: el nombre del disco de datos de la máquina virtual.
  • NAMESPACE: el espacio de nombres de Kubernetes de los recursos.
  • POD_NAME: el nombre del pod.
  • PVC_NAME: el nombre del recurso PersistentVolumeClaim.
  • RESTORED_PVC_NAME: el nombre del recurso PersistentVolumeClaim restaurado.
  • SOURCE_PVC_NAME: nombre del recurso PersistentVolumeClaim de origen de la instantánea.
  • VM_NAME: nombre de la máquina virtual.
  • VOLUME_NAME: el nombre del volumen.
  • VOLUME_SNAPSHOT_NAME: el nombre del recurso VolumeSnapshot.
  • GKE_RELEASE: la versión de lanzamiento de GKE.