在 GDC 上的 VM Runtime 中创建和使用存储类别

本文档适用于运行 GKE on Bare Metal 的应用所有者和平台管理员。本文档介绍如何为使用 GDC 上的虚拟机运行时的虚拟机创建和使用存储类别。通过 StorageClass,您可以定义不同的存储配置,以满足虚拟机的各种需求。

准备工作

如需完成本文档中的任务,您需要拥有 GKE on Bare Metal 1.12.0 版 (anthosBareMetalVersion: 1.12.0) 或更高版本集群的访问权限。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用适用于 Bare Metal 的 GDCV 或参阅集群创建概览

存储类别概览

您可以使用 StorageClass 来定义虚拟机可用的存储类型。不同的存储类别可能会映射到不同类型的存储硬件、文件系统或性能。您可以在 GDC 上的 VM Runtime 中创建和使用存储类别,从而为计算工作负载提供支持。有关详情,请参阅存储类别

可以在 GDC 上的虚拟机运行时的自定义资源中定义默认 StorageClass。如果您在创建 VirtualMachineDisks, 时未定义特定的类别,则会使用默认的 StorageClass。不会配置初始 StorageClass 并设为默认值。在下一部分中,您将了解如何设置或更新此默认 StorageClass

设置或更新默认 StorageClass

最初,搭配 VM Runtime on GDC 的 GKE on Bare Metal 未配置默认 StorageClass。如需创建 VirtualMachineDisk 并且不指定 StorageClass,您必须先创建 StorageClass,然后将其设置为默认值。

如果您想最初设置或更新创建 VirtualMachineDisk 时 GDC 上的虚拟机运行时使用的默认 StorageClass,请更新 VMRuntime 自定义资源。

  1. 修改 VMRuntime 自定义资源:

    kubectl edit vmruntime
    
  2. 添加或更新用于指定要使用的默认 StorageClassspec.storage 部分:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      storage:
        defaultStorageClass: STORAGE_CLASS_NAME
    ...
    

    使用您要使用的默认 StorageClass 的名称修改 STORAGE_CLASS_NAME。如果您需要先创建一个 StorageClass,请参阅创建 StorageClass

  3. 在编辑器中保存并关闭 VMRuntime 自定义资源。

    现在,当您创建虚拟机磁盘且不指定 StorageClass 时,将使用您指定的 StorageClass。以下部分介绍了如何创建磁盘并使用特定的 StorageClass

    现有的 VirtualMachineDisk 资源不会更新为使用新指定的 StorageClass

使用特定的 StorageClass

如果您不想在创建 VirtualMachineDisk 时使用默认的 StorageClass,请使用 storageClassName 字段指定其他 StorageClass

如需在创建 VirtualMachineDisk 时使用特定的已定义 StorageClass,请完成以下步骤:

  1. 在您选择的编辑器中创建 VirtualMachineDisk 清单,例如 my-disk.yaml

    nano my-disk.yaml
    
  2. 复制并粘贴以下 YAML 清单:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
      storageClassName: STORAGE_CLASS_NAME
    

    替换以下值:

    • DISK_NAME:磁盘的名称。
    • STORAGE_CLASS_NAME:要用于磁盘的 StorageClass。此 StorageClass 必须已存在。如果您需要先创建 StorageClass,请参阅创建 StorageClass
  3. 在编辑器中保存并关闭磁盘清单。

  4. 使用 kubectl 创建磁盘:

    kubectl apply -f my-disk.yaml
    

配置存储配置文件

存储配置文件提供与每个 StorageClass 关联的额外配置选项。这些配置选项包括要用于使用 StorageClassVirtualMachineDisks 的访问模式和卷模式。

如果没有配置存储配置文件,磁盘将默认为 ReadWriteOnce 访问模式。此访问模式对于生产工作负载是不够的,因为实时迁移等功能不起作用。未配置存储配置文件的默认卷模式为 Filesystem

GDC 上的 VM Runtime 会自动为集群中的每个 StorageClass 生成一个存储配置文件。存储配置文件的名称与关联的 StorageClass 相同。以下示例输出显示集群有四个存储类别和关联的配置文件:

  $ kubectl get storageprofiles

  NAME            AGE
  anthos-system   11d
  node-disk       11d
  standard        11d
  nfs             11d

如需修改存储配置文件并更改访问模式或卷模式,请完成以下步骤:

  1. 修改 StorageProfile 自定义资源以进行修改:

    kubectl edit storageprofile STORAGE_PROFILE_NAME
    

    STORAGE_PROFILE_NAME 替换为您要修改的 StorageProfile

  2. 将单个条目添加到 StorageProfilespec.claimPropertySets 列表:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: nfs
    spec:
      claimPropertySets:
      - accessModes:
        - ACCESS_MODE
        volumeMode: VOLUME_MODE
    

    accessModevolumeMode 使用底层 Kubernetes 组件。您设置的值取决于您使用的存储驱动程序。请根据您使用的存储类型替换以下值:

    • ACCESS_MODE:您要使用的访问模式。如果关联的 StorageClass 支持,则首选访问模式为 ReadWriteMany
      • 可接受的值包括 ReadWriteOnceReadOnlyManyReadWriteManyReadWriteOncePod。如果未指定,系统将根据 GDC 上的虚拟机运行时默认值使用 ReadWriteOnce。如需了解详情,请参阅访问模式
    • VOLUME_MODE:您要使用的卷模式。
      • 可接受的值包括 FilesystemBlock。如果未指定,则会根据 Kubernetes 默认值使用 Filesystem。如需了解详情,请参阅卷模式
  3. 在编辑器中保存并关闭 StorageProfile 自定义资源。

    现在,当您创建任何虚拟磁盘时,将使用您定义的存储配置文件设置。现有的 VirtualMachineDisk 资源不会更新为使用已定义的存储配置文件设置。

后续步骤