最大限度地缩短虚拟机启动时间

如果您需要虚拟机尽快启动,请按照本页中的说明尽可能缩短虚拟机 (VM) 启动时间。缩短启动时间会牺牲资源效率,即您的项目会消耗更多资源,并增加安全风险。

准备工作

如需使用 gdcloud 命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud CLI。Distributed Cloud 的所有命令都使用 gdcloudkubectl CLI,并且需要操作系统 (OS) 环境。

获取 kubeconfig 文件路径

如需针对管理 API 服务器运行命令,请确保您拥有以下资源:

  1. 登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。

  2. 使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的 MANAGEMENT_API_SERVER

请求权限和访问权限

如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相关步骤验证您是否在虚拟机所在项目的命名空间中拥有 Project VirtualMachine Admin (project-vm-admin) 角色。

保持磁盘连接处于活跃状态

当虚拟机启动时,从虚拟机的节点到虚拟机的磁盘建立连接需要几秒钟的时间。为了使虚拟机更快启动,必须在虚拟机关闭时保持磁盘连接处于活动状态,这样磁盘连接就不会在后续虚拟机启动时重新初始化。为此,当您运行命令以启用磁盘连接保持活跃状态时,系统会自动创建一个虚拟 Pod,该 Pod 会挂载所有虚拟机的磁盘。

启用磁盘连接保持活动状态

如需使项目 PROJECT 中名为 VM_NAME 的虚拟机的磁盘连接保持有效,请运行以下命令。执行此操作后,系统会自动创建虚拟 pod:

kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/enable-connection-keep-alive: "true"
'

在整个说明中,使用以下定义替换变量。

变量定义
MANAGEMENT_API_SERVER 管理 API 服务器 kubeconfig 文件。
VM_NAME 虚拟机的名称。
PROJECT 虚拟机所在的 GDC 项目。

启用磁盘连接保持活跃状态后,系统会在与虚拟机相同的项目中创建一个名为 disk-connection-keep-alive-VM_NAME 的 pod。由于 pod 会保持虚拟机的磁盘连接处于活动状态,因此下次重启虚拟机时速度会更快,后续启动时间也会更快。

设置磁盘连接保持活跃状态亲和性

虚拟机重新启动时,Kubernetes 调度器可能会选择其他节点。为降低这种情况发生的几率,请在虚拟机和 keep-alive pod 之间配置虚拟机间亲和性规则。配置为自动执行此操作:

kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/add-connection-keep-alive-affinity: "true"
'

这会在虚拟机上向 keep-alive pod 添加首选亲和性设置。

注意事项

请注意以下两点,以免磁盘连接断开:

  • Keep-alive pod 会产生额外的资源使用量:
    • 它计入每个节点的 pod 数量限制。
    • 它使用由 Kubernetes 分配的额外 IP 地址。
    • 它使用的额外 CPU 和内存量微乎其微。
  • 由于存在 keep-alive pod 的节点始终挂接了虚拟机的磁盘,即使虚拟机已关闭,安全界面也会增加。

使用 BIOS 固件

在 GDC 中,使用统一可扩展固件接口 (UEFI) 固件启动虚拟机的速度比使用 BIOS 固件启动虚拟机的速度慢。

  1. 为确保启动时间最短,请将虚拟机的固件类型设置为 BIOS:

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT --type merge --patch $'
    spec:
      firmware:
        type: bios
        enableSecureBoot:
    '
    
  2. 如果虚拟机正在运行,请按照重启虚拟机的说明重启它。

注意事项

使用 BIOS 固件的注意事项是,它不支持安全启动

使用大容量启动磁盘

为了尽可能缩短虚拟机启动时间,请将大小为 500 GB 或更大的启动磁盘挂接到虚拟机。