本文档适用于运行 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
自定义资源。
修改
VMRuntime
自定义资源:kubectl edit vmruntime
添加或更新用于指定要使用的默认
StorageClass
的spec.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
。在编辑器中保存并关闭
VMRuntime
自定义资源。现在,当您创建虚拟机磁盘且不指定
StorageClass
时,将使用您指定的StorageClass
。以下部分介绍了如何创建磁盘并使用特定的 StorageClass。现有的
VirtualMachineDisk
资源不会更新为使用新指定的StorageClass
。
使用特定的 StorageClass
如果您不想在创建 VirtualMachineDisk
时使用默认的 StorageClass
,请使用 storageClassName
字段指定其他 StorageClass
。
如需在创建 VirtualMachineDisk
时使用特定的已定义 StorageClass
,请完成以下步骤:
在您选择的编辑器中创建
VirtualMachineDisk
清单,例如my-disk.yaml
:nano my-disk.yaml
复制并粘贴以下 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。
在编辑器中保存并关闭磁盘清单。
使用
kubectl
创建磁盘:kubectl apply -f my-disk.yaml
配置存储配置文件
存储配置文件提供与每个 StorageClass
关联的额外配置选项。这些配置选项包括要用于使用 StorageClass
的 VirtualMachineDisks
的访问模式和卷模式。
如果没有配置存储配置文件,磁盘将默认为 ReadWriteOnce
访问模式。此访问模式对于生产工作负载是不够的,因为实时迁移等功能不起作用。未配置存储配置文件的默认卷模式为 Filesystem
。
GDC 上的 VM Runtime 会自动为集群中的每个 StorageClass
生成一个存储配置文件。存储配置文件的名称与关联的 StorageClass
相同。以下示例输出显示集群有四个存储类别和关联的配置文件:
$ kubectl get storageprofiles
NAME AGE
anthos-system 11d
node-disk 11d
standard 11d
nfs 11d
如需修改存储配置文件并更改访问模式或卷模式,请完成以下步骤:
修改
StorageProfile
自定义资源以进行修改:kubectl edit storageprofile STORAGE_PROFILE_NAME
将
STORAGE_PROFILE_NAME
替换为您要修改的StorageProfile
。将单个条目添加到
StorageProfile
的spec.claimPropertySets
列表:apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: nfs spec: claimPropertySets: - accessModes: - ACCESS_MODE volumeMode: VOLUME_MODE
accessMode
和volumeMode
使用底层 Kubernetes 组件。您设置的值取决于您使用的存储驱动程序。请根据您使用的存储类型替换以下值:在编辑器中保存并关闭
StorageProfile
自定义资源。现在,当您创建任何虚拟磁盘时,将使用您定义的存储配置文件设置。现有的
VirtualMachineDisk
资源不会更新为使用已定义的存储配置文件设置。