当您使用 Google 提供的公共映像启动虚拟机 (VM) 实例时,系统会自动在虚拟机实例上安装访客环境。客机环境是读取元数据服务器内容以使虚拟机在 Compute Engine 上正常运行的一组脚本、守护程序和二进制文件。元数据服务器是用于将信息从客户端转移到客机操作系统的通信渠道。
本文档概括介绍了客机环境的组件、支持的操作系统,并说明了如何知道何时需要手动安装或更新客机环境。
何时手动安装或更新客机环境
使用 Google 提供的公共映像创建的虚拟机实例包含默认安装的客机环境。
要检查实例上是否运行着客机环境,请参阅验证客机环境。
在某些情况下,安装的客机环境可能会过时。如果客机环境在您的实例上可用,但已过时,请更新客机环境。
否则,在以下条件下,您可能需要手动安装客机环境:
您将自定义映像或虚拟磁盘导入 Compute Engine 平台,并选择不允许自动安装客机环境。
导入虚拟磁盘或自定义映像时,您可以选择允许 Compute Engine 为您安装客机环境。但是,如果您在导入过程中选择不安装客机环境,则必须按照手动步骤安装客机环境。
您使用的映像未针对本地 SSD 磁盘优化客机环境。
您的实例使用的是早于
v20141218
的映像。
如果您需要手动安装客机环境,请参阅安装客机环境。
支持的操作系统
Compute Engine 上提供的每个受支持的操作系统都需要特定的客机环境软件包。Google 或操作系统的所有者都可以构建这些软件包。如需了解构建客机环境软件包的人员,请参阅操作系统详细信息文档中的“与标准映像的明显差异”部分。
Linux 客机环境
无论 Linux 客机环境是由 Google 还是操作系统的所有者构建,都有一些关键组件适用于所有版本。
Linux 客机环境的基本组件以 deb
或 rpm
软件包的形式提供,这些软件包是使用受支持发行版的适当配置创建的。
以下列表总结了 Linux 客机环境中封装的主要脚本、守护程序和软件包:
google-compute-engine
软件包包含以下组件:systemd
的系统初始化脚本。- 系统配置,例如
udev
规则、sysctl
规则、rsyslog
配置和用于主机名设置的dhcp
配置。 - 在实例启动期间运行的 Bash 脚本。
此软件包依赖于
google-guest-agent
和google-compute-engine-oslogin
软件包。如需查看此软件包的源代码,请参阅 GitHub 上的 guest-configs。
google-guest-agent
软件包中包含在客机操作系统上运行的客机代理和元数据脚本可执行文件,用以支持 Compute Engine 功能。Linux 客机代理支持以下功能:Linux 客机代理与 Compute Engine 服务的通信方式如下: + 对虚拟机元数据执行数据读写操作 + 将日志发送到串行端口,还可以选择发送到 Cloud Logging
Linux 访客代理还会从客机操作系统收集遥测数据,以供分析和调试。遥测数据包括:操作系统名称、操作系统版本、操作系统内核版本、操作系统内核版本和操作系统代理版本。如需停用遥测数据收集,请在虚拟机级别或项目级别设置以下元数据:
disable-guest-telemetry=TRUE
。如需查看此软件包的源代码,请参阅 GitHub 上的 guest-agent。
google-compute-engine-oslogin
软件包中包含 OS Login 的二进制文件、模块和脚本。您可以使用 OS Login 来通过 Identity and Access Management (IAM) 角色管理对虚拟机实例的访问权限。该软件包包含以下内容:
- 已获授权的密钥命令,该命令为 sshd 提供用户的 OS Login 配置文件中的 SSH 密钥,以便在登录时对用户进行身份验证。
- 名称服务切换 (NSS) 模块,这些模块用于为系统提供 OS Login 用户和群组信息。
- 可插入式身份验证模块 (PAM),这些模块提供授权(如果已启用双重支持,则还提供身份验证)支持,以便系统使用 Google Cloud IAM 权限来控制登录实例或以根用户身份执行操作(通过 sudo)的能力。
google_oslogin_nss_cache
,这是一个用于更新本地用户和群组缓存的实用程序。selinux
包含 SELinux 政策定义文件和用于配置 SELinux 以支持 OS Login 的已编译政策软件包。
OS Login 组件与 Compute Engine 服务的通信方式如下:
- 对虚拟机元数据执行数据读写操作
- 将日志发送到串行端口以及(可选)Cloud Logging
如需查看此软件包的源代码,请参阅 GitHub 上的 guest-oslogin。
gce-disk-expand
组件与 Compute Engine 服务的通信方式如下:- 将日志发送到串行端口
如需查看此软件包的源代码,请参阅 GitHub 上的 guest-diskexpand。
google-osconfig-agent
软件包包含 OS Config 代理,虚拟机管理器使用该代理来管理操作系统清单、补丁和操作系统政策。这些脚本与 Compute Engine 服务的通信方式如下:
- 对虚拟机元数据执行数据读写操作
- 默认情况下,在启用 OS Config 代理之前,OS Config 代理不会收集或发送任何信息。启用该代理后,它便会与 OS Config API 服务进行通信。如需查看该代理所完成的操作,请参阅查看虚拟机管理器审核日志。
如需查看代理的源代码,请参阅 GitHub 上的 osconfig。
Windows 客机环境
以下列表总结了属于 Windows 客机环境的软件包:
google-compute-engine-windows
软件包包含 Windows 客机代理。Windows 客机代理用于支持以下流程:Windows 客机代理与 Compute Engine 服务的通信方式如下: + 对虚拟机元数据执行数据读写操作 + 将日志发送到 Windows 应用事件日志、串行端口和 Cloud Logging
Windows 客机代理还会从客机操作系统收集遥测数据,以用于分析和调试。遥测数据包括:操作系统名称、操作系统版本、操作系统内核版本、操作系统内核版本和操作系统代理版本。如需停用遥测数据收集,请在虚拟机级别或项目级别设置以下元数据:
disable-guest-telemetry=TRUE
。如需查看代理的源代码,请参阅 GitHub 上的 guest-agent。
google-compute-engine-sysprep
软件包中包含用于泛化 Windows 实例以准备创建映像的脚本。该软件包还包含instance_setup.ps1
脚本,该脚本用于在首次启动时配置新实例。这些脚本与 Compute Engine 服务的通信方式如下:
- 对虚拟机元数据执行数据读写操作
- 将日志发送到 Windows 应用事件日志和串行端口
如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows
google-compute-engine-metadata-scripts
软件包包含用于运行 Compute Engine、sysprep 专用化的脚本和二进制文件,以及启动和关停脚本。这些脚本与 Compute Engine 服务的通信方式如下:
- 对虚拟机元数据执行数据读写操作
- 使用
sysprep-specialize-script-url
和windows-startup-script-url
时从 Cloud Storage 位置读取数据 - 将日志发送到 Windows 应用事件日志、串行端口和 Cloud Logging
如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows
google-compute-engine-powershell
软件包中包含一个 PowerShell 模块。此模块包含 PowerShell 脚本在其他 Windows 客机环境脚本中常用的一些函数。这些脚本与以下 Compute Engine 服务进行通信:
- 默认情况下,PowerShell 模块中的日志记录函数会将日志发送到 Windows 应用事件日志和串行端口。
如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows。
google-compute-engine-auto-updater
软件包包含用于每天更新 Compute Engine 软件包的脚本。默认情况下,系统不会再安装此软件包。这些脚本与 Compute Engine 服务的通信方式如下:
- 从虚拟机元数据读取数据
- 调用 GooGet 代理以将日志发送到 Windows 应用事件日志和控制台
如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows。
google-compute-engine-diagnostics
软件包中包含用于从实例获取诊断信息并将信息保存到 Cloud Storage 存储桶的二进制文件。该二进制文件由 Windows 客机代理执行。这些脚本与 Compute Engine 服务的通信方式如下:
- 将数据保存到 Cloud Storage 存储桶
如需查看代理的源代码,请参阅 GitHub 上的 compute-image-tools
certgen
软件包包含在实例上创建证书的二进制文件。如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows。
googet
软件包包含二进制文件,这是一个用于安装和维护客机环境的软件包管理器。这些脚本通过从
packages.cloud.google.com
的 Google Cloud 代码库读取数据来与 Compute Engine 服务通信。如需查看代理的源代码,请参阅 GitHub 上的 googet。
google-compute-engine-vss
软件包安装用于通过 Microsoft 的卷影复制服务 (VSS) 截取永久性磁盘快照的 Compute Engine VSS 代理和提供程序。这些脚本与 Compute Engine 服务的通信方式如下:
- 与 Google Cloud 快照服务进行通信
如需查看代理的源代码,请参阅 GitHub 上的 compute-image-windows
google-osconfig-agent
软件包包含 OS Config 代理,供 VM Manager 用于管理操作系统清单、补丁和操作系统政策。这些脚本与 Compute Engine 服务的通信方式如下:
- 对虚拟机元数据执行数据读写操作
- 默认情况下,在启用 OS Config 代理之前,OS Config 代理不会收集或发送任何信息。启用该代理后,它便会与 OS Config API 服务进行通信。如需查看该代理所完成的操作,请参阅查看虚拟机管理器审核日志。
如需查看代理的源代码,请参阅 GitHub 上的 osconfig。
Compute Engine Windows 驱动程序
为 Windows 映像维护以下 Compute Engine 驱动程序:
驱动程序类型 | 软件包名称 |
---|---|
以太网适配器 | google-compute-engine-driver-netkvm |
SCSI 磁盘 | google-compute-engine-driver-vioscsi |
显示适配器 | google-compute-engine-driver-gga |
崩溃处理程序 | google-compute-engine-driver-pvpanic |
Virtio 内存气球驱动程序 | google-compute-engine-driver-balloon |
Google 虚拟 NIC | google-compute-engine-driver-gvnic |
每个驱动程序均使用 GooGet 封装并发布到 Google Cloud 代码库。驱动程序的源代码位于 GitHub 上的 compute-windows-drivers。所有 Google Cloud Windows 映像都预先配置了 GooGet 工具和 Google Cloud 代码库。如需自行安装 GooGet 并设置代码库,请参阅封装和软件包分发。
如需安装或升级特定驱动程序,请运行以下命令:
googet install DRIVER_PACKAGE_NAME
后续步骤
如需了解安装客机环境的分步说明,请参阅安装客机环境。