訪客環境


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

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

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

根據預設,使用 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 套件。

    自 2024 年 10 月起,google-compute-engine 套件包含 gce-resolved.conf 檔案。這個設定檔可確保 .local Cloud DNS 網域的網域查詢會路由至中繼資料伺服器。如果沒有這個檔案,網域查詢會透過 systemd-resolved 轉送,但這經常會失敗。

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

  • google-guest-agent 套件包含訪客代理程式和中繼資料指令碼可執行檔,這些檔案會在訪客 OS 上執行,以支援 Compute Engine 功能。Linux 客戶端代理程式支援下列功能:

    Linux 訪客代理程式與 Compute Engine 服務的通訊方式如下:

    Linux 客體代理程式也會從客體 OS 收集遙測資料,用於分析和偵錯。遙測資料包括: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,以便在登入時驗證使用者身分。
    • 名稱服務切換 (NSS) 模組,可支援向系統提供 OS 登入使用者和群組資訊。
    • 可外掛驗證模組 (PAM),提供授權 (如果啟用雙重驗證,也會提供驗證) 支援,讓系統使用 IAM 權限控管系統是否可以登入執行個體,或以根使用者身分執行作業 (使用 sudo)。 Google Cloud
    • 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 服務的通訊方式如下:

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

Windows 訪客環境

以下列出 Windows 訪客環境中的套件:

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

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

    Windows 客體代理程式也會從客體 OS 收集遙測資料,用於分析和偵錯。遙測資料包括: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 客戶環境指令碼中使用的常見函式。

    這些指令碼會與下列 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 bucket。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 服務的通訊方式如下:

    如要查看這個代理程式的原始碼,請前往 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

後續步驟

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