检查点
Create a virtual machine with gcloud
/ 100
開始使用 Cloud Shell 和 gcloud
GSP002
總覽
在 Cloud Shell 中,您可以透過指令列存取託管於 Google Cloud 的運算資源。Cloud Shell 是一種以 Debian 為基礎的虛擬機器,主目錄配備 5 GB 的永久磁碟儲存空間,方便您管理 Google Cloud 專案和資源。這個虛擬機器已預先安裝 gcloud
指令列工具和其他公用程式,可讓您快速開始執行作業。
在這個實作研究室中,您將學習下列內容:在 Cloud Shell 中,透過 gcloud
工具連線至託管於 Google Cloud 的運算資源。
我們建議您自行輸入指令,這麼做有助於強化核心概念。許多研究室都附有程式碼區塊,當中列出必要的指令。您可以複製這些指令,並貼到合適的地方。
學習內容
- 練習使用
gcloud
指令。 - 連線至託管於 Google Cloud 的運算資源。
事前準備
- 瞭解如何使用標準的 Linux 文字編輯器 (例如
vim
、emacs
或nano
)。
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
如何開始研究室及登入 Google Cloud 控制台
-
按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的暫時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,然後選取「在無痕式視窗中開啟連結」。
接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。 -
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}} 您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}} 您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。 -
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
- 點按 Google Cloud 控制台上方的「啟用 Cloud Shell」圖示 。
連線完成即代表已通過驗證,且專案已設為您的 PROJECT_ID。輸出內容中有一行宣告本工作階段 PROJECT_ID 的文字:
gcloud
是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
-
點按「授權」。
-
輸出畫面應如下所示:
輸出內容:
- (選用) 您可以使用下列指令來列出專案 ID:
輸出內容:
輸出內容範例:
gcloud
的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。
啟用 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-west1c | asia-east1-b |
- | us-central1-c | us-east1-d | europe-west1-d | aisia-east1-c |
- | us-central1-f | - | - | - |
可用區中的資源稱為「可用區資源」,像是虛擬機器執行個體和永久磁碟,這類資源都位於可用區。如果您想將永久磁碟連接至虛擬機器執行個體,這兩項資源須位於相同的可用區。同樣地,如果您要將靜態 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:
- 在 Cloud 控制台中,依序點選「導覽選單」圖示 >「Cloud 總覽」>「資訊主頁」,專案 ID 就在「專案資訊」的下方。
- 在研究室分頁中,使用者名稱和密碼的附近。
-
您也可以在 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) 執行個體。
-
如要建立 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
代表 VM 的名稱。 -
--machine-type
旗標會指定「e2-medium」機型。 -
--zone
旗標會指定要在哪個可用區建立 VM。 - 如果您省略
--zone
旗標,gcloud
工具會根據預設屬性推斷適用的可用區。在create
指令中,如果您未另外指定值,其他必要的執行個體設定 (例如machine type
和image
) 都會設為預設值。
測試已完成的工作
點選「Check my progress」,確認工作已完成。如果成功透過
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
僅顯示符合下列條件的資訊:名稱為 gcelab2 的虛擬個體。
-
列出專案中的防火牆規則:
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:連線至 VM 執行個體
gcloud compute
可用來連線至執行個體。gcloud compute ssh
指令提供 SSH 包裝函式,可處理驗證程序,並將執行個體名稱對應至 IP 位址。
-
如要透過 SSH 連線至 VM,請執行下列指令:
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
網路伺服器:sudo apt install -y nginx -
在這個步驟中,您不必執行任何操作。請執行下列指令,中斷 SSH 連線並結束遠端殼層:
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 網路伺服器預期會透過 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 影片:Using Google Cloud Shell (使用 Google Cloud Shell)。
-
如要進一步瞭解
gcloud
,請參考 gcloud 說明文件或 YouTube 影片《Getting Help with gcloud》(透過 gcloud 取得說明)。
歡迎完成下列研究室,繼續學習之路:
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2023 年 9 月 9 日
實驗室上次測試日期:2023 年 9 月 9 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。