本文档适用于运行 Anthos clusters on Bare Metal 的应用所有者和平台管理员。本文档介绍如何为使用 Anthos VM Runtime 的虚拟机创建和使用存储类别。通过 StorageClass
,您可以定义不同的存储配置,以满足虚拟机的各种需求。
准备工作
如需完成本文档中的任务,您需要能够使用 Anthos clusters on Bare Metal 1.12.0 版 (anthosBareMetalVersion: 1.12.0
) 或更高版本。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用 Anthos clusters on Bare Metal,或查看集群创建概览。
存储类别概览
您可以使用 StorageClass
来定义虚拟机可用的存储类型。不同的存储类别可能会映射到不同类型的存储硬件、文件系统或性能。您可以在 Anthos VM Runtime 中创建和使用存储类别来支持计算工作负载。有关详情,请参阅存储类别。
您可以在 Anthos VM Runtime 的自定义资源中定义默认 StorageClass
。如果您在创建 VirtualMachineDisks,
时未定义特定的类别,则会使用默认的 StorageClass
。不会配置初始 StorageClass
并设为默认值。在下一部分中,您将了解如何设置或更新此默认 StorageClass。
设置或更新默认 StorageClass
一开始,使用 Anthos VM Runtime 的 Anthos clusters on Bare Metal 未配置默认 StorageClass
。如需创建 VirtualMachineDisk
并且不指定 StorageClass
,您必须先创建 StorageClass
,然后将其设置为默认值。
如果您想在创建 VirtualMachineDisk
时初始设置或更新 Anthos VM Runtime 使用的默认 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
。
Anthos 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 组件。您设置的值取决于您使用的存储驱动程序。请根据您使用的存储类型替换以下值:ACCESS_MODE
:您要使用的访问模式。如果关联的StorageClass
支持,则首选访问模式为ReadWriteMany
。- 可接受的值包括
ReadWriteOnce
、ReadOnlyMany
、ReadWriteMany
、ReadWriteOncePod
。如果未指定,则会根据 Anthos VM Runtime 默认值使用ReadWriteOnce
。如需了解详情,请参阅访问模式。
- 可接受的值包括
VOLUME_MODE
:您要使用的卷模式。- 可接受的值包括
Filesystem
和Block
。如果未指定,则会根据 Kubernetes 默认值使用Filesystem
。如需了解详情,请参阅卷模式。
- 可接受的值包括
在编辑器中保存并关闭
StorageProfile
自定义资源。现在,当您创建任何虚拟磁盘时,将使用您定义的存储配置文件设置。现有的
VirtualMachineDisk
资源不会更新为使用已定义的存储配置文件设置。