GSP002

概述
利用 Cloud Shell,您可以通过命令行访问托管在 Google Cloud 中的计算资源。Cloud Shell 是一款基于 Debian 的虚拟机,拥有 5 GB 的永久性主目录空间,可让您轻松管理 Google Cloud 项目和资源。Cloud Shell 中预装了 gcloud
命令行工具和您需要的其他实用程序,便于您快速上手。
在本实操实验中,您将学习如何利用 gcloud
工具,通过 Cloud Shell 连接到 Google Cloud 上托管的计算资源。
建议您自己手动输入命令,这有助于强化对核心概念的理解。很多实验都有一个代码块,其中包含所需的命令。在实验过程中,您可以轻松复制代码块中的命令并粘贴至合适位置。
您将执行的操作
- 练习使用
gcloud
命令。
- 连接 Google Cloud 上托管的计算服务。
前提条件
- 熟悉标准的 Linux 文本编辑器,例如
vim
、emacs
或 nano
。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
-
打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 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 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 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-a
、us-central1-b
、us-central1-c
和 us-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 的“区域和可用区”文档,详细了解区域和可用区,并查看完整列表。
-
将区域设置为
gcloud config set compute/region {{{project_0.default_region | REGION}}}
-
如需查看项目区域设置,可运行以下命令:
gcloud config get-value compute/region
-
将可用区设置为 :
gcloud config set compute/zone {{{project_0.default_zone | ZONE}}}
-
如需查看项目可用区设置,可运行以下命令:
gcloud config get-value compute/zone
查找项目信息
-
将您的项目 ID 复制到剪贴板或文本编辑器。项目 ID 列于以下 2 个地方:
- 位于 Cloud 控制台“信息中心”中的项目信息下方。(点击导航菜单 [
],接着点击 Cloud 概览 > 信息中心。)
- 位于实验标签页中您的用户名和密码旁边。
-
在 Cloud Shell 中,运行以下 gcloud
命令以查看您的项目 ID:
gcloud config get-value project
-
在 Cloud Shell 中,运行以下 gcloud
命令以查看项目详细信息:
gcloud compute project-info describe --project $(gcloud config get-value project)
在输出结果中,找到可用区和区域元数据值。稍后,您将在本实验中用到输出结果中的可用区 (google-compute-default-zone
)。
注意:
如果输出结果中没有 google-compute-default-region
和 google-compute-default-zone
键及其对应值,则表示未设置默认可用区或区域。
输出结果中包含有关您项目的其他有用信息。请花一些时间仔细地查看这些信息。
设置环境变量
环境变量用于定义环境;在编写包含 API 或可执行文件的脚本时,使用环境变量可以节省时间。
-
创建一个环境变量来存储您的项目 ID:
export PROJECT_ID=$(gcloud config get-value project)
-
创建一个环境变量来存储您的可用区:
export ZONE=$(gcloud config get-value compute/zone)
-
如需验证变量的设置是否正确,请运行以下命令:
echo -e "PROJECT ID: $PROJECT_ID\nZONE: $ZONE"
如果变量设置正确,echo 命令会输出您的项目 ID 和可用区。
使用 gcloud 工具创建虚拟机
使用 gcloud
工具新建虚拟机 (VM) 实例。
-
如需创建虚拟机,请运行以下命令:
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 type
和 image
),系统会将它们设为默认值。
验证您已完成的任务
点击检查我的进度可验证您已完成的任务。如果您使用 gcloud
工具成功创建了虚拟机,系统会显示一个评估分数。
使用 gcloud 创建虚拟机
- 如需打开
create
命令的帮助内容,请运行以下命令:
gcloud compute instances create --help
注意:按 Enter 键或空格键可滚动浏览帮助内容。如需退出帮助内容,请输入 Q。
探索 gcloud 命令
gcloud
工具提供了简洁的使用指南,只需在任意 gcloud
命令的末尾添加 -h
标志(用于获取帮助说明)即可显示这些使用指南。
-
运行以下命令:
gcloud -h
您可以在命令后添加 --help
标志或运行 gcloud help
命令,以获得更多详细的帮助内容。
-
运行以下命令:
gcloud config --help
如需退出,请输入 Q
并按 Enter 键。
-
运行以下命令:
gcloud help config
gcloud config --help
和 gcloud help config
命令是等效的。这两个命令都会返回较长的详细帮助内容。
gcloud
中的全局标志可控制每次调用命令时的行为。这些标志会覆盖 SDK 属性中设置的值。
-
查看您环境中各项配置的列表:
gcloud config list
-
如需查看所有属性及其设置,请运行以下命令:
gcloud config list --all
-
列出组件:
gcloud components list
运行此命令可显示哪些 gcloud
组件已准备就绪,可供您在此实验中使用。
任务 2. 过滤命令行输出结果
gcloud
命令行界面 (CLI) 是可在命令行中使用的强大工具。
如果您希望显示特定信息,可参照下面的方法。
-
列出项目中可用的计算实例:
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
-
列出 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
仅显示符合条件的信息,即符合条件的虚拟机实例名称。
-
列出项目中的防火墙规则:
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
-
列出默认网络的防火墙规则:
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
-
列出允许规则与 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 地址。
-
如需使用 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)
-
如要继续,请输入 Y。
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase)
-
如要将口令留空,请按 Enter 键两次。
注意:
您已连接到在本实验前面步骤中创建的虚拟机。您是否注意到命令提示符发生了哪些变化?
命令提示符目前显示的内容类似于 sa_107021519685252337470@gcelab2。
-
@ 前面引用的内容代表正在使用的账号。
-
@ 符号后面的部分代表正在访问的宿主机。
-
将 nginx
Web 服务器安装到虚拟机:
sudo apt install -y nginx
-
您在此处无需执行任何操作。如需断开与 SSH 的连接并退出远程 shell,请运行以下命令:
exit
您应该会返回到项目的命令提示符位置。
任务 4. 更新防火墙
在使用虚拟机等计算资源时,了解相关防火墙规则至关重要。
-
列出项目的防火墙规则:
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
所在的网络。
-
尝试访问 gcelab2
虚拟机上运行的 nginx 服务。
注意:与虚拟机进行通信将失败,因为该虚拟机没有适当的防火墙规则。
nginx Web 服务器预期会通过 tcp:80 端口进行通信。
为确保通信正常,您需要:
- 向 gcelab2 虚拟机添加标记
- 为 http 网络流量添加防火墙规则
-
为虚拟机添加标记:
gcloud compute instances add-tags gcelab2 --tags http-server,https-server
-
更新防火墙允许规则:
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
-
列出项目的防火墙规则:
gcloud compute firewall-rules list --filter=ALLOW:'80'
输出结果:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
default-allow-http default INGRESS 1000 tcp:80 False
-
验证可以通过 http 与虚拟机进行通信:
curl http://$(gcloud compute instances list --filter=name:gcelab2 --format='value(EXTERNAL_IP)')
您将看到默认的 nginx
输出结果。
任务 5. 查看系统日志
查看日志对于了解项目的运行情况至关重要。
您可以使用 gcloud
访问 Google Cloud 提供的各种日志。
-
查看系统中可用的日志:
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
-
查看与计算资源相关的日志:
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
-
读取与 gce_instance
资源类型相关的日志:
gcloud logging read "resource.type=gce_instance" --limit 5
-
读取特定虚拟机的日志:
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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。