什麼時候才該用 VM?
Compute Engine 提供的是虛擬機(VM)。作業系統、套件、行程和網路設定都由你掌控,彈性很高,維護責任也會跟著變多。
下面幾種情況很適合 VM:
- 舊系統搬上雲,短期內不方便改成容器
- 需要安裝特殊的作業系統套件或驅動
- 軟體授權綁定 VM 或特定硬體規格
- 需要長時間執行、而且要完整控制主機
如果只是部署一個無狀態 Web API,而且不想管作業系統更新,Cloud Run 通常更省事。先確認你真的需要主機控制權,再選 Compute Engine。
先講清楚:這個 lab 可能產生費用
Google Cloud Free Tier 每月提供一台 e2-micro 的等值執行時數,但只適用於 us-west1、us-central1、us-east1 三個美國 Region,且必須是非 Spot VM。額度還包含每月 30 GB-month 的 Standard Persistent Disk。
所以這一課使用:
- Zone:
us-central1-a - Machine type:
e2-micro - Boot disk:10 GB
pd-standard
這組設定符合目前的 Free Tier 範圍,但 Free Tier 是用量額度,不是「這台 VM 永遠免費」。同一個 Billing account 下的合格用量會合併計算,超量、加 GPU 或產生額外網路流量仍可能收費。動手前先看一次官方 Free Tier 條件,做完就刪掉最保險。
若你改用台灣 asia-east1-b,延遲會比較低,但不在 Compute Engine Free Tier 的三個 Region 裡。
建立 ace-lab-vm
打開 Cloud Shell,先確認專案:
gcloud config get-value project
看到的不是上一課建立的 Project ID,就先切換:
gcloud config set project PROJECT_ID
再確認 Billing 已啟用:
gcloud billing projects describe $(gcloud config get-value project) \
--format='value(billingEnabled)'
輸出必須是 True。若是 False,先回到 Console 的「帳單 → 我的專案」完成連結,不要繼續建立 VM。
啟用 Compute Engine API,並替後續指令設定預設 Zone:
gcloud services enable compute.googleapis.com
gcloud config set compute/zone us-central1-a
第一次啟用 API 可能要等一兩分鐘。接著建立 VM:
gcloud compute instances create ace-lab-vm \
--machine-type=e2-micro \
--image-family=debian-12 \
--image-project=debian-cloud \
--boot-disk-type=pd-standard \
--boot-disk-size=10GB \
--labels=purpose=ace-lab
這條指令做了幾個決定:
- 用 Debian 12 image 建立開機磁碟
- 把 VM 放在
us-central1-a - 使用成本較低的 shared-core
e2-micro - 建立 10 GB Standard Persistent Disk
- 若專案保留預設 VPC,VM 會接到
defaultnetwork,並取得臨時外部 IPv4
企業組織常會刪除 default network,或用 Organization Policy 禁止外部 IP。若你在公司專案執行,最後一步可能失敗;那不是指令打錯,而是需要指定已核准的 subnet,或改走沒有外部 IP 的連線方式。
確認 VM 真的跑起來
gcloud compute instances list \
--filter='name=ace-lab-vm' \
--format='table(name,zone.basename(),machineType.basename(),status,networkInterfaces[0].accessConfigs[0].natIP)'
STATUS 應該是 RUNNING。接著用 SSH 登入:
gcloud compute ssh ace-lab-vm
第一次連線時,gcloud 會建立 SSH 金鑰並詢問是否繼續。進入 VM 後跑幾個檢查:
hostname
nproc
free -h
df -h /
輸入 exit 回到 Cloud Shell。
這個 lab 為了降低步驟,使用外部 IP 連線。正式環境通常會移除 VM 的外部 IP,再設定 IAP TCP forwarding 與 OS Login。IAP 會先驗證 IAM 身分,再把 SSH 流量送進 VM,不必把 TCP 22 對整個 Internet 開放;不過它仍需要正確的 IAM role 和允許 IAP IP 範圍的 firewall rule,不是加一個 --tunnel-through-iap 就會自動完成所有設定。
機器類型怎麼選?
別從型號背起。先看監控資料,再回答「CPU、記憶體、GPU,哪一個才是瓶頸」。
| 工作負載 | 先看的 family | 判斷方式 |
|---|---|---|
| 小型服務、一般應用 | General-purpose,例如 E2、N 系列 | CPU 和記憶體需求都沒有特別偏高 |
| 編譯、遊戲伺服器、科學計算 | Compute-optimized,例如 C 系列 | CPU 長時間滿載 |
| 大型記憶體資料庫、SAP HANA | Memory-optimized,例如 M、X 系列 | 工作集放不進記憶體就會明顯變慢 |
| AI 訓練、推論、圖形運算 | Accelerator-optimized,例如 A、G 系列 | 需要特定 GPU 型號與顯存 |
e2-micro 是 shared-core VM,可以短時間 burst,但不適合持續吃滿 CPU 的服務。正式系統別因為它便宜就直接沿用;先用 Cloud Monitoring 看利用率,再調整規格。
機器系列更新很快,考試也比較常給「工作負載需求」而不是要求你背完所有新型號。需要精確比較時,直接查官方 machine families 指南。
Spot VM 便宜,但不是一般 VM 的折價券
Spot VM 使用 Google Cloud 的剩餘容量,許多機型最高可比隨用隨付價格省 91%。代價是 Compute Engine 隨時可能收回,而且沒有 SLA,也不適用 Compute Engine Free Tier。
適合 Spot VM 的工作有批次轉檔、可重試的資料處理、分散式訓練;單台不能中斷的資料庫或網站主機就不適合。真正的判斷題是「工作能不能從中斷點重來」,不是「想不想省錢」。
磁碟不是都一樣
| 類型 | 適合情境 | 要注意什麼 |
|---|---|---|
| Standard Persistent Disk | 成本敏感、循序讀寫、lab | HDD,隨機 I/O 較弱 |
| Balanced Persistent Disk | 多數一般 VM | SSD,在價格與效能之間取平衡 |
| SSD Persistent Disk | 低延遲、較高 IOPS | 成本高於 Balanced |
| Hyperdisk | 需要明確配置 IOPS 或吞吐量 | 支援情況依機型與區域而異 |
| Local SSD | 快取、scratch data | 資料可能隨 VM 停止或主機故障遺失 |
Persistent Disk 和 Hyperdisk 是獨立計費的持久儲存;停止 VM 不代表磁碟免費。Local SSD 則是接在實體主機上的暫存空間,重要資料不要只放在那裡。
Stop 和 Delete 差在哪裡?
停止 VM:
gcloud compute instances stop ace-lab-vm
VM 停止後不再收取 vCPU 和記憶體的執行費,但磁碟、保留的靜態 IP 等資源仍可能繼續計費。之後可以再啟動:
gcloud compute instances start ace-lab-vm
這堂課做完後不需要保留 VM,直接刪除,並明確要求一起刪掉掛載磁碟:
gcloud compute instances delete ace-lab-vm --delete-disks=all
最後確認清乾淨:
gcloud compute instances list --filter='name=ace-lab-vm'
gcloud compute disks list --filter='name=ace-lab-vm'
兩個查詢都不該再列出 ace-lab-vm。
💡 考試小提示
TERMINATED只代表 VM 沒在跑,不代表帳單歸零。題目若要求「不再產生費用」,要繼續檢查 Persistent Disk、snapshot、static IP 和其他附屬資源。
離開這一課前,確認你做得到
- 說出什麼情況該選 Compute Engine,而不是 Cloud Run
- 建立、列出、SSH 連線、停止和刪除 VM
- 解釋 Free Tier 為什麼不等於零帳單保證
- 根據瓶頸挑 machine family,而不是只背型號
- 說明停止 VM 後,哪些資源仍可能計費
下一課會拆解 VM 背後的 VPC、subnet、route 和 firewall rule。剛才那台 VM 為什麼拿得到 IP、SSH 流量怎麼進去,到時會一項一項接起來。