arrow_back

Cloud Shell 和 gcloud 入门

登录 加入
访问 700 多个实验和课程

Cloud Shell 和 gcloud 入门

实验 45 分钟 universal_currency_alt 1 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP002

概述

利用 Cloud Shell,您可以通过命令行访问托管在 Google Cloud 中的计算资源。Cloud Shell 是一款基于 Debian 的虚拟机,拥有 5 GB 的永久性主目录空间,可让您轻松管理 Google Cloud 项目和资源。Cloud Shell 中预装了 gcloud 命令行工具和您需要的其他实用程序,便于您快速上手。

在本实操实验中,您将学习如何利用 gcloud 工具,通过 Cloud Shell 连接到 Google Cloud 上托管的计算资源。

建议您自己手动输入命令,这有助于强化对核心概念的理解。很多实验都有一个代码块,其中包含所需的命令。在实验过程中,您可以轻松复制代码块中的命令并粘贴至合适位置。

您将执行的操作

  • 练习使用 gcloud 命令。
  • 连接 Google Cloud 上托管的计算服务。

前提条件

  • 熟悉标准的 Linux 文本编辑器,例如 vimemacsnano

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

启动 Cloud Shell 后,您可以使用命令行调用 Cloud SDK gcloud 工具或该虚拟机实例提供的其他工具。在本实验的后面部分,您将使用自己的 $HOME 目录。该目录用于在永久性磁盘存储空间中存储各个项目的文件,以及在 Cloud Shell 会话切换时保存文件。$HOME 是您的专用目录,其他用户无权访问。

任务 1. 配置您的环境

在本部分中,您将了解可对开发环境的哪些方面进行调整。

了解区域和可用区

某些 Google Compute Engine 资源位于区域或可用区内。区域是指某个地理位置,您可以在其中运行自己的资源。每个区域包含一个或多个可用区。例如,us-central1 区域表示美国中部的一个区域,该区域包含的可用区有 us-central1-aus-central1-bus-central1-cus-central1-f。下表显示了各个可用区及其所属的区域:

美国西部 美国中部 美国东部 西欧 东亚
us-west1-a us-central1-a us-east1-b europe-west1-b asia-east1-a
us-west1-b us-central1-b us-east1-c europe-west1-c asia-east1-b
- us-central1-c us-east1-d europe-west1-d aisia-east1-c
- us-central1-f - - -

可用区内的资源称为可用区级资源。 虚拟机实例和永久性磁盘都是可用区级资源。 如果您想将一个永久性磁盘挂接至某个虚拟机实例,这两个资源必须位于同一可用区内。 与之类似,如果您想为一个实例分配静态 IP 地址,那么该实例必须与相应静态 IP 地址位于同一区域。

注意: 请参阅 Google Cloud Compute Engine 的“区域和可用区”文档,详细了解区域和可用区,并查看完整列表。
  1. 将区域设置为

    gcloud config set compute/region {{{project_0.default_region | REGION}}}
  2. 如需查看项目区域设置,可运行以下命令:

    gcloud config get-value compute/region
  3. 将可用区设置为

    gcloud config set compute/zone {{{project_0.default_zone | ZONE}}}
  4. 如需查看项目可用区设置,可运行以下命令:

    gcloud config get-value compute/zone

查找项目信息

  1. 将您的项目 ID 复制到剪贴板或文本编辑器。项目 ID 列于以下 2 个地方:

    • 位于 Cloud 控制台“信息中心”中的项目信息下方。(点击导航菜单 [],接着点击 Cloud 概览 > 信息中心。)
    • 位于实验标签页中您的用户名和密码旁边。
  2. 在 Cloud Shell 中,运行以下 gcloud 命令以查看您的项目 ID:

    gcloud config get-value project
  3. 在 Cloud Shell 中,运行以下 gcloud 命令以查看项目详细信息:

    gcloud compute project-info describe --project $(gcloud config get-value project)

    在输出结果中,找到可用区和区域元数据值。稍后,您将在本实验中用到输出结果中的可用区 (google-compute-default-zone)。

    注意: 如果输出结果中没有 google-compute-default-regiongoogle-compute-default-zone 键及其对应值,则表示未设置默认可用区或区域。 输出结果中包含有关您项目的其他有用信息。请花一些时间仔细地查看这些信息。

设置环境变量

环境变量用于定义环境;在编写包含 API 或可执行文件的脚本时,使用环境变量可以节省时间。

  1. 创建一个环境变量来存储您的项目 ID:

    export PROJECT_ID=$(gcloud config get-value project)
  2. 创建一个环境变量来存储您的可用区:

    export ZONE=$(gcloud config get-value compute/zone)
  3. 如需验证变量的设置是否正确,请运行以下命令:

    echo -e "PROJECT ID: $PROJECT_ID\nZONE: $ZONE"

    如果变量设置正确,echo 命令会输出您的项目 ID 和可用区。

使用 gcloud 工具创建虚拟机

使用 gcloud 工具新建虚拟机 (VM) 实例。

  1. 如需创建虚拟机,请运行以下命令:

    gcloud compute instances create gcelab2 --machine-type e2-medium --zone $ZONE

    输出结果

    Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-04-326fae68bc3d/zones/us-east1-c/instances/gcelab2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gcelab2 {{{project_0.default_zone | ZONE}}} e2-medium 10.128.0.2 34.67.152.90 RUNNING

    命令详细说明

    • gcloud compute 用于管理 Compute Engine 资源,比 Compute Engine API 更简单易用。
    • instances create 用于创建新实例。
    • gcelab2 为虚拟机的名称。
    • --machine-type 标志用于将机器类型指定为 e2-medium
    • --zone 标志用于指定虚拟机的创建位置。
    • 如果您省略 --zone 标志,gcloud 工具可根据您的默认属性推断出您想要的可用区。如果您未在 create 命令中指定其他必需的实例设置(例如 machine typeimage),系统会将它们设为默认值。

    验证您已完成的任务

    点击检查我的进度可验证您已完成的任务。如果您使用 gcloud 工具成功创建了虚拟机,系统会显示一个评估分数。

    使用 gcloud 创建虚拟机
    • 如需打开 create 命令的帮助内容,请运行以下命令:
    gcloud compute instances create --help 注意:按 Enter 键或空格键可滚动浏览帮助内容。如需退出帮助内容,请输入 Q

探索 gcloud 命令

gcloud 工具提供了简洁的使用指南,只需在任意 gcloud 命令的末尾添加 -h 标志(用于获取帮助说明)即可显示这些使用指南。

  1. 运行以下命令:

    gcloud -h

您可以在命令后添加 --help 标志或运行 gcloud help 命令,以获得更多详细的帮助内容。

  1. 运行以下命令:

    gcloud config --help

    如需退出,请输入 Q 并按 Enter 键。

  2. 运行以下命令:

    gcloud help config

    gcloud config --helpgcloud help config 命令是等效的。这两个命令都会返回较长的详细帮助内容。

    gcloud 中的全局标志可控制每次调用命令时的行为。这些标志会覆盖 SDK 属性中设置的值。

  3. 查看您环境中各项配置的列表:

    gcloud config list
  4. 如需查看所有属性及其设置,请运行以下命令:

    gcloud config list --all
  5. 列出组件:

    gcloud components list

    运行此命令可显示哪些 gcloud 组件已准备就绪,可供您在此实验中使用。

任务 2. 过滤命令行输出结果

gcloud 命令行界面 (CLI) 是可在命令行中使用的强大工具。 如果您希望显示特定信息,可参照下面的方法。

  1. 列出项目中可用的计算实例:

    gcloud compute instances list 注意:在一个项目中部署多个资源是非常常见的情况。 幸运的是,gcloud 提供了一些巧妙的格式,可以帮助找出特定资源。

    输出示例

    NAME: gcelab2 ZONE: {{{project_0.default_zone | ZONE}}} MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.142.0.2 EXTERNAL_IP: 35.237.43.111 STATUS: RUNNING
  2. 列出 gcelab2 虚拟机:

    gcloud compute instances list --filter="name=('gcelab2')"

    输出示例

    NAME: gcelab2 ZONE: {{{project_0.default_zone | ZONE}}} MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.142.0.2 EXTERNAL_IP: 35.237.43.111 STATUS: RUNNING

在上述命令中,您要求 gcloud 仅显示符合条件的信息,即符合条件的虚拟机实例名称。

  1. 列出项目中的防火墙规则:

    gcloud compute firewall-rules list

    输出结果

    NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False default-allow-rdp default INGRESS 65534 tcp:3389 False default-allow-ssh default INGRESS 65534 tcp:22 False dev-net-allow-ssh dev-network INGRESS 1000 tcp:22 False serverless-to-vpc-connector dev-network INGRESS 1000 icmp,udp:665-666,tcp:667 False vpc-connector-egress dev-network INGRESS 1000 icmp,udp,tcp False vpc-connector-health-check dev-network INGRESS 1000 tcp:667 False vpc-connector-to-serverless dev-network EGRESS 1000 icmp,udp:665-666,tcp:667 False
  2. 列出默认网络的防火墙规则:

    gcloud compute firewall-rules list --filter="network='default'"

    输出结果

    NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False default-allow-rdp default INGRESS 65534 tcp:3389 False default-allow-ssh default INGRESS 65534 tcp:22 False
  3. 列出允许规则与 ICMP 规则匹配的默认网络的防火墙规则:

    gcloud compute firewall-rules list --filter="NETWORK:'default' AND ALLOW:'icmp'"

    输出结果

    NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False

任务 3. 连接到虚拟机实例

使用 gcloud compute 可以轻松连接到您的实例。 gcloud compute ssh 命令提供一个封装了 SSH 的容器,该容器负责处理身份验证以及将实例名称映射到 IP 地址。

  1. 如需使用 SSH 连接到您的虚拟机,请运行以下命令:

    gcloud compute ssh gcelab2 --zone $ZONE

    输出结果

    WARNING: The public SSH key file for gcloud does not exist. WARNING: The private SSH key file for gcloud does not exist. WARNING: You do not have an SSH key for gcloud. WARNING: [/usr/bin/ssh-keygen] will be executed to generate a key. This tool needs to create the directory [/home/gcpstaging306_student/.ssh] before being able to generate SSH Keys. Do you want to continue? (Y/n)
  2. 如要继续,请输入 Y

    Generating public/private rsa key pair. Enter passphrase (empty for no passphrase)
  3. 如要将口令留空,请按 Enter 键两次。

    注意: 您已连接到在本实验前面步骤中创建的虚拟机。您是否注意到命令提示符发生了哪些变化?

    命令提示符目前显示的内容类似于 sa_107021519685252337470@gcelab2

    • @ 前面引用的内容代表正在使用的账号。
    • @ 符号后面的部分代表正在访问的宿主机。
  4. nginx Web 服务器安装到虚拟机:

    sudo apt install -y nginx
  5. 您在此处无需执行任何操作。如需断开与 SSH 的连接并退出远程 shell,请运行以下命令:

    exit

    您应该会返回到项目的命令提示符位置。

任务 4. 更新防火墙

在使用虚拟机等计算资源时,了解相关防火墙规则至关重要。

  1. 列出项目的防火墙规则:

    gcloud compute firewall-rules list

    输出结果

    NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False default-allow-rdp default INGRESS 65534 tcp:3389 False default-allow-ssh default INGRESS 65534 tcp:22 False dev-net-allow-ssh dev-network INGRESS 1000 tcp:22 False serverless-to-vpc-connector dev-network INGRESS 1000 icmp,udp:665-666,tcp:667 False vpc-connector-egress dev-network INGRESS 1000 icmp,udp,tcp False vpc-connector-health-check dev-network INGRESS 1000 tcp:667 False vpc-connector-to-serverless dev-network EGRESS 1000 icmp,udp:665-666,tcp:667 False

    从上方结果中可以看到,有两个可用的网络。default 网络是虚拟机 gcelab2 所在的网络。

  2. 尝试访问 gcelab2 虚拟机上运行的 nginx 服务。

    注意:与虚拟机进行通信将失败,因为该虚拟机没有适当的防火墙规则。 nginx Web 服务器预期会通过 tcp:80 端口进行通信。 为确保通信正常,您需要:

    • 向 gcelab2 虚拟机添加标记
    • 为 http 网络流量添加防火墙规则
  3. 为虚拟机添加标记:

    gcloud compute instances add-tags gcelab2 --tags http-server,https-server
  4. 更新防火墙允许规则:

    gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
  5. 列出项目的防火墙规则:

    gcloud compute firewall-rules list --filter=ALLOW:'80'

    输出结果

    NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-http default INGRESS 1000 tcp:80 False
  6. 验证可以通过 http 与虚拟机进行通信:

    curl http://$(gcloud compute instances list --filter=name:gcelab2 --format='value(EXTERNAL_IP)')

您将看到默认的 nginx 输出结果。

任务 5. 查看系统日志

查看日志对于了解项目的运行情况至关重要。 您可以使用 gcloud 访问 Google Cloud 提供的各种日志。

  1. 查看系统中可用的日志:

    gcloud logging logs list

    输出结果

    NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/GCEGuestAgent NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/OSConfigAgent NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/autoscaler.googleapis.com%2Fstatus_change NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Factivity NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Fdata_access NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Fsystem_event NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fautoscaler NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Finstance_group_manager_events NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fshielded_vm_integrity NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/run.googleapis.com%2Fstderr NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/run.googleapis.com%2Fstdout
  2. 查看与计算资源相关的日志:

    gcloud logging logs list --filter="compute"

    输出结果

    NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fautoscaler NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Finstance_group_manager_events NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fshielded_vm_integrity
  3. 读取与 gce_instance 资源类型相关的日志:

    gcloud logging read "resource.type=gce_instance" --limit 5
  4. 读取特定虚拟机的日志:

    gcloud logging read "resource.type=gce_instance AND labels.instance_name='gcelab2'" --limit 5

任务 6. 检验您的掌握情况

下列选择题有助于强化您对本实验所涉概念的理解。

恭喜!

您已学会如何启动 Cloud Shell 并运行部分 gcloud 示例命令。

后续步骤/了解详情

完成以下实验,继续学习:

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 9 月 9 日

上次测试实验的时间:2024 年 9 月 9 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。