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

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

准备工作

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

存储类别概览

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

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

设置或更新默认 StorageClass

最初,搭配 VM Runtime on GDC 的 GKE on Bare Metal 未配置默认 StorageClass。如需在未指定 StorageClass 的情况下创建 VirtualMachineDisk,您必须先创建 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 资源不会更新为使用已定义的存储配置文件设置。

后续步骤