启用高性能块存储

Google Distributed Cloud (GDC) 网闸隔离配置提供了一个高性能存储层,专为要求苛刻的工作负载而设计。此层级可提供高达每 GB 30 IOPS 的性能,与标准块存储层级(最高可提供每 GB 3 IOPS)相比有所提升。本文档介绍了如何启用高性能块存储,以及如何监控其相关指标、提醒和结算详情。它面向平台管理员群组(例如 IT 管理员)或应用运维者群组(例如应用开发者)中的受众群体。

Kubernetes 集群可使用 performance-rwo 高性能存储类别。

添加高性能 SKU 后,对于使用 performance-* 存储类别的卷,卷快照和恢复过程与使用 standard-* 存储类别的卷类似。您可以拍摄卷快照并恢复类似的 PVC,而无需更改存储类或底层标准服务质量 (QoS) 值。performance volumesnapshotclass 可捕获卷的类型,使用此 volumesnapshot 可恢复具有相同存储类别的卷。

准备工作

在开始之前,请确保满足以下前提条件:

  • GDC 环境和版本

    • 已升级到 1.15.1 版或更高版本的正在运行的 GDC 实例。
  • 项目

    • 组织中您打算预配高性能卷的 GDC 项目。
  • 访问和权限

    • 拥有足够的 Kubernetes 权限,可为容器工作负载创建、管理和使用 PersistentVolumeClaim (PVC) 资源,或为目标项目命名空间中的虚拟机创建、管理和使用 VirtualMachineDisk 资源。需要具备的常见角色包括:
      • project-vm-admin 来管理虚拟机和虚拟机磁盘。
      • 允许 PVC 管理的角色,通常包含在编辑者角色或自定义角色中。
      • 如果高性能存储类已在最终用户的项目集群中提供,则最终用户通常无需任何特殊的组织级角色即可使用存储。这些类的设置和公开是基础设施运维人员 (IO) 或 PA 的责任。
  • 了解存储类别

    • 熟悉 Kubernetes StorageClass 对象这一概念。高性能层级通过特定的存储类别公开。
    • 创建 PVC 或虚拟机磁盘时,您必须指定高性能存储类别。
  • 容量和配额

    • 确保组织和项目已为高性能层分配足够的存储配额。
    • 请注意特定 GDC 环境和硬件的任何容量限制或性能限制。

subcomponentOverride 应用于所需集群

默认情况下,高性能 SKU 的 FeatureGate 设置为 State: TEST。如需启用 performance-* 存储类,平台管理员 (PA) 或应用运维人员 (AO) 必须向所需集群应用 subcomponentOverride,且该 subcomponentOverrideFileHighPerformanceStorageClassStage 值高于默认值 value。以下示例使用较高的值 production

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

SubcomponentOverride 中的命名空间指定了要设置标志的集群命名空间(例如 cluster-1)。将 NAMESPACE 替换为集群的相应命名空间,并创建 SubcomponentOverride 文件。使用以下命令应用此更改:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG_PATH apply -f SUBOVERRIDE_USER_FILE

替换以下内容:

  • MANAGEMENT_API_SERVER_KUBECONFIG_PATH:管理 API 服务器集群 kubeconfig 文件的路径。
  • SUBOVERRIDE_USER_FILE:Kubernetes 集群的 SubcomponentOverride YAML 文件的路径。

如需为 Kubernetes 集群启用高性能 SKU,请将 subcomponentOverride 应用到管理 API 服务器集群。

监控高性能指标和提醒

高性能存储方案还包含其他指标,例如 QOSPolicy 详情。借助此功能,可以根据 ONTAP 中的 QOSPolicy 过滤和汇总指标,从而区分高性能卷和标准卷。

观察指标

文件可观测性堆栈提供以下高性能指标:

  • metering_storage_allocated_capacity_bytes
  • metering_storage_used_capacity_bytes

这两个指标均已通过来自 ONTAP 的 qos_policy 信息进行丰富。

观察信息中心

在之前的指标增强功能的基础上,我们还为标准存储和高性能存储提供了提醒功能,以便根据性能等级进行有针对性的监控,并更快地检测到问题。为了直观呈现这些数据,我们提供了高性能信息中心,该信息中心使用丰富指标来深入了解高性能卷的性能和使用情况。

如需查看这些信息中心,请访问 Grafana,然后依次前往信息中心> FILE and Dashboards(文件和信息中心)> FILE/ONTAP

以下高性能信息中心可供使用:

  • 组织文件块存储性能平衡信息中心
  • FILE/ONTAP 信息中心是抓取 Harvest 数据的信息中心。这样,您就可以直接从 Grafana 监控 ONTAP 性能。

查看提醒

除了指标和信息中心之外,您还可以查看与高性能相关的提醒。这些提醒有助于检测存储方面的问题,并引导用户查看包含相关说明的 Runbook,以帮助解决提醒所指的问题。如果触发了提醒,该提醒将提供可在服务手册中查看的 Runbook 代码。PA 应按照这些运行手册来解决提醒。如需在 Grafana 中查看这些提醒,请依次前往 infra-obs > file-block-storage-perf-monitoring-rules,然后在提醒规则部分中查看。

以下高性能提醒可供使用:

  • fb_high_org_volume_latencyfb_high_org_avg_volume_latency,分别用于跟踪组织和个人的平均音量延迟。
  • fb_storage_node_too_busy 来跟踪节点的 CPU 使用情况,并在 CPU 使用率过高时发出提醒。
  • fb_current_ops_higher_than_expected,用于在当前节点的运行次数高于预期时发出提醒。

查询高性能结算

高性能块存储的 SKU 为 C008-4FF2-45E7。此 SKU 的结算通过以下 Prometheus 查询完成:


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

使用 metering_storage_allocated_capacity_bytes 表示结算依据的是分配的字节数,而不是实际使用的字节数。

卷的存储类和 QoS 政策是在首次预配时设置的。由于 QoS 政策是可在 ONTAP 中直接更改的变量,因此我们在指标中根据 qos_policy 设置 sku_id,然后按 sku_id 进行结算。

示例工作流

您可以通过不同类型的卷声明在工作流中使用高性能 SKU。最终,底层机制保持不变,例如,由 performance-* 支持的 PVC。以下示例展示了创建新卷层级的不同方法。

通过引用准确的 performance-* 存储类名称,将以下 YAML 配置应用于相应的集群。

高性能 PVC 和 pod 装载:

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"

高性能虚拟机磁盘和虚拟机:

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

高性能卷快照和恢复:

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

替换以下内容:

  • BOOT_DISK_NAME:虚拟机启动磁盘的名称。
  • CONTAINER_NAME:容器的名称。
  • DATA_DISK_NAME:虚拟机数据磁盘的名称。
  • NAMESPACE:资源的 Kubernetes 命名空间。
  • POD_NAME:Pod 的名称。
  • PVC_NAMEPersistentVolumeClaim 资源的名称。
  • RESTORED_PVC_NAME:已恢复的 PersistentVolumeClaim 资源的名称。
  • SOURCE_PVC_NAME:快照的来源 PersistentVolumeClaim 资源的名称。
  • VM_NAME:虚拟机的名称。
  • VOLUME_NAME:卷的名称。
  • VOLUME_SNAPSHOT_NAMEVolumeSnapshot 资源的名称。
  • GKE_RELEASE:GKE 发布版本。