訪客環境


當您使用 Google 提供的公開映像檔啟動虛擬機器 (VM) 執行個體時,系統會自動在該 VM 執行個體中安裝訪客環境。訪客環境是一組指令碼、Daemon 和二進位檔,這些資源會讀取中繼資料伺服器的內容,讓 VM 在 Compute Engine 上正常運作。中繼資料伺服器是可將資訊從用戶端傳送至訪客作業系統的通訊管道。

本文件概略說明訪客環境的元件、支援的作業系統,以及如何瞭解何時需要手動安裝或更新訪客環境。

手動安裝或更新訪客環境的時機

根據預設,使用 Google 提供的公開映像檔建立的 VM 執行個體已安裝訪客環境。

如要確認訪客環境是否在執行個體中運作,請參閱驗證訪客環境一節。

在某些情況下,系統安裝的訪客環境可能已經過時。如果執行個體中可用的訪客環境已經過時,請更新訪客環境

否則在下列情況中,您可能需要手動安裝訪客環境:

如果您需要手動安裝訪客環境,請參閱安裝訪客環境

受支援的作業系統

Compute Engine 上每個可用的受支援作業系統都需要特定的訪客環境套件。而這些套件都是由 Google 或作業系統的擁有者所建構的。如要瞭解誰會建構客體環境套件,請參閱「作業系統詳細資料」文件中的「與標準映像檔的顯著差異」部分。

Linux 訪客環境

無論 Linux 訪客環境是由 Google 或作業系統擁有者建立,所有建構作業中都會包含幾項重要元件。

Linux 訪客環境的基本元件會以 debrpm 套件的形式提供,這些套件是使用支援發行版本的適當設定建立。

以下清單概略說明封裝在 Linux 訪客環境中的主要指令碼、Daemon 和套件:

  • google-compute-engine 套件包含下列元件:

    • systemd 的系統初始化指令碼。
    • 系統設定,例如用於設定主機名稱的 udev 規則、sysctl 規則、rsyslog 設定和 dhcp 設定。
    • 在執行個體啟動期間執行的 Bash 指令碼。

    這個套件會依附 google-guest-agentgoogle-compute-engine-oslogin 套件。

    如要查看這個套件的原始碼,請參閱 GitHub 上的 guest-configs

  • google-guest-agent 套件包含訪客代理程式和中繼資料指令碼可執行檔,可在訪客作業系統上執行,以支援 Compute Engine 功能。Linux 訪客代理程式支援下列功能:

    Linux 訪客代理程式會與 Compute Engine 服務進行通訊,方式如下:

    Linux 訪客代理程式也會從訪客作業系統收集遙測資料,用於分析和偵錯。遙測資料包括:OS 名稱、OS 版本、OS 核心版本、OS 核心版本和 OS 代理程式版本。如要停用遙測資料收集功能,請在 VM 或專案層級設定以下中繼資料:disable-guest-telemetry=TRUE

    自 2024 年 12 月起,訪客代理程式會安裝名為 google-guest-agent-manager 的次要 systemd 單位。這個單元會管理隨選外掛程式的生命週期。

    如要查看這個套件的原始碼,請參閱 GitHub 上的 guest-agent

  • google-compute-engine-oslogin 套件包含 OS 登入的二進位檔、模組和指令碼。您可以使用 OS 登入,透過身分與存取權管理 (IAM) 角色管理 VM 執行個體的存取權。

    套裝方案包含下列項目:

    • 授權金鑰指令:將使用者的 OS 登入設定檔中的 SSH 金鑰提供給 sshd,以便在使用者登入時進行驗證。
    • Name Service Switch (NSS) 模組:可讓系統使用 OS 登入使用者和群組資訊。
    • 可插入式驗證模組 (PAM) 可提供授權 (如果啟用雙因素支援則可提供驗證),讓系統使用 Google Cloud IAM 權限,控管登入執行個體或以 root 身分 (透過 sudo) 執行作業的權限。
    • google_oslogin_nss_cache,這是用於更新本機使用者和群組快取的工具。
    • selinux 包含 SELinux 政策定義檔案和編譯的政策套件,可用於設定 SELinux 以支援 OS 登入。

    OS 登入元件會與 Compute Engine 服務進行通訊,如下所示:

    如要查看這個套件的原始碼,請參閱 GitHub 上的 guest-oslogin

  • gce-disk-expand 元件會與 Compute Engine 服務通訊,如下所示:

    • 將記錄傳送至序列埠

    如要查看這個套件的原始碼,請參閱 GitHub 上的 guest-diskexpand

  • google-osconfig-agent 套件包含 OS 設定代理程式,VM 管理員會使用這項代理程式管理 OS 庫存、修補程式和 OS 政策。

    指令碼與 Compute Engine 服務的通訊方式如下:

    • 讀取資料並寫入 VM 中繼資料
    • 根據預設,OS 設定代理程式必須啟用,才能收集或傳送任何資訊。啟用代理後,代理會與 OS Config API 服務通訊。如要查看代理程式完成的作業,請參閱「查看 VM 管理員稽核記錄」。

    如要查看這個代理程式的原始碼,請參閱 GitHub 上的 osconfig

Windows 訪客環境

以下清單概略說明 Windows 訪客環境中的套件:

  • google-compute-engine-windows 套件包含 Windows 訪客代理程式。Windows 訪客代理程式可支援下列程序:

    Windows 訪客代理程式會與 Compute Engine 服務進行通訊,如下所示: + 讀取 VM 中繼資料,並將資料寫入其中 + 將記錄檔傳送至 Windows 應用程式事件記錄、序列埠和 Cloud Logging

    Windows 訪客代理程式也會從客體作業系統收集遙測資料,用於分析和偵錯。遙測資料包括:OS 名稱、OS 版本、OS 核心版本、OS 核心版本和 OS 代理程式版本。如要停用遙測資料收集功能,請在 VM 或專案層級設定以下中繼資料:disable-guest-telemetry=TRUE

    自 2024 年 12 月起,訪客代理程式會安裝名為 GCEAgentManager 的次要系統服務。這項服務可管理隨選外掛程式的生命週期。

    如要查看此代理程式來源碼,請參閱 GitHub 上的 guest-agent

  • google-compute-engine-sysprep 套件包含用於將 Windows 執行個體設為一般執行個體的腳本,以便準備建立映像檔。這個套件也包含 instance_setup.ps1 指令碼,可在首次開機時用於設定新執行個體。

    指令碼與 Compute Engine 服務的通訊方式如下:

    • 讀取資料並寫入 VM 中繼資料
    • 將記錄傳送至 Windows 應用程式事件記錄檔和序列埠

    如要查看這個代理程式的原始碼,請參閱 GitHub 上的 compute-image-windows

  • google-compute-engine-metadata-scripts 套件包含用於執行 Compute Engine、sysprep-specialize、startupshutdown 指令碼的指令碼和二進位檔。

    指令碼與 Compute Engine 服務的通訊方式如下:

    • 讀取資料並寫入 VM 中繼資料
    • 使用 sysprep-specialize-script-urlwindows-startup-script-url 時,從 Cloud Storage 位置讀取
    • 將記錄檔傳送至 Windows 應用程式事件記錄檔、序列埠和 Cloud Logging

    如要查看這個代理程式的原始碼,請參閱 GitHub 上的 compute-image-windows

  • google-compute-engine-powershell 套件包含 PowerShell 模組。這個模組包含其他 Windows 訪客環境指令碼中 PowerShell 指令碼使用的常用函式。

    指令碼會與下列 Compute Engine 服務通訊:

    • 根據預設,PowerShell 模組中的記錄函式會將記錄資料傳送至 Windows 應用程式事件記錄檔和序列埠。

    如要查看這個代理程的原始碼,請參閱 GitHub 上的 compute-image-windows

  • google-compute-engine-auto-updater 套件包含用於每天更新 Compute Engine 套件的指令碼。這個套件不再預設安裝。

    指令碼與 Compute Engine 服務的通訊方式如下:

    • VM 中繼資料讀取資料
    • 呼叫 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 套件會安裝 Compute Engine VSS 代理程式和提供者,用於使用 Microsoft 的磁碟區陰影複製服務 (VSS) 擷取永久磁碟快照

    指令碼與 Compute Engine 服務的通訊方式如下:

    • 與 Google Cloud 快照服務通訊

    如要查看這個代理程式的原始碼,請參閱 GitHub 上的 compute-image-windows

  • google-osconfig-agent 套件包含 OS 設定代理程式,可供 VM 管理員用於管理 OS 庫存、修補程式和 OS 政策。

    指令碼與 Compute Engine 服務的通訊方式如下:

    • 讀取資料並寫入 VM 中繼資料
    • 根據預設,OS 設定代理程式必須啟用,才能收集或傳送任何資訊。啟用代理後,代理會與 OS Config API 服務通訊。如要查看代理程式完成的作業,請參閱「查看 VM 管理員稽核記錄」。

    如要查看這個代理程式的原始碼,請參閱 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 虛擬網路介面卡 google-compute-engine-driver-gvnic

每個驅動程式皆使用 GooGet 封裝並發布至 Google Cloud 存放區。驅動程式原始碼位於 GitHub 上的 compute-windows-drivers。所有 Google Cloud Windows 映像檔都有預先設定的 GooGet 工具和 Google Cloud存放區。如果您需要安裝 GooGet 並自行設定存放區,請參閱「封裝及套件發布」一節。

如要安裝或升級特定驅動程式,請執行下列指令:

googet install DRIVER_PACKAGE_NAME

後續步驟

如需安裝訪客環境的逐步操作說明,請參閱安裝訪客環境