Ative o armazenamento de blocos de elevado desempenho

O Google Distributed Cloud (GDC) air-gapped oferece um nível de armazenamento de elevado desempenho concebido para cargas de trabalho exigentes. Este nível oferece um aumento do desempenho até 30 IOPS por GB, um aumento em comparação com o nível de armazenamento em blocos padrão, que oferece até 3 IOPS por GB. Este documento descreve como ativar o armazenamento de blocos de alto desempenho e como monitorizar as respetivas métricas, alertas e detalhes de faturação. Destina-se a públicos-alvo no grupo de administradores da plataforma (como administradores de TI) ou no grupo de operadores da aplicação (como programadores de aplicações).

A classe de armazenamento de elevado desempenho performance-rwo está disponível para o cluster do Kubernetes.

Com a adição da SKU de elevado desempenho, para volumes que usam classes de armazenamento performance-*, o processo de restauro e instantâneos de volumes é semelhante ao das classes de armazenamento standard-*. Pode tirar uma captura instantânea de volume e restaurar um PVC semelhante sem qualquer alteração à classe de armazenamento ou aos valores de qualidade de serviço (QoS) subjacentes. O performance volumesnapshotclass capta o tipo de volume e, com este volumesnapshot, pode restaurar o volume com a mesma classe de armazenamento.

Antes de começar

Antes de começar, certifique-se de que tem os seguintes pré-requisitos:

  • Ambiente e versão da GDC

    • Uma instância do GDC em execução que tenha sido atualizada para a versão 1.15.1 ou posterior.
  • Projeto

    • Um projeto da GDC numa organização onde pretende aprovisionar volumes de alto desempenho.
  • Acesso e autorizações

    • Autorizações do Kubernetes suficientes para criar, gerir e usar recursos PersistentVolumeClaim (PVC) para cargas de trabalho de contentores ou recursos VirtualMachineDisk para máquinas virtuais no espaço de nomes do projeto de destino. As funções comuns necessárias incluem:
      • project-vm-admin para gerir VMs e discos de VMs.
      • Funções que permitem a gestão de PVCs, que são frequentemente incluídas em funções de edição ou personalizadas.
      • Normalmente, não são necessárias funções especiais ao nível da organização para um utilizador final consumir o armazenamento se as classes de armazenamento de alto desempenho já estiverem disponíveis no cluster do respetivo projeto. A configuração e a exposição destas classes são da responsabilidade de um operador de infraestrutura (IO) ou de um PA.
  • Compreensão das classes de armazenamento

    • Familiaridade com o conceito de objetos do Kubernetes StorageClass. Os níveis de elevado desempenho são expostos através de classes de armazenamento específicas.
    • Tem de especificar uma classe de armazenamento de alto desempenho quando cria um PVC ou um disco de máquina virtual.
  • Capacidade e quotas

    • Certifique-se de que a organização e o projeto têm uma quota de armazenamento suficiente atribuída para o nível de elevado desempenho.
    • Tenha em atenção as limitações de capacidade ou as restrições de desempenho no ambiente e hardware específicos do GDC.

Aplique o subcomponentOverride aos clusters necessários

Por predefinição, o FeatureGate para o SKU de elevado desempenho está definido como State: TEST. Para ativar as performance-* classes de armazenamento, o administrador da plataforma (PA) ou o operador da aplicação (AO) tem de aplicar um subcomponentOverride aos clusters necessários com um valor FileHighPerformanceStorageClassStage mais elevado em comparação com o value predefinido. O exemplo seguinte usa o valor mais elevado de production.

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

O espaço de nomes em SubcomponentOverride especifica o espaço de nomes do cluster (por exemplo, cluster-1) onde a flag vai ser definida. Substitua NAMESPACE pelos espaços de nomes correspondentes dos clusters e crie os ficheiros SubcomponentOverride. Aplique esta alteração através do seguinte comando:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

Substitua o seguinte:

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH: o caminho para o ficheiro kubeconfig do cluster do servidor da API de gestão.
  • SUBOVERRIDE_USER_FILE: o caminho para o ficheiro SubcomponentOverride YAML do cluster do Kubernetes.

Para ativar a SKU de alto desempenho para clusters do Kubernetes, aplique o subcomponentOverride ao cluster do servidor da API de gestão.

Monitorize métricas e alertas de alto desempenho

O armazenamento de alto desempenho também inclui métricas adicionais, como detalhes de QOSPolicy. Esta funcionalidade permite que as métricas sejam filtradas e agregadas com base no QOSPolicy no ONTAP, o que possibilita distinguir volumes de alto desempenho dos volumes padrão.

Observe as métricas

As seguintes métricas de elevado desempenho estão disponíveis para a pilha de observabilidade de ficheiros:

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

Ambas as métricas foram enriquecidas com informações qos_policy do ONTAP.

Painéis de controlo de observação

Com base nas melhorias das métricas anteriores, os alertas estão disponíveis para o armazenamento padrão e de alto desempenho, o que permite uma monitorização segmentada e uma deteção mais rápida de problemas com base na classe de desempenho. Para visualizar estes dados, estão disponíveis painéis de controlo de alto desempenho que usam as métricas enriquecidas para fornecer estatísticas sobre o desempenho e a utilização de volumes de alto desempenho.

Para ver estes painéis de controlo, aceda ao Grafana e navegue para Painéis de controlo>FILE and Dashboards>FILE/ONTAP.

Estão disponíveis os seguintes painéis de controlo de alto desempenho:

  • Painel de controlo de equilíbrio do desempenho do armazenamento de blocos de ficheiros da organização.
  • Os painéis de controlo FILE/ONTAP são painéis de controlo que extraem dados do Harvest. Isto permite-lhe monitorizar diretamente o desempenho do ONTAP a partir do Grafana.

Observe os alertas

Juntamente com as métricas e os painéis de controlo, também estão disponíveis alertas relacionados com o elevado desempenho. Estes alertas ajudam a detetar problemas no armazenamento e encaminham os utilizadores para os manuais de procedimentos que têm instruções que ajudam a resolver os alertas. Se for acionado um alerta, este fornece um código de manual de procedimentos que pode ser visto no manual de serviço. Os PAs devem seguir estes manuais de procedimentos para resolver o alerta. Pode ver estes alertas na secção Regras de alerta no Grafana navegando para infra-obs > file-block-storage-perf-monitoring-rules.

Estão disponíveis os seguintes alertas de elevado desempenho:

  • fb_high_org_volume_latency e fb_high_org_avg_volume_latency para acompanhar a latência média do volume numa organização e individualmente, respetivamente.
  • fb_storage_node_too_busy para acompanhar a utilização da CPU de um nó e envia alertas se a utilização da CPU for demasiado elevada.
  • fb_current_ops_higher_than_expected para alertar se a quantidade de operações num nó atual for superior ao esperado.

Consultar faturação de elevado desempenho

O SKU para o armazenamento em bloco de elevado desempenho é C008-4FF2-45E7. A faturação desta SKU é feita com a seguinte consulta do Prometheus:


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

A utilização de metering_storage_allocated_capacity_bytes significa que a faturação se baseia nos bytes alocados e não nos bytes realmente usados.

A classe de armazenamento e a política de QoS para volumes são definidas quando são aprovisionadas pela primeira vez. Uma vez que a política de QoS é uma variável que pode ser alterada diretamente no ONTAP, definimos sku_id nas métricas com base no qos_policy e, em seguida, faturamos por sku_id.

Exemplos de fluxos de trabalho

Pode usar o SKU de alto desempenho nos seus fluxos de trabalho através de diferentes tipos de declarações de volume. Em última análise, o mecanismo subjacente permanece o mesmo, por exemplo, um PVC suportado por performance-*. Os exemplos seguintes mostram as diferentes formas de criar um novo nível de volumes.

Aplique as seguintes configurações YAML ao cluster adequado referenciando o nome da classe de armazenamento performance-* correto.

PVCs e montagens de pods de alto desempenho:

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"

VMs e discos de VMs de alto desempenho:

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

Restauros e instantâneos de volumes de elevado desempenho:

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

Substitua o seguinte:

  • BOOT_DISK_NAME: o nome do disco de arranque da máquina virtual.
  • CONTAINER_NAME: o nome do contentor.
  • DATA_DISK_NAME: o nome do disco de dados da máquina virtual.
  • NAMESPACE: o namespace do Kubernetes para os recursos.
  • POD_NAME: o nome do agrupamento.
  • PVC_NAME: o nome do recurso PersistentVolumeClaim.
  • RESTORED_PVC_NAME: o nome do recurso PersistentVolumeClaim restaurado.
  • SOURCE_PVC_NAME: o nome do recurso PersistentVolumeClaim de origem para o resumo.
  • VM_NAME: o nome da máquina virtual.
  • VOLUME_NAME: o nome do volume.
  • VOLUME_SNAPSHOT_NAME: o nome do recurso VolumeSnapshot.
  • GKE_RELEASE: a versão de lançamento do GKE.