验证虚拟机管理器设置


使用本文档验证虚拟机管理器已正确设置。如需了解如何设置虚拟机管理器,请参阅设置虚拟机管理器

要验证设置,您可以使用问题排查命令或对虚拟机实例执行手动检查

准备工作

  • 对于 Windows 虚拟机,请使用 PowerShell 3.0 或更高版本
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

使用问题排查命令

使用 os-config troubleshoot 命令验证设置。如果其中任何检查失败,您都会获得有关如何解决问题的反馈。

gcloud compute os-config troubleshoot VM_NAME \
   --zone=ZONE

替换以下内容:

  • VM_NAME:要进行问题排查的虚拟机实例的名称
  • ZONE:实例所在的可用区

示例

  • 示例 1:显示虚拟机实例设置有问题时 os-config troubleshoot 命令的输出
  • 示例 2:显示虚拟机实例设置正确时 os-config troubleshoot 命令的输出

示例 1

如需对可用区 asia-east2-b 中名为 my-instance-1 的虚拟机实例进行问题排查,请运行以下命令:

gcloud compute os-config troubleshoot my-instance-1 \
    --zone=asia-east2-b

输出类似以下内容:

OS Config troubleshooter tool is checking if there are issues with the
VM Manager setup for this VM instance.

> Is the OS Config API enabled? Yes
> Is the OS Config agent enabled? Yes
> Is the OS Config agent up to date? No

The version of OS Config agent running on this VM instance is not the
latest version.
See https://cloud.google.com/compute/docs/manage-os/upgrade-vm-manager#update-agent
on how to update the agent.

示例 2

如需对可用区 us-west1-b 中名为 my-instance-2 的虚拟机实例进行问题排查,请运行以下命令:

gcloud compute os-config troubleshoot my-instance-2 \
    --zone=us-west1-b

输出类似以下内容:

OS Config troubleshooter tool is checking if there are issues with the
VM Manager setup for this VM instance.

> Is the OS Config API enabled? Yes
> Is the OS Config agent enabled? Yes
> Is the OS Config agent up to date? Yes
> Is a service account present on the instance? Yes
> Is the OS Config Service account present for this instance? Yes
> Does this instance have a public IP or Private Google Access? Yes
This instance has a public IP.

手动验证

如需手动验证虚拟机管理器已正确设置,请完成以下检查:

如果虚拟机管理器设置正确,但问题仍然存在,请参阅排查虚拟机管理器问题

检查 OS Config API 是否已启用

在 Google Cloud 项目中,检查该 API 是否已启用。

控制台

在 Google Cloud 控制台中,转到 OS Config API 页面。

转到 OS Config API

gcloud

gcloud services list --enabled

如果启用了 API,输出将如下所示:

osconfig.googleapis.com              OS Config API

如果未启用 API,请启用 OS Config API

检查元数据是否已启用

Linux

对于项目元数据,请在虚拟机上完成以下步骤:

  1. 查询项目特性端点:

    curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/" \
    -H "Metadata-Flavor: Google"
    

    如果设置了代理元数据值,输出将如下所示:

    enable-osconfig
    
  2. 如果显示 enable-osconfig 值,请查询端点:

    curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/enable-osconfig" \
    -H "Metadata-Flavor: Google"

    如果已启用,端点会返回 TRUE

如果元数据未启用,请启用 OS Config 元数据

Windows

对于项目元数据,请在虚拟机上以管理员身份打开 PowerShell 终端并运行以下命令:

  1. 查询项目特性端点:

    $value = (Invoke-RestMethod `
             -Headers @{'Metadata-Flavor' = 'Google'} `
             -Uri "http://metadata.google.internal/computeMetadata/v1/project/attributes/")
    $value
    

    如果设置了代理元数据值,输出将如下所示:

    enable-osconfig
    
  2. 如果显示 enable-osconfig 值,请查询端点:

    $value = (Invoke-RestMethod `
             -Headers @{'Metadata-Flavor' = 'Google'} `
             -Uri "http://metadata.google.internal/computeMetadata/v1/project/attributes/enable-osconfig")
    $value
    

    如果已启用,端点会返回 TRUE

如果元数据未启用,请启用 OS Config 元数据

检查 OS Config 代理是否已安装并运行

Linux

如需检查您的 Linux 虚拟机是否安装了该代理,请运行以下命令:

sudo systemctl status google-osconfig-agent

如果代理已安装且正在运行,则会输出如下内容:

google-osconfig-agent.service - Google OSConfig Agent
Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
Main PID: 369 (google_osconfig)
 Tasks: 8 (limit: 4374)
Memory: 102.7M
CGroup: /system.slice/google-osconfig-agent.service
        └─369 /usr/bin/google_osconfig_agent

如果尚未安装 OS Config 代理,请安装该代理。

Windows

如需检查您的 Windows 虚拟机是否安装了代理,请运行以下命令:

PowerShell Get-Service google_osconfig_agent

如果代理已安装且正在运行,则会输出如下内容:

Status   Name               DisplayName
------   ----               -----------
Running  google_osconfig... Google OSConfig Agent

如果尚未安装 OS Config 代理,请安装该代理。

检查服务账号是否已启用

如需了解服务账号要求,请参阅设置概览

Linux

在虚拟机上,运行以下命令:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" \
-H "Metadata-Flavor: Google"

输出应至少包含默认服务账号。

default/

Windows

在虚拟机上,以管理员身份打开 PowerShell 终端并运行以下命令:

$value = (Invoke-RestMethod `
         -Headers @{'Metadata-Flavor' = 'Google'} `
         -Uri "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/")
$value

输出应至少包含默认服务账号。

default/

检查虚拟机是否可以与 OS Config API 通信

如需检查虚拟机是否可以与 OS Config API 通信,请在 Linux 或 Windows 虚拟机上运行以下命令:

ping osconfig.googleapis.com

如需停止 ping OS Config API,请按 Control + C

如果您的虚拟机在专用 VPC 网络中运行,并且没有公共互联网访问权限,请检查是否已启用专用 Google 访问通道

启用专用 Google 访问通道后,检查虚拟机是否可以与 OS Config API 通信。

Linux

在虚拟机上,运行以下命令:

 curl --ssl 'https://osconfig.googleapis.com/$discovery/rest' | head

如果虚拟机可以与 OS Config API 通信,则命令输出类似于以下内容:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{
"discoveryVersion": "v1",
"baseUrl": "https://osconfig.googleapis.com/",
"ownerName": "Google",
"version": "v1beta",
"schemas": {
  "GooSettings": {
    "description": "Googet patching is performed by running `googet update`.",
    "properties": {},
    "id": "GooSettings",
100  9569    0  9569    0     0   198k      0 --:--:-- --:--:-- --:--:--  198k

Windows

在虚拟机上,以管理员身份打开 PowerShell 终端并运行以下命令:

 Invoke-RestMethod  -Headers @{'Metadata-Flavor' = 'Google'}
 -Uri 'https://osconfig.googleapis.com/$discovery/rest'

后续步骤