arrow_back

Cloud Shell 和 gcloud 入门

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud Shell 和 gcloud 入门

Lab 45 分钟 universal_currency_alt 1 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP002

Google Cloud 自定进度实验

概述

利用 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 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

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

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

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

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

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

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 “导航菜单”图标

激活 Cloud Shell

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

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

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

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

启动 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.startup_script.project_region | REGION}}}
  2. 如需查看项目区域设置,可运行以下命令:

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

    gcloud config set compute/zone {{{project_0.startup_script.project_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.startup_script.project_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.startup_script.project_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.startup_script.project_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 年 1 月 26 日

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

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