如果您需要虚拟机尽快启动,请按照本页中的说明尽可能缩短虚拟机 (VM) 启动时间。最大限度地缩短启动时间会牺牲资源效率,即您的项目会消耗更多资源,并增加安全风险。
本文档面向平台管理员或应用运维人员群组中的开发者,他们需要在 Distributed Cloud 环境中配置虚拟机实例启动时间。如需了解详情,请参阅 GDC 气隙环境受众群体文档。
准备工作
如需使用 gdcloud 命令行界面 (CLI) 命令,请确保您已下载、安装并配置 gdcloud CLI。Distributed Cloud 的所有命令都使用 gdcloud 或 kubectl CLI,并且需要操作系统 (OS) 环境。
获取 kubeconfig 文件路径
如需针对 Management API 服务器运行命令,请确保您拥有以下资源:
登录并生成 Management API 服务器的 kubeconfig 文件(如果您还没有)。
使用 Management API 服务器的 kubeconfig 文件路径替换这些说明中的
MANAGEMENT_API_SERVER。
申请 IAM 角色
如需尽可能缩短虚拟机的启动时间,请与项目 IAM 管理员联系,请求授予 Virtual Machine Project Admin (project-vm-admin) 角色。
所有虚拟机角色都必须绑定到虚拟机所在项目的命名空间。按照相关步骤验证您的访问权限。
保持磁盘连接有效
当虚拟机启动时,从虚拟机的节点到虚拟机的磁盘建立连接需要几秒钟的时间。为了使虚拟机更快启动,必须在虚拟机关机时保持磁盘连接处于活动状态,这样磁盘连接就不会在后续虚拟机启动时重新初始化。为此,当您运行命令以启用磁盘连接 keep-alive 时,系统会自动创建一个虚拟 Pod,该 Pod 会装载虚拟机的全部磁盘。
启用磁盘连接保持活动状态
如需使项目 PROJECT 中名为 VM_NAME 的虚拟机的磁盘连接保持有效,请运行以下命令。执行此操作后,系统会自动创建虚拟 pod:
kubectl --kubeconfig MANAGEMENT_API_SERVER \
-n PROJECT \
patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
--type merge --patch $'
metadata:
annotations:
disk.virtualmachine.gdc.goog/enable-connection-keep-alive: "true"
'
在整个说明中,使用以下定义替换变量。
| 变量 | 定义 |
|---|---|
MANAGEMENT_API_SERVER |
Management API 服务器 kubeconfig 文件。 |
VM_NAME |
虚拟机的名称。 |
PROJECT |
虚拟机所在的 GDC 项目。 |
启用磁盘连接 keep-alive 后,系统会在与虚拟机相同的项目中创建一个名为 disk-connection-keep-alive-VM_NAME 的 Pod。由于 pod 会保持虚拟机的磁盘连接处于活动状态,因此下次重启虚拟机时速度会更快,后续启动时间也会缩短。
设置磁盘连接 keep-alive 亲和性
虚拟机重新启动时,Kubernetes 调度器可能会选择其他节点。为降低这种情况发生的几率,请在虚拟机与 keep-alive pod 之间配置虚拟机间亲和性规则。配置为自动执行此操作:
kubectl --kubeconfig MANAGEMENT_API_SERVER \
-n PROJECT \
patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
--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 固件启动虚拟机的速度慢。
为确保启动时间最短,请将虚拟机的固件类型设置为 BIOS:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ patch virtualmachines.virtualmachine.gdc.goog VM_NAME \ -type merge --patch $' spec: firmware: type: bios enableSecureBoot: '如果虚拟机正在运行,请按照重启虚拟机的说明重启它。
注意事项
使用 BIOS 固件的注意事项是,它不支持安全启动。
使用大容量启动磁盘
为了尽可能缩短虚拟机启动时间,请将大小为 500 GB 或更大的启动磁盘挂接到虚拟机。