检查点
Create a virtual machine with gcloud
/ 100
Cloud Shell 和 gcloud 入门
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 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 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:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
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 地址位于同一区域。
-
将区域设置为
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
示例命令。
后续步骤/了解详情
-
如需详细了解 Cloud Shell,请参阅 Cloud Shell 文档或 YouTube 视频“使用 Google Cloud Shell”。
-
如需详细了解
gcloud
,请参阅 gcloud 文档或 YouTube 视频“gcloud 帮助指南”。
完成以下实验,继续学习:
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 9 月 9 日
上次测试实验的时间:2024 年 9 月 9 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。